Компоненты в рантайме
Как создать компонент в рантайме? в часности нужно создать кнопку задать ей действие.
|
var
MyButton:TButton; begin MyButton:=TButton.create(Form1); MyButton.caption:='Моя кнопка'; |
а чтобы действие какое то выполняла, надо создать процедурку, например,
[code]procedure Deystvie(Sender:TObject); begin ShowMessage('ты нажал кнопку!'); end; ну и потом уже ссылаешься на эту процедуру при событии Onclick созданной кнопки: Код:
myButton.onclick:=deystvie; |
Спасибо, разобрался. Еще одно: эта кнопка должна создаваться в каком-то месте. причем место строго не определено. Нужно определить есть ли на форме еще такие кнопки. Как это организовать?
|
Цитата:
а вообще поиск элементов вот так идёт: Код:
for i:=0 to Componentcount-1 do а потом её искать по этому св-ву.. Код:
for i:=0 to Componentcount-1 do |
сама прога это TmainMenu и чистая форма. Подключаются плагины. Каждый плагин должен автоматически добавлять на форму кнопку по нажатию которой открывается форма из плагина. вот и реализовываю случай когда плагин не первый и кнопку плагина N надо поместить относительно кнопи плагина N-1
|
У Delphi должен быть механизм для автоматического размещения кнопок по форме.
Изобретать велосипед нежелательно. Это раз. Далее, каким образом плагин должен создавать кнопку? Ему передается указатель на главную форму? Это очень плохая идея, так как все плагины придется писать только на Delphi. И в третьих, вы тестировали то, что вам тут посоветовали? У меня есть основания полагать, что все это работать не будет. |
MyButton.parent:=Form1;
MyButton.show; добавьте, а то действительно, не увидите созданных компонент, забыл, когда писал.. |
плагины будут тоже на делфи. специфика программы. Попробовал то что советовали. ругается когда объявляю MyButton: Tbutton;
Long Cat может вы предложите как это будет лучше огранизовать? |
Очень просто - для начала нужно выбросить Delphi куда подальше :-). Нет, ну правда.
С++ в связке с wxWidgets позволяет делать весьма неплохие программы, в том числе и с плагинами. Каким текстом он ругается? |
Часовой пояс GMT +4, время: 07:18. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.