Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
946 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Designeditor - Kein Menü , Keine Compo im OI

  Alt 15. Jan 2007, 21:40
Hallo,

ich habe eine Compo geschrieben, ähnlich der ToolBar(Win32). Nun möchte ich, das über die rechte
Maustaste und einen entsprechenden Menü-Eintrag die Buttons hinzugefügt werden können, um sie bei
Auswahl im OI zu bearbeiten.

Eigendlich kein Problem dachte ich, aber irgendwie will es nicht so, wie es soll;-(

Vielleicht könnt ihr ja mal schauen:

Delphi-Quellcode:
type
  TExToolButtonProperty = class(TComponentProperty)
  public
    procedure Edit; override;
  end;

  TExButtonEditor = class(TDefaultEditor)
  protected
    procedure EditProperty(const PropertyEditor: IProperty;
      var Continue: Boolean); override;
  public
    procedure ExecuteVerb(Index: Integer); override;
    function GetVerb(Index: Integer): string; override;
    function GetVerbCount: Integer; override;
  end;

procedure Register;

implementation


procedure Register;
begin
  RegisterComponents('ExTools', [TExToolBar]);
  RegisterPropertyEditor(TypeInfo(TExToolButton), nil, '', TExToolButtonProperty);
end;

{ TExToolButtonProperty }

procedure TExToolButtonProperty.Edit;
var
  ETB : TExToolButton;
begin
  if (GetComponent(0) is TExToolBar) then
  begin
    ETB := TexToolButton.Create(TExToolBar(GetComponent(0)));
    ETB.Parent := TExToolBar(GetComponent(0));
    TExToolBar(GetComponent(0)).InsertButton(ETB);
  end;
end;

{ TExButtonEditor }

procedure TExButtonEditor.EditProperty(const PropertyEditor: IProperty; var Continue: Boolean);
begin
  if PropertyEditor.GetName = 'TExToolButtonPropertythen
  begin
    PropertyEditor.Edit;
    Continue := False;
  end;
end;

procedure TExButtonEditor.ExecuteVerb(Index: Integer);
begin
  if Index = 0 then Edit;
end;

function TExButtonEditor.GetVerb(Index: Integer): string;
begin
  if Index = 0 then
    Result := 'ExToolButton hinzufügen'
  else Result := '';
end;

function TExButtonEditor.GetVerbCount: Integer;
begin
  Result := 1;
end;

end.
Für Hinweise wie immer dankbar,

Alter Mann
  Mit Zitat antworten Zitat