Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wie OpenDialog verändern? (https://www.delphipraxis.net/42952-wie-opendialog-veraendern.html)

TeTSuO 26. Mär 2005 13:46


Wie OpenDialog verändern?
 
Hallo Erstmal.

Gibt es eine möglichkeit den TOpenDialog in der Größe zu verändern und ein Label hinzufügen, das dieser bei klick auf Datei zusätzliche Informationen zur Datei anzeigt oder müsste man sowas selbst proggen?

Mephistopheles 26. Mär 2005 13:50

Re: Wie OpenDialog verändern?
 
Leite das Objket ab, übergib eine statische Callback in die OPENFILENAME-Struktur bei Member: lpfnHook. Dann kannst du machen was du willst. Ein wenig Win32-Kenntnisse sind aber nötig.

Luckie 26. Mär 2005 13:52

Re: Wie OpenDialog verändern?
 
Guck mal hier: http://www.luckie-online.de/Delphi/S...erweitern.html

TeTSuO 26. Mär 2005 13:57

Re: Wie OpenDialog verändern?
 
:gruebel: Hä wie jetzt hab nichts verstanden bis auf "leite das Objekt ab".

Kannste mir das irgendwie verdeutlichen

TeTSuO 29. Mär 2005 00:46

Re: Wie OpenDialog verändern?
 
Habe das anders gelöst!
Da ich eine GroupBox und ein Label darin haben wollte und das mit dem Code

Delphi-Quellcode:
   CreateWindowEx(...)
nicht geklappt hatte habe ich rausgefunden das es auch mit der VCL geht.

Ich habe das folgendermasen gelöst :

Delphi-Quellcode:
type
  dOpenSLD: TOpenDialog;

procedure TfMain.dOpenSLDShow(Sender: TObject);
var
  hParent: THandle;
  rect: TRect;
  pInfo: TGroupBox;
  lInfo: TLabel;
begin
  // Fensterhandle holen
  hParent := GetParent(dOpenSLD.Handle);
  // Position und Größe ermitteln
  GetWindowRect(hParent, rect);
  // Dialog vergrößern für Info
  SetWindowPos(hParent, 0, 0, 0, rect.Right - rect.Left+250, rect.Bottom - rect.Top
    , SWP_NOMOVE);
  // Groupbox in Opendialog erstellen und anpassen
  pInfo:=TGroupBox.Create(dOpenSLD);
  // musste gesetzt werden sonst sah es aus wie zu Win 3.11 zeiten
  pInfo.Ctl3D:=True;
  pInfo.Color:=clBtnFace;
  // GroupBox auf OpenDialog Fenster verschieben
  pInfo.ParentWindow:=hParent;
  // Namen zum wiederfinden zuweisen
  pInfo.Name:='gbInfo';
  // GroupBox positionieren
  pInfo.Left:=rect.Right - rect.Left-5;
  pInfo.Top:=10;
  pInfo.Width:=240;
  pInfo.Height:=rect.Bottom - rect.Top-50;
  // Caption der GroupBox zuweisen
  pInfo.Caption:='Datei Informationen';
  // Label in GroupBox erstellen und anpassen
  lInfo:=TLabel.Create(pInfo);
  // Parent auf GroupBox
  lInfo.Parent:=pInfo;
  // Namen zum wiederfinden zuweisen
  lInfo.Name:='lblInfo';
  lInfo.Align:=alClient;
  lInfo.Transparent:=True;
end;

procedure TfMain.dOpenSLDClose(Sender: TObject);
var pInfo: TGroupBox;
    lInfo: TLabel;
begin
 // GroupBox finden
 pInfo:=(dOpenSLD.FindComponent('gbInfo') as TGroupBox);
 //Label Finden
 lInfo:=(pInfo.FindComponent('lblInfo') as TLabel);
 // wenn gefunden löschen
 if lInfo <> nil Then lInfo.Destroy;
 if pInfo <> nil Then pInfo.Destroy;
end;

procedure TfMain.dOpenSLDSelectionChange(Sender: TObject);
var pInfo: TGroupBox;
    lInfo: TLabel;
    tInfo: TSLDFileInfo;
begin
 // GroupBox finden
 pInfo:=(dOpenSLD.FindComponent('gbInfo') as TGroupBox);
 //Label Finden
 lInfo:=(pInfo.FindComponent('lblInfo') as TLabel);
 if lInfo = nil then Exit;
 // SLDFileInfo Namen übergeben
 tInfo.Filename:=dOpenSLD.FileName;
 // und Info bekommen
 if GetSLDFileInfo(tInfo) Then
    // Info formatieren
    lInfo.Caption:=Format(capOpenInfo,[tInfo.Name,tInfo.Datenpfad,
                                       tInfo.Count,tInfo.Length])
 Else
    // wenn keine info dann Label leer
    lInfo.Caption:='';
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz