Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2015, 22:14   #1
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию Динамическое создание компонентов

На форме имеется ScrollBox1, по нажатию на кнопку, я хочу, что бы создавалась в ScrollBox1 --> GroupBox1, а в нём Edit1 и Button1
но что то у меня идёт не так.... GroupBox1 создаётся нормально, а вот Edit1 и Button1 не создаются в GroupBox1 .... Не пойму в чём проблема ....
Вот код, посмотрите в чём проблема... пожалуйста ... не могу осознать проблему ..
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TGroupBox.Create(ScrollBox1) do
  try
    Parent := ScrollBox1;
    Align := alTop;
    Parentcolor := false;
    ParentBackground := false;
    Color := RGB(random(255),random(255),random(255));
    Caption := 'Вопрос №'+IntToStr(x);
    Name := 'GroupBox'+IntToStr(x);

    with TEdit.Create((FindComponent(Format('GroupBox%d',[x])) as TGroupBox)) do
    try
      Parent := (FindComponent(Format('GroupBox%d',[x])) as TGroupBox);
      Name := 'Edit'+IntToStr(x);
      left := 14;
      top := 24;
      width := 619;
      height := 21;
      anchors := [akLeft,akTop,akRight];
      visible := true;
    except
      ShowMessage('Что то пошло не так в Edit-е');
    end;

    with TButton.Create((FindComponent(Format('GroupBox%d',[x])) as TGroupBox)) do
    try
      Parent := (FindComponent(Format('GroupBox%d',[x])) as TGroupBox);
      Name := 'Button'+IntToStr(x);
      left := 14;
      top := 24;
      width := 619;
      height := 25;
      anchors := [akTop,akRight];
      visible := true;
      Caption := 'Delete';
    except
      ShowMessage('Что то пошло не так в Button-е');
    end;

    x:=x+1;

  except
    ShowMessage('Что то пошло не так в ScrollBox-е');
  end;
end;
Janger вне форума Ответить с цитированием
Старый 22.06.2015, 22:19   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

У-у, вообще эти with не люблю, а тут еще и вложенность. Поди разберись чей это parent. Убрал бы все with что бы не мучать компилятор и явно прописал
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.06.2015, 22:19   #3
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию


Примерно вот такой вид имеет форма
Janger вне форума Ответить с цитированием
Старый 22.06.2015, 22:22   #4
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
У-у, вообще эти with не люблю, а тут еще и вложенность. Поди разберись чей это parent. Убрал бы все with что бы не мучать компилятор и явно прописал
Да я так работал, нормально всё было, пока действительно вложением не начал заниматься ...
Janger вне форума Ответить с цитированием
Старый 22.06.2015, 22:24   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так нельзя что ли
Код:
var xGroupBox: TGroupBox;
      xEdit: TEdit;

  xGroupBox:=TGroupBox.Create(ScrollBox1);
  xGroupBox.Parent:=ScrollBox1;
  ...
  xEdit:=TEdit.Create(xGroupBox);
  xEdit.Parent:=xGroupBox;
  ... и т.д.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.06.2015, 23:14   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

советую написать компонент-наследник от TGroupBox, дочерними элементами которого будут edit & button.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 23.06.2015, 11:54   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от Janger Посмотреть сообщение
Да я так работал, нормально всё было, пока действительно вложением не начал заниматься ...
"Вложения" тут совершенно не при чем. Всё дело в том, что FindComponent это не волшебная палочка, а метод класса наследника TComponent. Теперь вопрос чей метод нужно вызывать в данном случае и чей метод реально вызывается в этом коде?
northener вне форума Ответить с цитированием
Старый 23.06.2015, 14:12   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Повторяю ещё раз:
Цитата:
советую написать компонент-наследник от TGroupBox, дочерними элементами которого будут edit & button.
Будет красиво, быстро и кратко. Вот, например, как у меня:



Поиграйся. Устраивает?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 23.06.2015, 14:15   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Посчитал: ~150 строк кода вместе с комментами и пустыми. 15 минут кодинга.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 26.06.2015, 06:31   #10
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Посчитал: ~150 строк кода вместе с комментами и пустыми. 15 минут кодинга.
Да, весьма не дурно!)
Janger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание компонентов Nagoran Общие вопросы Delphi 13 12.01.2015 20:09
динамическое создание и удаление компонентов obsession144 C# (си шарп) 1 01.04.2014 21:27
Динамическое создание компонентов Delphi Чуть Помощь студентам 3 27.05.2012 20:20
динамическое создание компонентов DOLBY Компоненты Delphi 10 17.10.2010 14:03
Динамическое создание компонентов Nice42ru Помощь студентам 4 03.01.2010 20:51