Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
ВнизКак в проводнике Найти похожие ветки
← →
FifteenTen © (2006-07-19 00:03) [0]У меня такой вопрос:
Во многих программах видел ListView с выводом файлов, но главное это то, что при нажатии на фаил правой кнопкой вылезает PopupMenu как в проводнике - так вот, как это они делают?(если можно, то на примере)
И ещё, а можно ли изменять класс окна в запущенном приложении?
← →
AndreyRus (2006-07-19 00:32) [1]А почему вы задаете этот вопрос в конференцию KOL, если он не имеет к ней отношение?
← →
FifteenTen © (2006-07-19 01:25) [2]Потому что, если задам не в конференции KOL то мне ответят что то типа:
"создай класс TComponent" или "Делается это элементарно, используя процедуры VCL ..." - эт я к примеру:) (а дальше в том же духе)
А так как на моей машине запускается Delphi IDE преимущественно с использованием KOL, то вполне разумно задать этот вопрос на форуме посвященном данной библиотеке, kol kol kol:)
← →
Игорь Шевченко © (2006-07-19 11:26) [3]
> И ещё, а можно ли изменять класс окна в запущенном приложении?
Можно. Убить окно, создать его от другого класса.
← →
Alexx2000 (2006-08-02 00:37) [4]Посмотри исходники ShellListView (входит в поставку Delphi), или используй этот компонент. Я даже портировал его под KOL, но никак не могу выложить.
← →
DiamondShark © (2006-08-02 02:16) [5]
> Во многих программах видел ListView с выводом файлов, но
> главное это то, что при нажатии на фаил правой кнопкой вылезает
> PopupMenu как в проводнике - так вот, как это они делают?
> (если можно, то на примере)
Можно на примере.
uses
ComObj,
ActiveX,
ShellApi,
ShlObj;
procedure TForm1.Button1Click(Sender: TObject);
var
desktop: IShellFolder;
mycomputer: IShellFolder;
folder: IShellFolder;
pidl: PItemIDList;
malloc: IMalloc;
chEaten: ULONG;
dwAttributes: ULONG;
contMenu: IContextMenu;
menu: HMENU;
cmd: UINT;
cmici: CMINVOKECOMMANDINFO;
begin
OleCheck( SHGetMalloc(malloc) );
OleCheck( SHGetDesktopFolder(desktop) );
OleCheck( SHGetSpecialFolderLocation(Handle, CSIDL_DRIVES, pidl) );
try
OleCheck( desktop.BindToObject(pidl, nil, IShellFolder, mycomputer) );
finally
malloc.Free(pidl);
end;
dwAttributes := 0;
OleCheck( mycomputer.ParseDisplayName(Handle, nil, "C:\My Video\Clips\Nightwish", chEaten, pidl, dwAttributes) );
try
OleCheck( mycomputer.BindToObject(pidl, nil, IShellFolder, folder) );
finally
malloc.Free(pidl);
end;
dwAttributes := 0;
OleCheck( folder.ParseDisplayName(Handle, nil, "Nightwish_-_I_Wish_I_Had_An_Angel.mpg", chEaten, pidl, dwAttributes) );
try
OleCheck( folder.GetUIObjectOf(Handle, 1, pidl, IContextMenu, nil, contMenu) );
finally
malloc.Free(pidl);
end;
menu := CreatePopupMenu;
try
OleCheck( contMenu.QueryContextMenu(menu, 0, 1, 65535, CMF_NORMAL) );
cmd := UINT(TrackPopupMenu(menu, TPM_RETURNCMD, Mouse.CursorPos.x, Mouse.CursorPos.y, 0, Handle, nil));
finally
DestroyMenu(menu);
end;
if cmd > 0 then
begin
cmici.cbSize := sizeof(cmici);
cmici.fMask := 0;
cmici.hwnd := Handle;
cmici.lpVerb := PChar(cmd - 1);
cmici.lpParameters := nil;
cmici.lpDirectory := nil;
cmici.nShow := SW_NORMAL;
OleCheck( contMenu.InvokeCommand(cmici) );
end
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c