Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: 1 Frage zur Komponenten-Erstellung

  Alt 3. Dez 2005, 07:48
Wenn Du schon den Vergleich mit TColor heranziehst... Sowas geht nur mit PropertyEditor. Abhängig von deiner Delphi Version sind die aber nicht überall gleich einzusetzen. Dazu mehr gibts hier

Um anzufangen solltest Du deine Karte nicht als Integer auswählen, sondern als String, oder besse noch als eigenen Typ, der nur die gewünschten Werte erlaubt.

Hier mal ein Grundgerüst, wie das mit den PropertyEditors geht

Delphi-Quellcode:
unit MailTemplateClasses6_reg;

interface

procedure Register ;

implementation
uses classes, MailTemplateClasses6, DesignEditors, DesignIntf, adoint, sysutils,
   olectrls, dialogs ;

type
  TMailFileOpen = class (TPropertyEditor)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
    function GetValue:string; override;
  end ;

procedure Register ;
begin
  RegisterPropertyEditor (TypeInfo(string),TMailTemplateFile,'Filename',TMailFileOpen) ;
end ;

{ TMailFileOpen }

procedure TMailFileOpen.Edit;
var
 OD : TOpenDialog ;
begin
  //inherited;
  OD := TOpenDialog.create (nil) ;
  if OD.Execute then begin
      TMailTemplateFile(GetComponent(0)).Filename := OD.Filename ;
  end ;
end;

function TMailFileOpen.GetAttributes: TPropertyAttributes;
begin
     GetAttributes := [paDialog];
end;

function TMailFileOpen.GetValue: string;
begin
     GetValue := TMailTemplateFile(GetComponent(0)).Filename ;
end;

end.unit Unit1;

interface

implementation

end.
Wichtig ist, dass du Die Unit, in der du deine Komponente (und Propertyeditors) registrierst (Procedure Register) trennst von deiner Komponente. Aber das steht alles sauber erklärt im obigen Link.
  Mit Zitat antworten Zitat