Avatar billede troublemaker Nybegynder
29. juli 2006 - 12:59 Der er 5 kommentarer og
1 løsning

SelectDirectory med en checkbox på

Hej

Jeg er ved at lave et program hvor jeg har brug for at der er en checkbox på en SelectDirectory/BrowserForFiler dialog.

Det skal være sådan at man kan sætte om den skal være checket når den bliver åbnet også selvfølgelig skal man kunne få fat i om den er  checket når man trykker OK.

Er det noget der kan lade sig gøre og hvordan?

Koden jeg bruger ser sådan her ud.
function BrowseDialogCallBack
  (Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM):
  integer stdcall;
var
  wa, rect : TRect;
  dialogPT : TPoint;
begin
  //center in work area
  if uMsg = BFFM_INITIALIZED then
  begin
    wa := Screen.WorkAreaRect;
    GetWindowRect(Wnd, Rect);
    dialogPT.X := ((wa.Right-wa.Left) div 2) -
                  ((rect.Right-rect.Left) div 2);
    dialogPT.Y := ((wa.Bottom-wa.Top) div 2) -
                  ((rect.Bottom-rect.Top) div 2);
    MoveWindow(Wnd,
              dialogPT.X,
              dialogPT.Y,
              Rect.Right - Rect.Left,
              Rect.Bottom - Rect.Top,
              True);
  end;

  Result := 0;
end;

function BrowseDialog
(const Title: string; const Flag: integer): string;
var
  lpItemID : PItemIDList;
  BrowseInfo : TBrowseInfo;
  DisplayName : array[0..MAX_PATH] of char;
  TempPath : array[0..MAX_PATH] of char;
begin
  Result:='';
  FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
  with BrowseInfo do begin
    hwndOwner := Application.Handle;
    pszDisplayName := @DisplayName;
    lpszTitle := PChar(Title);
    ulFlags := Flag;
    lpfn := BrowseDialogCallBack;
  end;
  lpItemID := SHBrowseForFolder(BrowseInfo);
  if lpItemId <> nil then begin
    SHGetPathFromIDList(lpItemID, TempPath);
    Result := TempPath;
    GlobalFreePtr(lpItemID);
  end;
end;
Avatar billede kroning Nybegynder
29. juli 2006 - 13:35 #1
Hvor vil du have den checkbox?
Avatar billede troublemaker Nybegynder
29. juli 2006 - 13:40 #2
Gerne ved siden af OK knappen
Avatar billede kroning Nybegynder
29. juli 2006 - 14:01 #3
Det har jeg ikke en løsning på andet end at du laver en helt ny SelectDirectory form evt. med en TShellTreeView på.
Avatar billede troublemaker Nybegynder
29. juli 2006 - 14:04 #4
Det havde jeg sådan set os tænkt på, men jeg vil hellere bruge den indbygget version hvis det kan lade sig gøre.
Avatar billede kroning Nybegynder
29. juli 2006 - 14:08 #5
Jeg tror det bliver et problem at få værdien af checkboxen da formen jo bliver free´ed i det øjeblik du trykker OK, dvs. at udover at få indsat en checkbox så skal du også have ændret på den måde den returnere resultatet på. Men jeg ved ikke så meget lige om den slags så måske er der en der har løsningen.
Avatar billede troublemaker Nybegynder
06. september 2007 - 11:16 #6
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester