![]() |
Meine erste Kompo: Problem mit dem Changeereignis
Hallo, ich programmier gerade meine 1. Selbstständige Compo, habe dabei mit was super einfachen angefangen: Einer Compo, die nur einen Integer Wert in der Variable (F)Value speichert.
Das ging auch ganz gut, dann bin ich auf die Idee gekommen, dass es ganz schön wäre, wenn ein (mein erstes Ereignis) beim Ändern des Wertes aufgerufen wird. Also habe ich in meinem Buch nachgeblättert, die Prozedur Change Value funktioniert, nur deren aufruf beim Ändern des Wertes geht nicht.
Delphi-Quellcode:
unit IntegerCompo1;
interface uses Windows, Messages, SysUtils, Classes; type TIntegerComponent = class; TValueChangeEvent = procedure(Sender: TIntegerComponent; NewValue: Longint) of object; TIntegerComponent = class(TComponent) private { Private-Deklarationen } FOnValueChange: TValueChangeEvent; procedure ValueChange; protected { Protected-Deklarationen } FValue: Longint; public { Public-Deklarationen } published { Published-Deklarationen } property OnValueChange: TValueChangeEvent read FOnValueChange write FOnValueChange; property Value: Longint read FValue write FValue; end; procedure Register; implementation procedure TIntegerComponent.ValueChange; begin if Assigned(FOnValueChange) then FOnValueChange(Self, FValue); end; procedure Register; begin RegisterComponents('Samples', [TIntegerComponent]); end; end. |
Re: Meine erste Kompo: Problem mit dem Changeereignis
Hallo,
Du brauchst natürlich einen Setter für die Property Value. mr2
Delphi-Quellcode:
TIntegerComponent = class(TComponent)
private FValue: Integer; // besser Integer nehmen & alles was mit 'F' beginnt immer private lassen! FOnValueChange: TValueChangeEvent; procedure SetValue(NewValue: Integer); { Private-Deklarationen } // diese Kommentare sollten immer am Ende eines Blocks stehen published property OnValueChange: TValueChangeEvent read FOnValueChange write FOnValueChange; property Value: Integer read FValue write SetValue; { Published-Deklarationen } end; procedure TIntegerComponent.SetValue(NewValue: Integer); begin if (NewValue <> FValue) then begin if Assigned(FOnValueChange) then FOnValueChange(Self, FValue); FValue := NewValue; end; end; |
Re: Meine erste Kompo: Problem mit dem Changeereignis
Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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