![]() |
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:
wäre für Hilfe echt Dankbar.
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. |
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; |
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. |
Re: OnMouseDown Ereignis bei EigButton (abgeleitet von TPane
ich bekomme für
Code:
die meldung nicht genügend wirkliche parameter was heißt das? was soll ich nur tun?
OnMouseDown := fMouseDownProc;
OnMouseUp := fMouseUpProc; THX schonmal für die Hilfe |
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. |
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 08: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