Einzelnen Beitrag anzeigen

Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#5
  Alt 13. Mai 2004, 10:18
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?
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat