Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Somny
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 13
1

Получение значений параметров динамически созданных компонентов

13.12.2013, 14:26. Просмотров 1843. Ответов 25
Метки нет (Все метки)

Имеется следующая проблема: динамически создаю компонент groupbox, с несколькими Label и кнопкой. Необходимо редактировать эти элементы, однако обратиться к ним напрямую для меня затруднительно. Хотелось бы узнать: есть ли возможность получать значения элементов созданного groupbox по щелчку на этот groupbox? Данные по идее должны переноситься из выбранного groupbox на заранее созданные статические Edit 1, Edit 2 и тому подобное. А затем как сохранить их обратно в тот же Groupbox из которого они были получены?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 14:26
Ответы с готовыми решениями:

Получение значений(Text) из динамически созданных элементов(Edit)
Добрый день! Описание программы Есть одна проблемка. Есть Form1 на ней...

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

Удаление динамически созданных компонентов
if not globrazr then Trichedit(PopupMenuforrichedit.PopupComponent).Free else...

Пересечение динамически созданных компонентов
Смоделировал ситуацию на обычно созданных компонентах, на картинке шейпы и мне...

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

25
angstrom
2471 / 1847 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
16.12.2013, 01:56 21
Delphi
1
...FindComponent(a.Name + 'LabSurname'...
Что таким способом должно быть найдено? Переменная a не определена.
0
Somny
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 13
16.12.2013, 02:01  [ТС] 22
Цитата Сообщение от angstrom Посмотреть сообщение
Что таким способом должно быть найдено?
Пытаюсь таким способом получить название groupbox, созданного динамически, по клику на него.

Добавлено через 2 минуты
Я хочу сделать что-то, обратное этому.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
 grp:=TGroupBox.Create(Form1);
          grp.Parent:=Form1;
          grp.Name:='grpbox'+IntToStr(i);
          grp.Caption:='панель'+IntToStr(I);
          grp.Color:=clred;
          grp.OnDblClick:=GroupBoxsClick;   
 
          LabSurname:=TLabel.Create(Form1);
          LabSurname.Parent:=grp;
          LabSurname.Name:= 'grpbox'+IntToStr(i)+'LabSurname';
          LabSurname.Top:=25;
          LabSurname.Left:=10;
          LabSurname.Caption:=Edit1.Text;
0
angstrom
2471 / 1847 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
16.12.2013, 02:11 23
А по коду можно понять, что имя TLabel-а. Если GroupBox-а, то
Delphi
1
2
3
4
procedure TForm1.GroupBoxsClick(Sender: TObject);
begin
   Edit1.Text := (Sender as TGroupBox).Caption;  
end;
1
northener
пофигист широкого профиля
3429 / 2328 / 631
Регистрация: 15.07.2013
Сообщений: 13,796
16.12.2013, 02:14 24
Цитата Сообщение от Somny Посмотреть сообщение
Выдаёт непонятную ошибку
Чего ж тут непонятного? FindComponent(a.Name + 'LabSurname') возвращает nil ибо a неопределено.
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.GroupBoxsClick(Sender: TObject);
var 
  i : Integer;
begin
  for i:=0 to TGroupBox(Sender).ControlCount-1 do
    if (TGroupBox(Sender).Controls[i] is TLabel) 
      and (TLabel(TGroupBox(Sender).Controls[i]).Name = TGroupBox(Sender).Name+'LabSurname')
    then Edit1.Text:=TLabel(TGroupBox(Sender).Controls[i]).Caption;
1
Somny
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 13
16.12.2013, 02:15  [ТС] 25
Цитата Сообщение от angstrom Посмотреть сообщение
А по коду можно понять, что имя TLabel-а.
Да, просто я связал имя GroupBox'а и имя Label'ов, которые в нём находятся. Я думал, что с помощью FindComponent смогу получить значение name у групбокса, сложить его с именем label'a, и получить его Caption.
0
angstrom
2471 / 1847 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
16.12.2013, 02:20 26
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.GroupBoxsClick(Sender: TObject);
var
  lbl : TLabel;
begin
  lbl := TLabel(FindComponent((Sender as TGroupBox).Caption + 'LabSurname'));
  if lbl <> NIL then
    Edit1.Text := lbl.Caption;
end;
1
16.12.2013, 02:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2013, 02:20

Выравнивание для динамически созданных компонентов
Есть кнопка, которая создает объект и заносит его в поле типа: Tlist&lt;TObject&gt;...

Удаление динамически созданных компонентов TEdit с формы
Здравствуйте, помогите пожалуйста с удалением компонентов TEdit с формы. Есть...

Удаление динамически созданных компонентов (panel, image, label)
Всем привет. У меня есть panel который создаётся внутри ScrollBox вместе с...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru