ДЕЙЛ 31 20 декабря, 2022 Опубликовано 20 декабря, 2022 · Жалоба 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. Программа скомпилировалась, но при запуске всё сломалось. Что не так сделал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 28 20 декабря, 2022 Опубликовано 20 декабря, 2022 · Жалоба Телепаты в отпуске.... Что сломалось то? Вообще или отдельно писать класс TMyButton и регистрировать его в среде. Тогда станут возможны такие фокусы как вы пишите. Если же класс объявлен тут же то только создание в рантайме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ДЕЙЛ 31 20 декабря, 2022 Опубликовано 20 декабря, 2022 (изменено) · Жалоба Вынес свою кнопку в отдельный 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. Изменено 20 декабря, 2022 пользователем ДЕЙЛ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 28 20 декабря, 2022 Опубликовано 20 декабря, 2022 · Жалоба А где регистрация? procedure Register; implementation procedure Register; begin RegisterComponents('BlaBlaBla', [TMyButton]); end; https://thedelphi.ru/les/les90.php Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ДЕЙЛ 31 20 декабря, 2022 Опубликовано 20 декабря, 2022 · Жалоба Создал новый компонент через меню: И запустил: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ДЕЙЛ 31 20 декабря, 2022 Опубликовано 20 декабря, 2022 · Жалоба Думаю, что разобрался Далее "Установить выбратое" и перезапустить Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться