Delphi-PRAXiS
Seite 1 von 2  1 2      

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 SpeedButton im Edit erzeugen (https://www.delphipraxis.net/3136-speedbutton-im-edit-erzeugen.html)

Tpercon 25. Feb 2003 13:37


SpeedButton im Edit erzeugen
 
Wie erstelle ich zur Laufzeit im OnEnter Ereignis einer Edit Komponente ein SpeedButton, der dann im Edit angezeigt wird?

Gruß

Luckie 25. Feb 2003 13:39

Das zur Laufzeit erzeugen von Komponenten hatten wir schon öfters im Forum, bitte suchen.

Abner was soll der Button im Edit? :shock:

Tpercon 25. Feb 2003 14:06

Das Erzeugen ist ja auch nicht wirklich das Problem, nur der Button ist immer hinter dem Edit!

Luckie 25. Feb 2003 14:15

Warum sagst du das nicht gleich? :roll:
Schon mal SetParent probiert? Oder SetWindowPos? Allerdingst dürftest du Probleme bekommen, wenn der Speedbutton kein Handle hat, da er evntuell von TGraphicControl abgeleitet ist.

jbg 25. Feb 2003 14:23

Nicht nur "eventuell". Er ist es.

d3g 25. Feb 2003 14:55

Hi Tpercon,

meinst du sowas?
Delphi-Quellcode:
procedure TForm1.Edit1Enter(Sender: TObject);
var
  Button: TSpeedButton;
begin
  Button := TSpeedButton.Create(TComponent(Sender));
  with Button do begin
    Parent := TWidgetControl(Sender);
    Caption := 'Test';
    Left := TEdit(Sender).Width - 40;
    Top := 2;
    Width := 38;
    Height := Parent.Height - 2;
    Flat := True;
    Font.Color := clRed;
    Font.Style := Font.Style + [fsBold];
    OnClick := ButtonClick;
  end;
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
  ShowMessage('Test');
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
  ShowMessage('Test');
end;
Es wäre aber intelligenter, den Button im OnCreate-Ereignis zu erstellen und ihn nur im OnEnter-Ereignis sichtbar bzw. im OnExit-Ereignis unsichtbar zu machen. So wie hier wird nämlich bei jedem OnEnter-Ereignis der Button neu erstellt.

MfG,
d3g

Tpercon 25. Feb 2003 15:10

Was bedeutet denn TWidgetControl?
Erstens meckert Delphi da und zweitens läßt sich in der OH auch nichts dazu finden. :(

janjan 25. Feb 2003 15:33

Änder es mal in TWinControl. TWidgetControl wird in Kylix benutzt, kuck mak auf d3g's Delphi Version ;)

Tpercon 25. Feb 2003 19:13

Danke!
Nur der SpeedButton bekommt leider den gleichen Cursor wie das Edit, kann man das noch ändern, außer über ne Abfrage im MouseMove der Edit Komponente?

d3g 25. Feb 2003 20:11

Wie wär's mit der Property Cursor des SpeedButtons?
Delphi-Quellcode:
procedure TForm1.Edit1Enter(Sender: TObject);
var
  Button: TSpeedButton;
begin
  Button := TSpeedButton.Create(TComponent(Sender));
  with Button do begin
    // ...  
    Cursor := crHandPoint;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz