お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"RE:PopupMenuにデスクトップ項目を列挙1"

この発言は
#01279 Wacky さんのPopupMenuにデスクトップ項目を列挙1
に対するコメントです

この発言に対し以下のコメントが寄せられています
#01285 Wacky さん RE:PopupMenuにデスクトップ項目を列挙1

Wacky です。修正です。よろしくお願いします。 //--------------------------------------------------------------- procedure TForm1.GetSubItems(ShellFolder: IShellFolder; itemIDList, itemIDList_Full: PItemIDList; var SubMenuItem: TMenuItem); var ShellFolder_Sub: IShellFolder; enumIDList_Sub: IEnumIDList; itemIDList_New, // <-- 追加 itemIDList_Sub: PItemIDList; {...略...} begin {...略...} // それぞれのアイテムについて celt:= ULONG(1); pceltFetched := ULONG(0); while enumIDList_Sub.Next(celt, itemIDList_Sub, pceltFetched) = NOERROR do begin itemIDList_New := // <-- 追加 Concatenate(itemIDList_Full, itemIDList_Sub); // <-- 追加 {...略...} // アイコンを取得 // SHGetFileInfo(PChar(Concatenate(itemIDList_Full, itemIDList_Sub)), SHGetFileInfo(PChar(itemIDList_New), // <-- 修正 0, sfi, SizeOf(TSHFileInfo), SHGFI_PIDL or SHGFI_ICON or SHGFI_SMALLICON or SHGFI_DISPLAYNAME); {...略...} // メニュー項目を作成し、アイコン・キャプション・PItemIDListを保存 NewSubMenuItem := TMenuItem.Create(Self); with NewSubMenuItem do begin ImageIndex := NewSubImageIndex; Caption := IconCaption; // Tag := IDlist.Add(Concatenate(itemIDList_Full, itemIDList_Sub)); Tag := IDlist.Add(itemIDList_New); // <-- 修正 end; // 仮想フォルダならばサブフォルダを取得 HasRealPath := SHGetPathFromIDList( // Concatenate(itemIDList_Full, itemIDList_Sub), Path); itemIDList_New, Path); // <-- 修正 if HasRealPath = False then begin GetSubItems(ShellFolder_Sub, itemIDList_Sub, // Concatenate(itemIDList_Full, itemIDList_Sub), NewSubMenuItem); itemIDList_New, NewSubMenuItem); // <-- 修正 end; // 下位階層にアイテムがなければクリックイベントを設定 if NewSubMenuItem.Count = 0 then begin NewSubMenuItem.OnClick := PopupMenuClick; end; SubMenuItem.Add(NewSubMenuItem); Malloc.Free(itemIDList_Sub); // <-- 追加 {...略...} end;  Original document by Wacky 氏 ID:(HQL05475)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum