![]() |
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? |
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.
|
Re: Wie OpenDialog verändern?
Guck mal hier:
![]() |
Re: Wie OpenDialog verändern?
:gruebel: Hä wie jetzt hab nichts verstanden bis auf "leite das Objekt ab".
Kannste mir das irgendwie verdeutlichen |
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:
nicht geklappt hatte habe ich rausgefunden das es auch mit der VCL geht.
CreateWindowEx(...)
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 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz