Главная страницаОбратная связьКарта сайта

Диалог для выбора компьютера

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   ShlObj, ActiveX;

 function BrowseComputer(DialogTitle: string; var CompName: string;
   bNewStyle: Boolean): Boolean;
   // bNewStyle: If True, this code will try to use the "new" 
  // BrowseForFolders UI on Windows 2000/XP 
const
   BIF_USENEWUI = 28;
 var
   BrowseInfo: TBrowseInfo;
   ItemIDList: PItemIDList;
   ComputerName: array[0..MAX_PATH] of Char;
   Title: string;
   WindowList: Pointer;
   ShellMalloc: IMalloc;
 begin
   if Failed(SHGetSpecialFolderLocation(Application.Handle, CSIDL_NETWORK, ItemIDList)) then
     raise Exception.Create("Unable open browse computer dialog");
   try
     FillChar(BrowseInfo, SizeOf(BrowseInfo), 0);
     BrowseInfo.hwndOwner := Application.Handle;
     BrowseInfo.pidlRoot := ItemIDList;
     BrowseInfo.pszDisplayName := ComputerName;
     Title := DialogTitle;
     BrowseInfo.lpszTitle := PChar(Pointer(Title));
     if bNewStyle then
       BrowseInfo.ulFlags := BIF_BROWSEFORCOMPUTER or BIF_USENEWUI
     else
       BrowseInfo.ulFlags := BIF_BROWSEFORCOMPUTER;
     WindowList := DisableTaskWindows(0);
     try
       Result := SHBrowseForFolder(BrowseInfo) <> nil;
     finally
       EnableTaskWindows(WindowList);
     end;
     if Result then CompName := ComputerName;
   finally
     if Succeeded(SHGetMalloc(ShellMalloc)) then
       ShellMalloc.Free(ItemIDList);
   end;
 end;

 // Example 

procedure TForm1.Button1Click(Sender: TObject);
 var
   Computer: string;
 begin
   BrowseComputer("...", Computer, True);
   label1.Caption := Computer;
 end;

Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Диалог для выбора компьютера", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2023 Дискета.info