![]() |
TOpendialog verändern
Wie kann ich einen OpenDialoge verändern?
Ich will ein weiters edit-feld für parameter draufsetzen! Wie komm ich da dran? |
Re: TOpendialog verändern
Sieh dir mal die Unit extdlgs oder so an, die, in der TOpenPictureDialog drin ist. Der ist nämlich so eine Modifizierung des "normalen" OpenPictureDialogs.
Falls du keine Delphi-Sources hast, kann ich dir ja die von D3 geben, frag mich einfach per PN. |
Re: TOpendialog verändern
Delphi-Quellcode:
So geht's.
procedure TForm1.OpenDlgOnShow(Sender: TObject);
var hParent: THandle; rect: TRect; hEdit: THandle; begin hParent := GetParent(OpenDialog1.Handle); GetWindowRect(hParent, rect); SetWindowPos(hParent, 0, 0, 0, rect.Right - rect.Left, rect.Bottom - rect.Top + 25, SWP_NOMOVE); hEdit := CreateWindowEx(WS_EX_CLIENTEDGE, 'EDIT', '', WS_VISIBLE or WS_CHILD, 195, 318, 150, 20, hParent, 101, 0, nil); if hEdit = 0 then RaiseLastOSError; end; procedure TForm1.OpenDlgOnClose(Sender: TObject); var hParent: THandle; hEdit: THandle; Buffer: PChar; len: Integer; begin hParent := GetParent(OpenDialog1.Handle); hEdit := GetDlgItem(hParent, 101); len := SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0); GetMem(Buffer, len+1); try SendMessage(hEdit, WM_GETTEXT, len, lParam(Buffer)); ShowMessage(Buffer); finally FreeMem(Buffer, len+1); end; end; procedure TForm1.Button1Click(Sender: TObject); begin OpenDialog1.OnShow := OpenDlgOnShow; OpenDialog1.OnClose := OpenDlgOnClose; if OpenDialog1.Execute then begin ShowMessage(OpenDialog1.FileName); end; end; |
Re: TOpendialog verändern
Zitat:
Desweiteren wird das nur ein Aufruf einer API Funktion aus der DLL ComDlg.dll sein. |
Re: TOpendialog verändern
Zitat:
|
Re: TOpendialog verändern
Du kannst nicht nachweisen, dass der Poster das nicht selber geschrieben hat. Aber darüber wünsche ich hier keine Diskussion. Hier wurde es klar und deutlich anboten und du wurdest gemäß den Forenregeln belehrt.
|
Re: TOpendialog verändern
Klasse!
Das problem nur der letzte buchstabe der edit wird abgeschnitten! Und wie kann ich noch ein label drauf setzten? Aber danke schonmal :dancer: |
Re: TOpendialog verändern
Da
Code:
hat ein +1 gefehlt.
SendMessage(hEdit, WM_GETTEXT, len[color=red][b]+1[/b][/color], lParam(Buffer));
Die API-Fensterklasse eines Labels ist STATIC. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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