![]() |
ableiten von klassen und überschreiben von ereignissen
folgendes problem, ich leite eine klasse von TCustomControl ab
Delphi-Quellcode:
als nächstes leite ich von diser klasse ab;
type
TZustand = (zOn, zOut); TBrandmeldung = class(TCustomControl) private FZustand:TZustand; protected public constructor Create(Aowner :TComponent); override; destructor Destroy; override; procedure Paint; override; property Zustand: TZustand read FZustand write FZustand ; end;
Delphi-Quellcode:
wenn ich nun einen klick auf die TMelderKlasse mache, um den zustand zu ändern, muss ich 3 mal klicken, bis der zustand- in gestalt einer anderen farbe - sich ändert.
type
TMelderTyp = (mThermisch, mOptisch, mMulti); TMelder = class(TBrandmeldung) private public constructor Create(Aowner: TComponent); override; destructor Destroy;override; procedure Paint;override; procedure MouseDown(Button:TMouseButton;Shift: TShiftState;x,y:Integer);override; procedure MyClick(Sender :TObject); property Onclick; end; wo liegt mein fehler? :wall: zum test habe ich mousedown überschrieben und dort das onclick ereignis zugewiesen. in myclick ändere ich nur den status - wenn zon ,dann zout und umgekehrt. |
Re: ableiten von klassen und überschreiben von ereignissen
Moin Kiar,
wie sieht denn Deine OnClick Routine aus, mit der Du es versuchst? |
Re: ableiten von klassen und überschreiben von ereignissen
hi chris
Delphi-Quellcode:
im Create weise ich dem onclick das myclick-ereignis zu.
procedure TMelder.myClick(Sender:TObject);
begin if fZustand = Zout then begin FZustand:= Zon; canvas.pen.color:=Clred end else begin FZustand:= Zout; canvas.pen.color:=clyellow; end; end; raik |
Re: ableiten von klassen und überschreiben von ereignissen
Hallo,
schau Dir mal dies Beispiel an. Das funktioniert
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TMelder = class(TCustomPanel) private FZustand : Boolean; protected procedure Click; override; public constructor Create(AOwner : TComponent); end; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} { TMelder } procedure TMelder.Click; begin FZustand:=Not FZustand; Case FZustand Of False : Color:=clBtnFace; True : Color:=clLime; end; inherited Click; end; constructor TMelder.Create(AOwner: TComponent); begin inherited Create(AOwner); ControlStyle := ControlStyle - [csAcceptsControls,csSetCaption]; end; { TForm1} procedure TForm1.FormCreate(Sender: TObject); var MyMelder : TMelder; begin MyMelder:=TMelder.Create(Self); MyMelder.Parent:=Self; MyMelder.Left:=50; MyMelder.Top:=20; end; end. |
Re: ableiten von klassen und überschreiben von ereignissen
hallo jens , wir hatten schon ma das vergnügen ging um ein ähnliches problem :cheers:
raik jens ich leite aber von TBrandmeldung ab, ich denke, das Fzustand durch den aufruf der paint methode immer wieder gesetzt wird. eigentlich ist es besser, fZustand als boolean zu setzen, aber wenn ich mehrere zustände habe, oder mehrere Typen wird es mit boolean nicht gehen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 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 by Thomas Breitkreuz