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