Zitat von
sakura:
Dazu musst Du einen Property-Editor schreiben und registrieren. Hier ein kleines Beispiel, aber leider nicht die Zeit, es großartig zu erklären.
In der Procudure
Register, in welcher Du Deine Komponente registrierst, musst Du
nach deren Registrierung den Editor registrieren.
Delphi-Quellcode:
// Beispiel
RegisterPropertyEditor(TypeInfo(String), TMeineKomponente,
'MeineAuswahl', TComponentMeineAuswahlEditor);
Hier noch die Klasse des Editors:
Delphi-Quellcode:
type
TComponentMeineAuswahlEditor = class(TStringProperty)
public
procedure GetValues(Proc: TGetStrProc); override;
function GetAttributes: TPropertyAttributes; override;
end;
function TComponentMeineAuswahlEditor.GetAttributes: TPropertyAttributes;
begin
// the property editor will provide a sorted list of possible values
Result := [paValueList, paSortList];
end;
procedure TComponentMeineAuswahlEditor.GetValues(Proc: TGetStrProc);
begin
// for each possibility call proc with the string
Proc('Wert 1');
Proc('Wert 2');
Proc('Wert 3');
Proc('Wert 4');
Proc('Wert 5');
Proc('Wert 6');
end;
...
...
So, das hab ich gleich mal versucht. Hab die "DesignIntf" eingebunden und meine Proc Register sieht so aus:
Code:
procedure Register;
begin
RegisterComponents('QuickRep 4 (SK)',[TSKQRAdressLabel]);
RegisterPropertyEditor(typeinfo(string), TSKQRAdressLabel, 'Strings', TAdressLabelPropertyEditor);
end;
Als ich dann den Type "TAdressLabelPropertyEditor" deklarieren wollte ging es nicht. Der Code:
Code:
type TAdressLabelPropertyEditor = class(TStringProperty)
public
procedure GetValues(Proc: TGetStrProc); override;
function GetAttributes: TPropertyAttributes; override;
end;
Problem: Der Type "TStringProperty" ist undefiniert. Hab zwar die
Unit gefunden (DesignEditors.pas) aber wenn ich die einbinde, findet er in der
Unit DesignEditors.pas die Datei "Proxies.dcu /.pas" nicht. Was soll ich machen?? Kann die Datei nirgends finden
Frage: Reicht das was du geschrieben hast um ne Property vom Typ String auszulesen und zu schreiben?