Конференция "Компоненты" » Помогите разобраться с IDesigner и TIEditorInterface [D7, WinXP]
 
  • Doma (14.09.06 23:29) [0]
    Всем привет!
    Есть проблема: создал форму с кнопкой:

     TForm1 = class(TForm)
       Button1: TButton;
       procedure FormClose(Sender: TObject; var Action: TCloseAction);
       procedure Button1Click(Sender: TObject);
     public
       FOwner: TForm;
       FDesigner: IDesigner;
       FEditorInterface: TIEditorInterface;
     end;

    {===============================================}

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
     Action := caFree;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     // СЮДА вот как раз и надо будет вставить текст.
     // Как мне кажется:
     // Через FDesigner надо вставить обработчик на метода
     // Через FEditorInterface надо вставить текст в обработчик
     // но как это сделать? не представляю :(
    end;



    Описал свою компоненту:

    TMyComponent = class(TComponent)



    И накидал редактор для компонеты:

     TMyPropEditor = class(TComponentEditor)
       procedure ExecuteVerb(Index: Integer); override;
       function GetVerb(Index: Integer): string; override;
       function GetVerbCount: Integer; override;
     end;

    {===============================================}

    procedure TMyPropEditor.ExecuteVerb(Index: Integer);
    var
     myComponent: TMyComponent;
     sName: string;
     
    begin
     sName := ToolServices.GetCurrentFile;
     sName := Copy(sName,1,length(sname)-4)+'.pas';
     myComponent := Component as TMyComponent;
     with TForm1.Create(application) do begin
       FOwner := TForm(myComponent.Owner);
       FDesigner := self.Designer;
       FFEditorInterface := ToolServices.GetModuleInterface(sName).GetEditorInterface;
       Show;
     end;
    end;

    function TMyPropEditor.GetVerb(Index: Integer): string;
    begin
     case Index of
       0: Result := 'MY Editor';
       else Result := '';
     end;
    end;

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



    Зарегистрировал все это:

    procedure Register;
    begin
     RegisterComponents('Sample',[TMyComponent]);
     RegisterComponentEditor(TMyComponent, TMyPropEditor);
    end;



    В итоге получили новый компонет с редактором в виде формы с кнопкой.
    Задача такова - при клике по кнопке должен добавлятся в код обработчик события OnCreate (тоже самое происходит если в Object Inspector->Events->двойной клик по пустому полю рядом с OnCreate) и в этот обработчик вставляться какой-нибудь текст.
    И пожалуйста не надо спрашивать, зачем это? Если можете помогите с решением, а демогогию разводить не надо.
    Заранее огромное всем спасибо!
  • Phoroon~ © (16.09.06 20:57) [1]
    Редактор компонент тебе не поможет для создания служебного кода.
    Нужно взаимодействовать с IDE.
    Создавай OTA эксперта и через Notifer связывай со средой.
  • имя (21.03.07 18:07) [2]
    Удалено модератором
  • имя (21.03.07 21:00) [3]
    Удалено модератором
  • имя (22.03.07 14:17) [4]
    Удалено модератором
  • имя (23.03.07 06:54) [5]
    Удалено модератором
  • имя (23.03.07 23:20) [6]
    Удалено модератором
  • имя (24.03.07 09:31) [7]
    Удалено модератором
  • имя (24.03.07 15:51) [8]
    Удалено модератором
  • имя (24.03.07 15:56) [9]
    Удалено модератором
  • имя (25.03.07 10:01) [10]
    Удалено модератором
  • имя (25.03.07 10:14) [11]
    Удалено модератором
 
Конференция "Компоненты" » Помогите разобраться с IDesigner и TIEditorInterface [D7, WinXP]
Есть новые Нет новых   [134427   +38][b:0][p:0.002]