喫茶XRAYトップページ

[▲前のスレッド]

[6135] TShellListViewで更新日時に秒を追加するには?返信 削除
2012/7/2 (月) 23:06:07 Sara
みなさん、こんばんわ。

ShellCtrlsを変更してTShellListViewの更新日時に秒を追加したいです。

で、以下のようにすると、秒まで表示はされるのですが・・・

もっと、よい方法があったりしないかという確認だったりします。(^^;

FileAgeなんか使わなくたって、ここに入ってるよ的なのがあると
動作速度的に助かります(^^;(まぁこれでも遅くはないんですが・・・)

いかがなものでしょうm(_ _)m

function TCustomShellListView.OwnerDataFetch(Item: TListItem;
  Request: TItemRequest): Boolean;
var
  AFolder: TShellFolder;
  J: integer;
  Dt : TDateTime;//追加
begin
  Result := True;
  AFolder := Folders[Item.Index];
  if not Assigned(AFolder) then exit;

  if (Item.Index > FFolders.Count - 1) or (Item.Index < 0) then Exit;
  if irText in Request then
    Item.Caption := AFolder.DisplayName;
  if irImage in Request then
    Item.ImageIndex := AFolder.ImageIndex(ViewStyle = vsIcon);

  if ViewStyle <> vsReport then Exit;

  AFolder.LoadColumnDetails(FRootFolder, Self.Handle, Columns.Count);

//  for J := 1 to Columns.Count - 1 do
//     Item.SubItems.Add(AFolder.Details[J])
//以下に変更
  for J := 1 to Columns.Count - 1 do begin
    if j <> 3 then Item.SubItems.Add(AFolder.Details[J])
    else begin
       FileAge(AFolder.PathName,Dt);
       Item.SubItems.Add(FormatDateTime('yyyy/mm/dd hh:nn:ss',Dt));
    end;
  end;
end;

[6136] Re:TShellListViewで更新日時に秒を追加するには?返信 削除
2012/7/3 (火) 08:21:46 Mr.XRAY
▼ Saraさん,どうもです.

>もっと、よい方法があったりしないかという確認だったりします。(^^;

Saraさんのやる事に口出しはしません!

「愛と死をみつめて」のみち子さんも,
1963年3月7日の手紙で,
《今度マコから御手紙いただいたら、手紙だけで100通目かしら。この手紙
をどう処理するか、それはマコにまかせます。マコのすることに絶対口出
しはしないつもりです。》

と書いているぐらいですから
えっ!? 関係ない.そうかもしれないなぁ.(^^;

[6137] Re2:TShellListViewで更新日時に秒を追加するには?返信 削除
2012/7/3 (火) 09:30:41 Sara
▼ Mr.XRAYさん
> >もっと、よい方法があったりしないかという確認だったりします。(^^;
>
> Saraさんのやる事に口出しはしません!

えぇー そんなぁ〜〜(T^T)


> 「愛と死をみつめて」のみち子さんも,
> 1963年3月7日の手紙で,
> 《今度マコから御手紙いただいたら、手紙だけで100通目かしら。この手紙
> をどう処理するか、それはマコにまかせます。マコのすることに絶対口出
> しはしないつもりです。》
>
> と書いているぐらいですから
> えっ!? 関係ない.そうかもしれないなぁ.(^^;

かもぢゃなくて、関係ないのでわ・・・(^^;

[6140] Re3:TShellListViewで更新日時に秒を追加するには?返信 削除
2012/7/3 (火) 17:10:15 Mr.XRAY
▼ Saraさん

> かもぢゃなくて、関係ないのでわ・・・(^^;

ワハハッ.
で,FileAgeから取得する以外,う〜ん,何かありましたっけ.
もちろん,ファイルの他の情報も同時というのであれば,
SH... なんとかで取得できますけど,今回の場合,日付だけですからね.

ヤバイ! ここ数日,SH... とか,でてこなくなってしまっている...
SHFileInfo? だっけ?

ちなみに,全く関係ないけど,私の携帯の待ちうけ画面は,
大島みち子さんの美しい顔写真です(モノクロ).

[6142] Re4:TShellListViewで更新日時に秒を追加するには?返信 削除
2012/7/3 (火) 23:19:07 Sara
▼ Mr.XRAYさん

> ワハハッ.
> で,FileAgeから取得する以外,う〜ん,何かありましたっけ.
> もちろん,ファイルの他の情報も同時というのであれば,
> SH... なんとかで取得できますけど,今回の場合,日付だけですからね.
>
> ヤバイ! ここ数日,SH... とか,でてこなくなってしまっている...
> SHFileInfo? だっけ?


どこかでListViewのSubItemsに入れているのだからと思い、いろいろ探したところ、
以下で見つけた・・・

そこで、内容を確認して、以下のように書き換えたら当然表示されるのだが・・・


procedure TShellFolder.LoadColumnDetails(RootFolder: TShellFolder;
内の

  if Assigned(SF2) then
  begin
    // Already have name and icon, so see if we can provide details
    for J := 1 to ColumnCount do
    begin
        HR := SF2.GetDetailsOf(FPIDL, J, SD);
        AddDetail(HR, FPIDL, SD);
    end;
  end


  if Assigned(SF2) then
  begin
    // Already have name and icon, so see if we can provide details
    for J := 1 to ColumnCount do
    begin
        if J = 3 then begin
           GetDetailsOf(Self, FindData);
           FDetails.Add(DefaultDetailColumn(FindData, J));
        end
        else begin
           HR := SF2.GetDetailsOf(FPIDL, J, SD);
           AddDetail(HR, FPIDL, SD);
        end;
    end;
  end

に変更


結局、FileAgeとFindFirstFileのどちらが速いんだ・・・っていう疑問になるだけだった・・・(^^;
SF2.GetDetailsOfで秒までひろってくれば良いのに・・・


[6143] Re5:TShellListViewで更新日時に秒を追加するには?返信 削除
2012/7/4 (水) 10:26:49 Mr.XRAY
▼ Saraさん

DefaultDetailColumnだと,元のというか,秒まで表示するんです,
でも,これ,日付時間の情報がない場合の処理が必要なのかも.

> 結局、FileAgeとFindFirstFileのどちらが速いんだ・・・っていう疑問になるだけだった・・・(^^;
> SF2.GetDetailsOfで秒までひろってくれば良いのに・・・


速度的にはあまり変わらないような気もしますが...
前のFileAgeで取得して,書式が整っているがいいような...
GetDetailsOfExという関数もありますが,書き直しは大変ですね.

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82