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 OnMouseDown Ereignis bei EigButton (abgeleitet von TPanel) (https://www.delphipraxis.net/30584-onmousedown-ereignis-bei-eigbutton-abgeleitet-von-tpanel.html)

Flippo 26. Sep 2004 18:33


OnMouseDown Ereignis bei EigButton (abgeleitet von TPanel)
 
Hallo,
ich probiere einen Farbigen Button als eigene Komponente zu programmieren.
Habe erstmal eine neue Komponente von TPanel abgleitet und ein paar Eigenschaften so eingestellt das das Panel wie ein Button wirkt nun muss ich es aber hinkriegen das sich das Panel wie ein Button beim klicken verhält ich schreib einfach mal mein Quelltext dazu rein und dann is mein Problem eigentlich selbserklärend ich bekomm das mit dem OnMouseDown Ereignis in meiner eigenen Komponente nicht hin(Wenn ich Bevelinner über die Unit ändere gehts)

Code:
unit AButton;

interface

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

type
  TAButton = class(TPanel)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
    constructor Create(AOwner: TComponent); override;
  public
    { Public-Deklarationen }
    procedure OnMouseDown;
    procedure OnMouseUp;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

constructor TAButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
  width:= 100;
  height:=40;
  color:=clyellow;
  bevelinner:=bvRaised;
end;

procedure TAButton.OnMouseDown;
begin
bevelinner:=bvlowered;
bevelouter:=bvlowered;

end;

procedure TAButton.OnMouseUp;
begin
bevelinner:=bvraised;
bevelouter:=bvraised;
end;

procedure Register;
begin
  RegisterComponents('Eigene', [TAButton]);
end;

end.
wäre für Hilfe echt Dankbar.

SirThornberry 26. Sep 2004 18:39

Re: OnMouseDown Ereignis bei EigButton (abgeleitet von TPane
 
du musst die Mousedown richtig definieren (die procedure muss genau so aussehen wie sie aussieht wenn du das über den Objectinspektor machst) und dann musst du in deinem Create die Proceduren den Event zuweisen.
Delphi-Quellcode:
[...]
constructor TAButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
  width:= 100;
  height:=40;
  color:=clyellow;
  bevelinner:=bvRaised;
  OnMouseDown := fMouseDownProc;
  OnMouseUp := fMouseUpProc;
end;

procedure TAButton.FMouseDownProc(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  bevelinner:=bvlowered;
  bevelouter:=bvlowered;
end;

procedure TAButton.FMouseUpProc(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  bevelinner:=bvraised;
  bevelouter:=bvraised;
end;

Nightshade 26. Sep 2004 19:13

Re: OnMouseDown Ereignis bei EigButton (abgeleitet von TPane
 
Delphi-Quellcode:
unit AButton;

interface

uses
  Classes, Controls, ExtCtrls, Windows;

type
  TAButton = class(TPanel)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
     procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
     procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TAButton]);
end;

{ TAButton }

{ TAButton }

procedure TAButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  inherited;
  Caption := 'Down';
end;

procedure TAButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  inherited;
  Caption := 'Up';
end;

end.

Flippo 26. Sep 2004 19:28

Re: OnMouseDown Ereignis bei EigButton (abgeleitet von TPane
 
ich bekomme für
Code:
OnMouseDown := fMouseDownProc;
OnMouseUp := fMouseUpProc;
die meldung nicht genügend wirkliche parameter was heißt das? was soll ich nur tun?
THX schonmal für die Hilfe

Nightshade 26. Sep 2004 19:34

Re: OnMouseDown Ereignis bei EigButton (abgeleitet von TPane
 
Ich würde meine Variante empfehlen, da du da noch
die OnMouseDown und OnMouseUp im OI vergeben kannst,
unabhängig von dem Code in der Komponente.

Das funktioniert in der Variante von SirThornberry
nämlich nicht.

Flippo 26. Sep 2004 19:42

Re: OnMouseDown Ereignis bei EigButton (abgeleitet von TPane
 
So habs nu hinbekommen
Danke für die schnelle Hilfe!!

(Falls jemand das selbe Problem hat mit dem Code von Nightshade klappts bei mir)


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