Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TOpendialog verändern (https://www.delphipraxis.net/29330-topendialog-veraendern.html)

NikoMitDaMacht 7. Sep 2004 18:22


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?

FAlter 7. Sep 2004 19:02

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.

Luckie 7. Sep 2004 19:09

Re: TOpendialog verändern
 
Delphi-Quellcode:
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;
So geht's.

Luckie 7. Sep 2004 19:25

Re: TOpendialog verändern
 
Zitat:

Zitat von FAlter
Falls du keine Delphi-Sources hast, kann ich dir ja die von D3 geben, frag mich einfach per PN.

Die Weitergabe der Quellcodes verstößt gegen die Lizenz. :warn:

Desweiteren wird das nur ein Aufruf einer API Funktion aus der DLL ComDlg.dll sein.

FAlter 7. Sep 2004 20:16

Re: TOpendialog verändern
 
Zitat:

Zitat von Luckie
Die Weitergabe der Quellcodes verstößt gegen die Lizenz. :warn:

Hm, ich habe aber in Foren schön öfters solche Codeschnipsel gefunden, die aus solchen Units kommen.

Luckie 7. Sep 2004 20:21

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.

NikoMitDaMacht 8. Sep 2004 11:15

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:

Luckie 8. Sep 2004 11:20

Re: TOpendialog verändern
 
Da
Code:
SendMessage(hEdit, WM_GETTEXT, len[color=red][b]+1[/b][/color], lParam(Buffer));
hat ein +1 gefehlt.

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