На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Как?вставить checkbox в SelectDirectory
    Подскажите, как можно вставить checkbox в SelectDirectory? (например - как в диалоге открытия директории winamp)
      Demona, после вызова SHBrowseForFolder в callback-процедуре (эта процедура указывается в структуре BROWSEINFO) создается checkbox (CreateWindowEx).
        ExpandedWrap disabled
          uses
           ShlObj, ActiveX, CommCtrl;
           
          var
           id:integer;
           
          function NewDlgProc(Wnd:HWND; uMsg:DWORD; wParam:WPARAM; lParam:LPARAM):integer; stdcall;
          begin
            if (uMsg=WM_COMMAND) then
               if (LOWORD(wParam)=id) then
                 if (HIWORD(wParam)=BN_CLICKED) then
                 begin
                   if (IsDlgButtonChecked(Wnd,id)=BST_CHECKED) then MessageBox(Wnd,'Checked!','',0) else
                   MessageBox(Wnd,'UnChecked!','',0)
                 end;
            result:=CallWindowProc(Pointer(GetWindowLong(Wnd,GWL_USERDATA)),Wnd,uMsg,wParam,lParam);
          end;
           
          function BrowseCallback(Wnd:HWND; uMsg:DWORD; lParam:LPARAM; lpData:LPARAM ):integer; stdcall;
          var
           hwndCheck:HWND;
          begin
            if (uMsg=BFFM_INITIALIZED) then
            begin
             hwndCheck:=CreateWindow('BUTTON','MyCheckBox', BS_AUTOCHECKBOX or WS_CHILD or WS_VISIBLE,10,10,100,20,Wnd,id,hInstance,nil);
             SendMessage(hwndCheck,WM_SETFONT, GetStockObject(DEFAULT_GUI_FONT),1);
             SetWindowLong(Wnd,GWL_USERDATA,SetWindowLong(Wnd, DWL_DLGPROC, Integer(@NewDlgProc)));
            end;
            Result:=0;
          end;
           
          procedure TForm1.Button1Click(Sender: TObject);
          var
           bi:TBrowseInfo;
           szDir:array[0..MAX_PATH-1] of char;
           pidl:PItemIDList;
           lpMalloc:IMalloc;
          begin
            if SUCCEEDED(SHGetMalloc(lpMalloc)) then
            begin
              ZeroMemory(@bi,sizeof(bi));
              bi.hwndOwner := Handle;
              bi.ulFlags := BIF_RETURNONLYFSDIRS or BIF_EDITBOX;
              bi.lpfn := BrowseCallback;
              pidl := SHBrowseForFolder(bi);
              if (pidl<>nil) then
              begin
               if SHGetPathFromIDList(pidl,szDir) then MessageBox(Handle,szDir,'Picked',0);
               lpMalloc.Free(pidl)
              end
            end
          end;
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0.0653 ]   [ 16 queries used ]   [ Generated: 19.08.26, 20:21 GMT ]