Einzelnen Beitrag anzeigen

Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#5

AW: Eigene Ereignisse für ein Object

  Alt 29. Sep 2014, 07:24
Okay, das ist soweit klar.

Aber ich muß ja noch irgendwo einen "Auslöser" definieren, der das OnItemChange-Ereignis auslöst.
Ich will ja keine geerbten Ereignisse, sondern ein neues definieren, z.B. OnSelectChange.

Ich habe das jetzt so gelöst (nicht Themarelevante Codeabschnitte habe ich mal rausgeschnitten):

Delphi-Quellcode:
Type
  TOnSelectChange=procedure(Sender: TObject; ItemIndex: Integer) of object;

Type
  TEntry=class(TCollectionItem)
  private
    FSelected: Boolean;
    FOnSelectChange: TOnSelectChange;
    procedure SetSelected(const Value: Boolean);
  public
    constructor Create(Collection: TCollection; EntryTypes: TEntryTypes);
    destructor Destroy;
  published
    property Selected: Boolean read FSelected write SetSelected;
    property OnSelectChange: TOnSelectChange read FOnSelectChange write FOnSelectChange;
  end;

...

implementation

{ TEntries }

procedure TEntry.SetSelected(const Value: Boolean);
var
  OldValue: Boolean;
begin
  if not Assigned(FOnSelectChange) then Exit;
  OldValue:=FSelected;
  FSelected := Value;
  if (FSelected<>OldValue) then
    OnSelectChange(self, self.Index);
end;
Macht man das so?

Jetzt habe ich noch ein Problem damit. Die oben definiert Klasse TEntry bzw. deren Collection ist ja Bestandteil meiner Komponente. In der "Main"-Unit dieser Komponente wird diese Collection ja erzeugt, und es können über den OI Entries hinzugefügt werden. Jedes´m Item soll dem OnSelectChange-Ereignis eine entsprechende Procedure in der Main-Unit hinzugefügt werden. Grund ist der, dass ich z.B. in der Main erkenne, wann sich ein SelectState ändert, und ein Repaint ausgelöst werden muß.

Jetzt muß ich aber nach dem Create der Komponente jedem bereits vorhandenen Items auch diese Procedure aus der Main-Unit dem OnSelectChange-Ereignis zuweisen. Wo mache ich das? Wann werden die Items, die im IO definiert wurden tatsächlich zur Runtime erzeugt?
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat