Delphi-PRAXiS
Seite 2 von 2     12   

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 Eigene Kompo von TButton ableiten? Wie OnClick realisieren? (https://www.delphipraxis.net/115457-eigene-kompo-von-tbutton-ableiten-wie-onclick-realisieren.html)

winx 12. Jun 2008 14:38

Re: Eigene Kompo von TButton ableiten? Wie OnClick realisier
 
danke!!!

ich habs jetzt mal beides und zwar so:

Delphi-Quellcode:
 
  public
    property Actiongroup: TActionGroup read factiongroup write fActionGroup;

    constructor Create();
    procedure Clicked(Sender:TObject);
    procedure Click();override;

  published

  ...


procedure TAdvActionGlowButton.Click;
begin
  inherited;
  showmessage('CLICKED');
end;

constructor TAdvActionGlowButton.Create;
begin
  self.onClick := Clicked;
end;
Wenn ich nun jedoch einen MyButton erzeuge und auf diese klicke, passiert nix!

Muß ich noch irgendwas verknüpfen???

Neutral General 12. Jun 2008 14:48

Re: Eigene Kompo von TButton ableiten? Wie OnClick realisier
 
Hi winx,

Du solltest es am besten so machen, wie Muetze es vorgeschlagen hat. Fange die WM_COMMAND (CN_COMMAND ?) und überprüfe auf BN_CLICKED und führe dann eine Methode aus. Dann bleibt das OnClick Ereignis unangetastet, was mit Sicherheit im Sinne des Benutzers und auch in deinem Sinne sein dürfte.

Gruß
Neutral General

winx 12. Jun 2008 15:02

Re: Eigene Kompo von TButton ableiten? Wie OnClick realisier
 
Hi,

das Problem mit dem Objektinspektor wäre mir erstmals egal, da ich die Buttons dynamisch erzeuge. Was mich wundert, ist, dass es nicht funktioniert, wenn ich
im Konstruktor das onClick Ereigniss neu zuweise:

constructor TAdvActionGlowButton.Create;
begin
self.onClick := Clicked;
end;

will das jetzt irgendwie verstehen :-)

oki 12. Jun 2008 20:27

Re: Eigene Kompo von TButton ableiten? Wie OnClick realisier
 
Hi,

also, ich bin etwas verwirrt. Eigentlich so verwirrt, dass ich es schnell mal ausprobiert habe. Wo ist das Problem? Procedure Click vererben und alles ist gut.

Klicke ich im folgenden Bsp. auf den Button, dann kommt mein Hallo. Das OnClick muss dabei nicht vergewaltigt werden.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TMyButton = class(TButton)
  public
    procedure Click; override;
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
  public
    Button2 : TMyButton;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button2 := TMyButton.Create(self);
  Button2.parent := self;
  Button2.top := 50;
  Button2.Left := 50;
end;

{ TMyButton }

procedure TmyButton.Click;
begin
  inherited;
  MessageDlg('Hallo', mtInformation, [mbOK], 0);
end;

end.
Gruß oki

NickelM 13. Jun 2008 08:56

Re: Eigene Kompo von TButton ableiten? Wie OnClick realisier
 
Also ich hab bei einem Panel (das macht aber keinen unterschied) die proceduren DoMouseDown und DoMouseUp überschrieben.

Hab als erstes inherited gemacht und dan meine eigenen Funktionen eingebaut. Es funkt super :mrgreen: :zwinker:

oki 13. Jun 2008 09:02

Re: Eigene Kompo von TButton ableiten? Wie OnClick realisier
 
Viele Wege führen nach Rom.

Man sollte nur nich Published-Events auf eigene Proceduren der Klasse umleiten. Die sind eben mal dafür gedacht, dass der Benutzer der Klasse auf Ereignisse reagieren kann. Die Klasse selbst arbeitet ja mit ihren Methoden. Dafür gibt es ja nun mal die Vererbung.

Gruß oki

winx 13. Jun 2008 10:03

Re: Eigene Kompo von TButton ableiten? Wie OnClick realisier
 
bei mir jetzt auch, hab nur das inherited im Konstruktor vergessen ich volldepp


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr.
Seite 2 von 2     12   

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