AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Ereignisse für ein Object

Ein Thema von Captnemo · begonnen am 26. Sep 2014 · letzter Beitrag vom 29. Sep 2014
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 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