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 TOpenDialog mit Button erweitern (https://www.delphipraxis.net/50154-topendialog-mit-button-erweitern.html)

hwis 21. Jul 2005 10:05


TOpenDialog mit Button erweitern
 
Wir möchtene den TOpenDialog mit einem eigenen Button ergänzen. Den Button können wir erstellen und auch ein Ereignis zuweisen. Zur Laufzeit wird das Ereignis aber nicht ausgeführt.

Delphi-Quellcode:
procedure TForm1.OpenDialog1OnShow(Sender: TObject);
var
  hParent: THandle;
  Rect: TRect;
  btnDR: TButton;
begin
  // Fensterhandle holen
  hParent := GetParent(OpenDialog1.Handle);
  // Position und Grösse ermitteln
  GetWindowRect(hParent, Rect);
  // Dialog vergrössern für Schalter
  SetWindowPos(hParent, 0, 0, 0, rect.Right - rect.Left, rect.Bottom - rect.Top
    + 30, SWP_NOMOVE);
  // Schalter erstellen und anpassen
  btnDR := TButton.Create(Self);
  btnDR.Name := 'btnDR';
  btnDR.Caption := 'Suche';
  // Schalter positionieren
  btnDR.Left := Rect.Right - Rect.Left - 87;
  btnDR.Top := Rect.Bottom - Rect.Top - 30;
  btnDR.Anchors := [akRight,akBottom];
  btnDR.OnClick := btnClick;
  //btnClick;
  btnDR.ParentWindow := hParent;
end;

procedure TForm1.btnClick(Sender: TObject);
begin
  showmessage('Hallo');
end;

Luckie 21. Jul 2005 12:28

Re: TOpenDialog mit Button erweitern
 
Das OnClick Ereignis wird normalerweise an das Parentfenster weitergegeben. Und dies ist dann, wenn man es richtig macht der OpenDialog.

Ich würde davon abratene VCL und reine Win32 API zu nmischen. Erstell liber die Schaltfläche mit CreateWindowEx auf dem Dialog.

hwis 21. Jul 2005 13:11

Re: TOpenDialog mit Button erweitern
 
Hoi Lucki,

ich habe mir CreateWindowEx angeschaut, aber ich werde nicht richtig schlau daraus.
Du hast nicht per Zufall ein kleines Beispiel zur Hand, oder weisst wo ich mich schlau machen kann?

jfheins 21. Jul 2005 13:15

Re: TOpenDialog mit Button erweitern
 
Bei den Beispielsourcen zum WinApi-Tutorial von Luckie ist bestimmt auch ein Button dabei ;)

idefix2 2. Jun 2015 22:47

AW: TOpenDialog mit Button erweitern
 
Jetzt krame ich diesen Uralt-Thread aus der Versenkung hervor.
Ich würde gerne den TOpen dialog mit einer Combobox erweitern - Wegen
Zitat:

Ich würde davon abratene VCL und reine Win32 API zu mischen. Erstell liber die Schaltfläche mit CreateWindowEx auf dem Dialog.
hätte ich gerne in diehier angesprochenen Tutorials hineingeschaut, leider sind die Links nicht mehr gültig, und eine rasche Suche hat auch etliche Links hervorgebracht, die nicht mehr funktionieren. Gibt es dieses Tutorial noch irgendwo zum Downoad, oder könnte jemand ein kurzes Code Fragment posten?


edit: Die Google-Suche war erfolgreicher als die Forumssuche: Aktueller Downloadlink

uligerhardt 3. Jun 2015 07:15

AW: TOpenDialog mit Button erweitern
 
Zitat:

Zitat von idefix2 (Beitrag 1303956)
Ich würde gerne den TOpen dialog mit einer Combobox erweitern - Wegen
Zitat:

Ich würde davon abratene VCL und reine Win32 API zu mischen. Erstell liber die Schaltfläche mit CreateWindowEx auf dem Dialog.

Ich hab das "damals" mit http://www.pegtop.net/delphi/compone...mmon/index.htm gemacht, wo du sogar TFrames mit Events und so als Erweiterung nehmen kannst. Das lief, VCL hin oder her, ganz gut. Deine User werden halt automatisch mit den XP-Uralt-Dialogen konfrontiert. Die neuen Dialoge (seit Vista oder so) haben einen expliziten Erweiterungsmechanismus eingebaut.

idefix2 3. Jun 2015 07:27

AW: TOpenDialog mit Button erweitern
 
Zitat:

Die neuen Dialoge (seit Vista oder so) haben einen expliziten Erweiterungsmechanismus eingebaut.
Hmm, das klingt gut, allerdings dürften einige Anwender des Programms immer noch XP-Rechner verwenden - obwohl ich mich frage, ob ich auf die noch Rücksicht nehmen soll, immerhin wird Windows XP schon eine ganze Weile von Microsoft nicht mehr unterstützt.

edit: Danke jedenfalls für den Link zu deinen Compos, die werden mir auf jeden Fall weiterhelfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 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