![]() |
type; auf ereignis reagieren
Hi
ich weiss gerade nicht wie ich das angehen soll, ich habe einen type, wenn nun daten geändert wird( hinzufügen oder löschen ) wüdre ich gern ein OnChange ereignis haben, wie kann ich das in den typen unterbringen ?
Delphi-Quellcode:
[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]
type
TStringArray = record Daten : array of array of string; end; |
ich habs jetzt hinbekommen
Delphi-Quellcode:
[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]
type
TArrayX = array of array of string[255]; type TStringArray = class private FTArray : TArrayX; procedure OnChange(FTArray : TArrayX); public property value : TArrayX read FTArray write OnChange; end; |
Neben dem, dass OnChange nicht dem von Borland vorgeschlagenen Konvention, Bezeichnernamen für property-write Methoden ist, wird dein OnChange nicht bei StringArray.value[0, 1] := 'Hallo' aufgerufen. Es kommt erst zu zug, wenn du StringArray.value einen anderen Wert zuweist.
Du musst dein Array in eine Array-Eigenschaft umwandeln und nicht, so wie du es hast ein Array als Eigenschaft.
Delphi-Quellcode:
private
FValues: array of array of ShortString; FOnChange: TNotifyEvent; procedure SetValues(X, Y: Integer; const Value: ShortString); function GetValues(X, Y: Integer): ShortString; protected procedure Changed; virtual; public property Values[X, Y: Integer]: ShortString read GetValues write SetValues; property OnChange: TNotifyEvent read FOnChange write FOnChange; end; procedure TStringArray.SetValues(X, Y: Integer; const Value: ShortString); begin if Value <> FValues[X, Y] then begin FValues[X, Y] := Value; Changed; end; end; function TStringArray.GetValues(X, Y: Integer): ShortString; begin Result := FValues[X, Y]; end; procedure TStringArray.Changed; begin if Assigned(FOnChange) then FOnChange(Self); end; |
danke für den hinweis
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 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