• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Компоненты в рантайме

  • Автор темы Автор темы Fenix
  • Дата начала Дата начала

Fenix

404
Регистрация
10 Янв 2010
Сообщения
1,749
Реакции
40
Баллы
0
Компоненты в рантайме

Как создать компонент в рантайме? в часности нужно создать кнопку задать ей действие.
 
var
MyButton:TButton;
begin
MyButton:=TButton.create(Form1);
MyButton.caption:='Моя кнопка';
 
а чтобы действие какое то выполняла, надо создать процедурку, например,
Код:
procedure Deystvie(Sender:TObject);
begin
 ShowMessage('ты нажал кнопку!');
end;

ну и потом уже ссылаешься на эту процедуру при событии Onclick созданной кнопки: [code]myButton.onclick:=deystvie;
 
Спасибо, разобрался. Еще одно: эта кнопка должна создаваться в каком-то месте. причем место строго не определено. Нужно определить есть ли на форме еще такие кнопки. Как это организовать?
 
Нужно определить есть ли на форме еще такие кнопки.
такие это какие? созданные в ран тайме? или обычные..
а вообще поиск элементов вот так идёт:
Код:
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 что-то делаем..
 
сама прога это TmainMenu и чистая форма. Подключаются плагины. Каждый плагин должен автоматически добавлять на форму кнопку по нажатию которой открывается форма из плагина. вот и реализовываю случай когда плагин не первый и кнопку плагина N надо поместить относительно кнопи плагина N-1
 
У Delphi должен быть механизм для автоматического размещения кнопок по форме.
Изобретать велосипед нежелательно. Это раз.

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

И в третьих, вы тестировали то, что вам тут посоветовали? У меня есть основания полагать, что все это работать не будет.
 
MyButton.parent:=Form1;
MyButton.show;
добавьте, а то действительно, не увидите созданных компонент, забыл, когда писал..
 
плагины будут тоже на делфи. специфика программы. Попробовал то что советовали. ругается когда объявляю MyButton: Tbutton;

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

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

Каким текстом он ругается?
 
ругается когда объявляю MyButton: Tbutton
как ругается то? ясновидящих нет тут..
вот код рабочий абсолютно, проверял:
Код:
var
  MyButton:TButton;
begin
  MyButton:=TButton.Create(Form1);
  MyButton.Caption:='Кнопка';
  MyButton.Parent:=Form1;
  MyButton.Show;
  MyButton.OnClick:=Deystvie;
end;
 
не поверите он пишет что незнает что такое Tbutton; [Error] Module1.pas(35): Undeclared identifier: 'Tbutton' :)

Long Can я бы выбросил, но дело в том, что это проект финального этапа дистанционной олимпиады и мне его завтра сдавать. обязательное условие это DELPHI.

Р.S: можете подсказать какой-нибудь компилятор под С++ и учебник хороший_
 
Не хватает чего-то в uses. Закинте на форму кнопку, посмотрите, что добавилось в uses.

Среда разработки Code::Blocks. Учебник по синтаксису С++ ... в принципе, достаточно почитать пару примеров кода (хоть на википедии) и решить пару известных вам задач с применением нового языка.
 
УРА!! я сделал это.
 
одно но. кнопки лепятся одна под одной

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

что-то не заметил. по подробнее можно.
 
ну есть же такое свойство у кнопки как top, left, этими параметрами и регулируй положение на форме
 
Назад
Сверху