Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.105 c
9-1132873549
Юзерок
2005-11-25 02:05
2006.08.20
directX


2-1154032666
susergey
2006-07-28 00:37
2006.08.20
ShellExecute


15-1153345052
Alert2006
2006-07-20 01:37
2006.08.20
Нужен чат


2-1154453897
bobbi
2006-08-01 21:38
2006.08.20
посчитать количество символов в stringlist


5-1127570241
bneuro
2005-09-24 17:57
2006.08.20
Помещение в DLL своего компонента





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский