Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/48: Рейтинг темы: голосов - 48, средняя оценка - 4.56
 Аватар для Gus
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364

Создание кнопок и элементов в момент работы программы.

01.10.2011, 10:18. Показов 10125. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. У меня возникла вот такая вот задача. Мне нужно во время выполнения программы, создать кнопку, нажатием 1 кнопки, и при повторном нажатии еще одну кнопку. Какой функцией можно воспользоваться что бы создавать элементы во время выполнения программы, и лучше б универсальный способ..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2011, 10:18
Ответы с готовыми решениями:

Создание кнопок во время работы программы
Перед началом работы программы я не знаю сколько в виджете у меня будет кнопок. Возможно 1 кнопка, возможно 5, а возможно 100 кнопок. При...

Выполнение кода в определенный момент от начала работы программы
Доброго времени суток! Прошу помощи! Как реализовать программу которая отсчитывает время работы от запуска программы (t) и в разные...

Избежание зависания формы в момент работы запущенной ею программы
В цикле вызываю внешнюю программу для обработки моих файлов. При выполнении этого цикла подвисает материнская программа - ждет отклика от...

9
247 / 205 / 26
Регистрация: 03.02.2009
Сообщений: 785
01.10.2011, 10:23
У кнопки (и других компонентов тоже) есть метод CREATE.
Почитаейте про это!
1
 Аватар для Gus
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364
01.10.2011, 10:29  [ТС]
Цитата Сообщение от o-user Посмотреть сообщение
У кнопки (и других компонентов тоже) есть метод CREATE.
Почитаейте про это!
А, руссифицированные справки по методу CREATE есть ?. или хотя бы не могли бы вы привести мне пример исходника, а я по аналогиии сделаю
0
247 / 205 / 26
Регистрация: 03.02.2009
Сообщений: 785
01.10.2011, 10:41
Вот пример:

>Q33: Есть на форме Edit и Button, юзер вводит в Edit какую-нибудь цифирь
> (например 20 ), давит на Button и на форме появляется 20 Label-ов.
> Как можно сие реализовать? (создание компонента в runtime)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int count=Edit1->Text.ToInt();
 
    TLabel *lbl;
 
    for(int i=0;i<count;i++)
    {
        lbl=new TLabel(this);
        lbl->Parent=this;
        lbl->Caption=AnsiString("Label")+AnsiString(i);
        lbl->Top=i*20;
        lbl->Left=10;
    }
}
А вот пример для Delphi (может пригодиться):
http://decoding.narod.ru/pract... ntime.html
2
 Аватар для Gus
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364
01.10.2011, 10:42  [ТС]
Благодарствую) счас попробую что нибуть накосячить)
На дельфи не прогаю, но в принципе поможет понять алгоритм действий
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
01.10.2011, 11:05
Вот пример создания кнопки на форме!

.h
C++
1
void __fastcall CreateButton(unsigned short index, AnsiString caption);
.cpp
C++
1
2
3
4
5
6
7
8
void __fastcall TMainForm::CreateButton(unsigned short index, AnsiString caption)
{
    TSpeedButton* b = new TSpeedButton(MainForm);
    b->Parent = MainForm;
        b->Caption = caption;
    b->Name = "Button"+IntToStr(index);
    b->OnClick = Button1Click;    // нужно присвоить событие статически созданного объекта
}
Вызов:
C++
1
CreateButton(2, "Новая кнопка");

Если динамически создавать Button's то лучше на панели!
Потому что удобно настраивается выравнивание!

Добавлено через 12 минут
В обработчике Button1Click по Sender можешь проверять какая кнопка вызвала событие и принимать определенные действия
К примеру:

C++
1
2
3
4
5
6
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
    if (((TComponent*)Sender)->Name == "Button2") {
        // Твои действия
    }
}
2
 Аватар для Gus
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364
01.10.2011, 11:06  [ТС]
Цитата Сообщение от __bool Посмотреть сообщение
Вот пример создания кнопки на форме!

.h
C++
1
void __fastcall CreateButton(unsigned short index, AnsiString caption);
.cpp
C++
1
2
3
4
5
6
7
8
void __fastcall TMainForm::CreateButton(unsigned short index, AnsiString caption)
{
    TSpeedButton* b = new TSpeedButton(MainForm);
    b->Parent = MainForm;
        b->Caption = caption;
    b->Name = "Button"+IntToStr(index);
    b->OnClick = Button1Click;    // нужно присвоить событие статически созданного объекта
}
Вызов:
C++
1
CreateButton(2, "Новая кнопка");

Если динамически создавать Button's то лучше на панели!
Потому что удобно настраивается выравнивание!

Добавлено через 12 минут
В обработчике Button1Click по Sender можешь проверять какая кнопка вызвала событие и принимать определенные действия
К примеру:

C++
1
2
3
4
5
6
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
    if (((TComponent*)Sender)->Name == "Button2") {
        // Твои действия
    }
}
Во спасибо
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.10.2011, 01:47
Если динамически создавать Button's то лучше на панели!
Потому что удобно настраивается выравнивание!
чем удобно ?
0
0 / 0 / 0
Регистрация: 06.03.2015
Сообщений: 4
22.05.2017, 23:55
Цитата Сообщение от __bool Посмотреть сообщение
Вот пример создания кнопки на форме...
Вот спасибо!!! Почти то, что я искал!!!

По этому примеру создал я кнопку и Label. Вывел в Label надпись. С этим все понятно.
Подскажите пожалуйста, как сделать так, чтобы при нажатии на созданную кнопку менялся текст в созданном Label? Не понятно как обратиться к свойствам созданного Label.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
23.05.2017, 00:10
У лейбла есть имя. А кроме того, у кнопки есть свойство Tag. Так что пути - два:
1) по имени лейбла найти его через FindComponent, и обращаться к свойствам
2) особенно если нужен доступ к одному-единственному созданному в рантайме компоненту: в Tag кнопки занести указатель на лейбл, а потом, при клике на эту самую кнопку, извлекать из Tag-а этот указатель, и работать со свойствами/методами объекта, на который он указывает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2017, 00:10
Помогаю со студенческими работами здесь

Как отследить содержимое переменных в тот или иной момент работы программы?
Добрый день! Просьба подсказать ответ. Есть код. Хочу отследить содержимое переменных в тот или иной момент работы программы. Понятно...

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

Создание программы для работы с графами
Мужики, помогите! Пишу курсовую по графам! Нужны идеи!)) Форму, основной код написал! Сохраняет, рисует, печатает, и т.д. Могу выслать...

Создание массивов в процессе работы программы
Итак есть папка с парой файлов-массивов. в будущем предполагается произвольное изменение количества файлов и их размера. ...

Создание глобальной переменной по ходу работы программы
И так, мне нужно создать глобальную переменную в ходе исполнения программы. На самом деле всё чуть сложнее, нужно создать глобальный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru