Перейти к содержанию
    

Создание своего компонента в делфи

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;

type
  TMyButton = class(TButton)
  private
  public
end;

type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TMyButton;
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

end. 

До настоящего времени не было необходимости в создании собственных компонентов в делфи/лазарусе, теперь захотелось освоить данную тему. Погуглил и решил поэкспериментировать. Создал форму, на которой всего одна кнопка, которую хочу заменить на свою. Для начала решил создать класс TMyButton, полностью наследующий всё от TButton. Программа скомпилировалась, но при запуске всё сломалось. Что не так сделал? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Телепаты в отпуске....
Что сломалось то?

 

Вообще или отдельно писать класс TMyButton и регистрировать его в среде. Тогда станут возможны такие фокусы как вы пишите.
Если же класс объявлен тут же то только создание в рантайме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вынес свою кнопку в отдельный unit
 

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Button2;


type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TMyButton;
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

end.

      Button2:

unit Button2;

{$mode ObjFPC}{$H+}

interface

uses
  Classes, SysUtils, StdCtrls;


type TMyButton = class(TButton)

end;

implementation

end.      

     

image.png

Изменено пользователем ДЕЙЛ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А где регистрация?

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('BlaBlaBla', [TMyButton]);
end;
 

https://thedelphi.ru/les/les90.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю, что разобрался 
image.png.88a4c44b65737572ec75bb82ddfaa28a.png

image.thumb.png.4e3ce991ee835c919a81317b8cebc7ac.png

image.png.fee54633991633c2e04b5ef78bb0860a.png

image.thumb.png.b63ccd9916016ec63916ca8c7068a9d4.png

Далее "Установить выбратое" и перезапустить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...