Динамическое создание элементов управления

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

Динамическое создание элементов управления

Сообщение Mirror » 30.03.2021 02:07:13

Подскажите, пожалуйста, как динамически создавать компоненты на форме.

Я не могу понять, что присвоить свойству frame (а если его не установить, то элементы управления выглядят неправильно).

Вот моя попытка:
Код: Выделить всё
procedure tmainfo.mainformcreated(const sender: TObject);
begin
  dynedit := tedit.Create(self);
  dynedit.bounds_cx := 100;
  dynedit.bounds_cy := 21;
  { Если скопировать frame из созданного в IDE teditʼа, то всё работает,
    но хотелось бы понять, как его создавать без IDE. }
  dynedit.frame := tedit1.frame; //Чем это заменить???
  insertwidget(dynedit, makepoint(300, 10));
  dynedit.show;
end;
Mirror
новенький
 
Сообщения: 49
Зарегистрирован: 22.05.2005 12:02:48
Откуда: Порту

Re: Динамическое создание элементов управления

Сообщение Alex2013 » 30.03.2021 08:30:11

Что за frame ? В стандартном tedit такого поля нет.
Может не frame а BorderStyle ? Тогда например так dynedit.BorderStyle:=bsNone;
Зы
Возможно это у вас Дельфи, а не Лазарус ?
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Динамическое создание элементов управления

Сообщение Roland » 30.03.2021 09:52:03

Until fredvs has finished registering, here is his answer:

Код: Выделить всё
  //dynedit.frame := tedit1.frame; //Чем это заменить???
  dynedit.frame := tcaptionframe.create(iscrollframe(self));
  dynedit.frame.caption := 'Hello';

I tested it (with a tintegeredit). It works, but the component doesn't look exactly like the one created in designer. :?
Вложения
screenshot.png
screenshot.png (8.88 КБ) Просмотров: 15888
Аватара пользователя
Roland
новенький
 
Сообщения: 23
Зарегистрирован: 23.03.2021 16:27:18
Откуда: France


Re: Динамическое создание элементов управления

Сообщение Alex2013 » 30.03.2021 16:43:37


Ясно ! Извиняюсь за невнимательность ( не обратил внимание на то что это подфорум MSEide + MSEgui) :idea:
Alex2013
долгожитель
 
Сообщения: 3048
Зарегистрирован: 03.04.2013 11:59:44

Re: Динамическое создание элементов управления

Сообщение Mirror » 30.03.2021 23:38:08

Roland писал(а):Until fredvs has finished registering, here is his answer:

Код: Выделить всё
  //dynedit.frame := tedit1.frame; //Чем это заменить???
  dynedit.frame := tcaptionframe.create(iscrollframe(self));
  dynedit.frame.caption := 'Hello';


Спасибо большое! Сработало.
Merci beaucoup! It worked.

Я также перешёл по ссылке и увидел ответ fred'а'vs про создание объекта face, dynedit.face := tface.create(iface(self)); — он мне тоже пригодится в будущем. Спасибо!
I've also followed the link and saw fredvs' answer about creating the face object, dynedit.face := tface.create(iface(self)); — it will be useful for me too. Thanks!

Roland писал(а):I tested it (with a tintegeredit). It works, but the component doesn't look exactly like the one created in designer. :?

Как ответил fredvs на английском форуме, нужно ещё установить значение свойства levelo.
As fredvs answered, one also needs to set the value for the levelo property.

Вот что у меня получилось в итоге:
Here's what I've ended up with:
Код: Выделить всё
procedure tmainfo.mainformcreated(const sender: TObject);
begin
  dynedit := tedit.Create(self);
  dynedit.bounds_cx := 100;
  dynedit.bounds_cy := 21;
  dynedit.frame := tcaptionframe.create(iscrollframe(self));
  dynedit.frame.levelo := -2;
  insertwidget(dynedit, makepoint(300, 10));
  dynedit.show;
end;


Я добавил эту информацию в вики, потому что мне кажется, что она может быть полезна не только мне.
I have added this information to the wiki, because I think it can be useful to other people, too.
Mirror
новенький
 
Сообщения: 49
Зарегистрирован: 22.05.2005 12:02:48
Откуда: Порту

Re: Динамическое создание элементов управления

Сообщение Roland » 31.03.2021 00:31:03

Mirror писал(а):Merci beaucoup!

De rien. :wink:

Thank you for the example about initializing the levelo property.

Mirror писал(а):I have added this information to the wiki, because I think it can be useful to other people, too.

Good!
Аватара пользователя
Roland
новенький
 
Сообщения: 23
Зарегистрирован: 23.03.2021 16:27:18
Откуда: France

Re: Динамическое создание элементов управления

Сообщение Roland » 10.02.2024 10:51:09

Full project source code uploaded here.
Аватара пользователя
Roland
новенький
 
Сообщения: 23
Зарегистрирован: 23.03.2021 16:27:18
Откуда: France


Вернуться в MSEide + MSEgui

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

Рейтинг@Mail.ru