Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 13.03.2011, 10:22   #1 (permalink)
Fenix
404
 
Аватар для Fenix
 
Регистрация: 10.01.2010
Сообщений: 1,749
Записей в дневнике: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3868
Post Компоненты в рантайме

Как создать компонент в рантайме? в часности нужно создать кнопку задать ей действие.
Fenix вне форума   Ответить с цитированием

Старый 13.03.2011, 10:22
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Если воспользоваться поиском, то можно найти много полезной информации

Компоненты
Электронные компоненты.
SMD компоненты
Компоненты и температура
Delphi библиотеки и компоненты

Старый 13.03.2011, 11:20   #2 (permalink)
Hakmax
Member
 
Регистрация: 09.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

var
MyButton:TButton;
begin
MyButton:=TButton.create(Form1);
MyButton.caption:='Моя кнопка';
Hakmax вне форума   Ответить с цитированием
Старый 13.03.2011, 11:23   #3 (permalink)
Hakmax
Member
 
Регистрация: 09.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а чтобы действие какое то выполняла, надо создать процедурку, например,
[code]procedure Deystvie(Sender:TObject);
begin
ShowMessage('ты нажал кнопку!');
end;

ну и потом уже ссылаешься на эту процедуру при событии Onclick созданной кнопки:
Код:
myButton.onclick:=deystvie;
Hakmax вне форума   Ответить с цитированием
Старый 13.03.2011, 12:20   #4 (permalink)
Fenix
404
 
Аватар для Fenix
 
Регистрация: 10.01.2010
Сообщений: 1,749
Записей в дневнике: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3868
По умолчанию

Спасибо, разобрался. Еще одно: эта кнопка должна создаваться в каком-то месте. причем место строго не определено. Нужно определить есть ли на форме еще такие кнопки. Как это организовать?
Fenix вне форума   Ответить с цитированием
Старый 13.03.2011, 12:59   #5 (permalink)
Hakmax
Member
 
Регистрация: 09.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Нужно определить есть ли на форме еще такие кнопки.
такие это какие? созданные в ран тайме? или обычные..
а вообще поиск элементов вот так идёт:
Код:
for i:=0 to Componentcount-1 do
 if Components[i].classname='TButton' then что-то делаем..
или же если кнопок всяких много, а надо найти одну-единственную, то можно у неё изменить св-во Tag..
а потом её искать по этому св-ву..
Код:
for i:=0 to Componentcount-1 do
 if Components[i].tag=2 then что-то делаем..
Hakmax вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 13.03.2011, 14:03   #6 (permalink)
Fenix
404
 
Аватар для Fenix
 
Регистрация: 10.01.2010
Сообщений: 1,749
Записей в дневнике: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3868
По умолчанию

сама прога это TmainMenu и чистая форма. Подключаются плагины. Каждый плагин должен автоматически добавлять на форму кнопку по нажатию которой открывается форма из плагина. вот и реализовываю случай когда плагин не первый и кнопку плагина N надо поместить относительно кнопи плагина N-1
Fenix вне форума   Ответить с цитированием
Старый 13.03.2011, 14:29   #7 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

У Delphi должен быть механизм для автоматического размещения кнопок по форме.
Изобретать велосипед нежелательно. Это раз.

Далее, каким образом плагин должен создавать кнопку? Ему передается указатель на главную форму? Это очень плохая идея, так как все плагины придется писать только на Delphi.

И в третьих, вы тестировали то, что вам тут посоветовали? У меня есть основания полагать, что все это работать не будет.
Long Cat вне форума   Ответить с цитированием
Старый 13.03.2011, 14:56   #8 (permalink)
Hakmax
Member
 
Регистрация: 09.03.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

MyButton.parent:=Form1;
MyButton.show;
добавьте, а то действительно, не увидите созданных компонент, забыл, когда писал..
Hakmax вне форума   Ответить с цитированием
Старый 13.03.2011, 15:06   #9 (permalink)
Fenix
404
 
Аватар для Fenix
 
Регистрация: 10.01.2010
Сообщений: 1,749
Записей в дневнике: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3868
По умолчанию

плагины будут тоже на делфи. специфика программы. Попробовал то что советовали. ругается когда объявляю MyButton: Tbutton;

Long Cat может вы предложите как это будет лучше огранизовать?
Fenix вне форума   Ответить с цитированием
Старый 13.03.2011, 15:12   #10 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Очень просто - для начала нужно выбросить Delphi куда подальше :-). Нет, ну правда.

С++ в связке с wxWidgets позволяет делать весьма неплохие программы, в том числе и с плагинами.

Каким текстом он ругается?
Long Cat вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:08.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.