AGB  ·  Datenschutz  ·  Impressum  







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

Klasseninstanz zur Laufzeit bestimmen

Ein Thema von Delbor · begonnen am 1. Aug 2015 · letzter Beitrag vom 4. Aug 2015
 
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#1

Klasseninstanz zur Laufzeit bestimmen

  Alt 1. Aug 2015, 18:07
Delphi-Version: XE4
Hi zusammen
Ich habe eine Klasse, der ich (Schrift-)Attribute zuweisen kann, die ich per eigenem Frame einstelle. Den Frame habe ich hier vorgestellt. Die Klasse sieht ziemlich genau aus, wie der auf der verlinkten Seite vorgestellte Record - eine Klasse ist das Ding nur, weil es einer Objektliste und einer Combobox hinzugefügt wird:
Delphi-Quellcode:
  TAttributsClass = Class(TPersistent)
     public
      BackGround : TColor;
      ForeGround : TColor;
      StyleBold: Boolean;
      StyleItalic : Boolean;
      StyleUnderLine : Boolean;
      StyleStrikeOff : Boolean;
      AttributName: String;
  end;
Instanzen dieser Klasse erstelle ich so:
Delphi-Quellcode:
constructor TCssAttriTLBXFrame.Create(AOwner: TComponent);
begin
  inherited;
  FCssAttributsList := TDataObjectList<TAttributsClass>.Create();
  FCssAttributsList.OwnsObjects := True;
  CreateAttribute(FCommentAttri, 'Kommentare');
  CreateAttribute(FPropertyAttri, 'Eigenschaften');
  CreateAttribute(FKeyAttri, 'Schlüsselworte');
  CreateAttribute(FSpaceAttri, 'Leerzeichen');

  CreateAttribute(FStringAttri, 'Strings');
  CreateAttribute(FColorAttri, 'Farben');
  CreateAttribute(FNumberAttri, 'Zahlen');
  CreateAttribute(FSymbolAttri, 'Symbole');

  CreateAttribute(FTextAttri, 'Text');
  CreateAttribute(FValueAttri, 'Werte');
  CreateAttribute(FUndefPropertyAttri, 'Undefinierte Eigenschaften');
  CreateAttribute(FImportantPropertyAttri, 'Wichtige Eigenschaften');

end;
Der erste Parameter bezeichnet dabei die Instanz, die erzeugt werden soll, der zweite den String, der in der Combobox angezeigt wird.

Nun geht es darum, die Werte, die ich zB. aus einer Colorbox auslese, im Closeup per Event weiterzureichen.
Gefeuert werden die Events, wenn ein Wert gewählt wurde, zB. wenn eine Checkbox geklickt wird oder beim CloseUp einer Colorbox:
Delphi-Quellcode:
procedure TCssAttriTLBXFrame.CmbxValueForegroundColorCloseUp(Sender: TObject);
begin
   FActiveAttribut := TAttributsClass(CmbxAttributes.Items.Objects[CmbxAttributes.ItemIndex]);
  Label1.Caption := FActiveAttribut.Name;
//   if Assigned(FActiveAttribut) then
//    FActiveAttribut(FActiveAttribut);
end;
Die Eventpropertys sind wie folgt deklariert:
Delphi-Quellcode:
    property CSSCommentEvent: TCSSCommentEvent read FCSSCommentEvent write FCSSCommentEvent;
    property CssPropertyEvent: TCssPropertyEvent read FCssPropertyEvent write FCssPropertyEvent;
    property CssKeyEvent: TCssKeyEvent read FCssKeyEvent write FCssKeyEvent;
    property CssSpaceEvent: TCssSpaceEvent read FCssSpaceEvent write FCssSpaceEvent;

    property CssStringEvent: TCssStringEvent read FCssStringEvent write FCssStringEvent;
    property CssColorEvent: TCssColorEvent read FCssColorEvent write FCssColorEvent;
    property CssNumberEvent: TCssNumberEvent read FCssNumberEvent write FCssNumberEvent;
    property CssSymbolEvent: TCssSymbolEvent read FCssSymbolEvent write FCssSymbolEvent;

    property CssTextEvent: TCssTextEvent read FCssTextEvent write FCssTextEvent;
    property CssValueEvent: TCssValueEvent read FCssValueEvent write FCssValueEvent;
    property CssUndefPropertyEvent: TCssUndefPropertyEvent read FCssUndefPropertyEvent write FCssUndefPropertyEvent;
    property CssImportantPropertyEvent: TCssImportantPropertyEvent read FCssImportantPropertyEvent write FCssImportantPropertyEvent;
Nun brauche ich ja beim Feuern des Events den Eventtip, der gefeuert werden soll. Bloss: Wie bestimme ich den? Dazu brauche ich ja die Instanz meiner Attributklasse.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  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 08:59 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