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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2010, 13:12   #1
Serebah
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 44
По умолчанию Создание компонентов Run Time

Помогите пожалуйста. У меня на форме есть Edit1 и кнопка. Как реализовать чтоб при нажатии на кнопку создавался TEdit ниже уже имеющегося а при повторном нажатии на кнопку еще один ниже созданного, при третьем нажатии еще один ниже и так далее.
Как это реализовать?
Serebah вне форума Ответить с цитированием
Старый 08.12.2010, 13:24   #2
Alexei91
Заблокирован
Форумчанин
 
Аватар для Alexei91
 
Регистрация: 30.12.2009
Сообщений: 544
По умолчанию

Код:
var Edit2: TEdit;
               i: Integer;   
begin
  for i := 1 to 10 do
  begin 
    Edit2 := TEdit.Create(Edit1);
    Edit2.Name := 'Edit' + IntToStr(i); //возможно эта строчка не скомпил-ся
    Edit2.Left := ...;
    Edit2.Top := ...;
    Edit2.Visible := True; 
      ...
  end;
end;
Если не будет работать - http://www.drkb.ru/
Темы для WordPress. Русские WordPress шаблоны

Последний раз редактировалось Alexei91; 08.12.2010 в 13:29.
Alexei91 вне форума Ответить с цитированием
Старый 08.12.2010, 14:00   #3
Serebah
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 44
По умолчанию

Блин. Создает только один компонент. А при повторном нажатии на кнопку ниже еще один не создается.
Serebah вне форума Ответить с цитированием
Старый 08.12.2010, 14:10   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Массив Edit-ов содзай. И кликай, только цикл убери
Код:
mas:array[1..10] of TEdit;

procedure TForm1.RzBitBtn2Click(Sender: TObject);
var
  i: integer;
begin
  for i := 1 to 10 do
  begin
    Mas[i] := TEdit.Create(Form1);
    Mas[i].parent := form1;
    Mas[i].Top := 10 + i * 21;
    Mas[i].Left := 10;
    Mas[i].Text := 'Edit' + inttostr(i);
  end;
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 08.12.2010, 14:24   #5
Serebah
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 44
По умолчанию

Цикл убрал, но при нажатии на кнопку выскакивает окошечко с ошибкой

Код:
var
  Mas : array [1..10] of TEdit;
  i: integer;
  begin
    Mas[i] := TEdit.Create(self);
    Mas[i].parent := form1;
    Mas[i].Top := 10 + i * 120;
    Mas[i].Left := 240;
    Mas[i].Text := 'Edit' + inttostr(i);
Компилятор пишет, что переменная і не установлена. Как ее установить надо?

Последний раз редактировалось Stilet; 08.12.2010 в 19:18.
Serebah вне форума Ответить с цитированием
Старый 08.12.2010, 14:42   #6
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Эх...совсем еще зеленый. Тебе нужно с теорией динамической инициализации лучше разобраться. Ладно, как то вот так:

Код:
...
Mass: array of TEdit; {создаем динамический массив эдитов}
...
SetLength(Mass,0); {инициализируем динамический массив}
...
SetLength(Mass,length(Mass)+1); {увеличиваем размер массива на 1}
Mass[length(Mass)-1]:=TEdit.Create(nil); {создаем эдит}
with Mass[length(Mass)-1] do {инициализируем эдит}
begin
  Parent:=Form1; {"родитель"}
  Top:=10+index*50; {расположение по Y}
  Left:=240; {расположение по X}
  ...
end;
...
PS могут быть ошибки, не тестил...
В планах порабощение вселенной...

Последний раз редактировалось zumm; 08.12.2010 в 14:47.
zumm вне форума Ответить с цитированием
Старый 08.12.2010, 15:05   #7
Serebah
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 44
По умолчанию

А в расположении по Y index это что?
Serebah вне форума Ответить с цитированием
Старый 08.12.2010, 15:07   #8
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

эм...переклино малость, сори это как бы номер текущего элемента, можешь заменить его на length(Mass)
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 08.12.2010, 15:16   #9
Serebah
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 44
По умолчанию

Все сделал как написано, только создает один Эдит а при повторном нажатии на кнопку еще ниже не создает второй.
Serebah вне форума Ответить с цитированием
Старый 08.12.2010, 15:30   #10
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

покажи что ты сделал

PS предвкушая ошибку - ты написал Mass: array of TEdit; и/или SetLength(Mass,0); в код кнопки...
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Run-Time Check Failure #3 Xe[N]o Общие вопросы C/C++ 2 27.11.2010 09:01
Заполнение cxLookupComboBox в run time fake2 БД в Delphi 0 17.05.2010 08:31
ActionManager - работа в run - time chingiz Компоненты Delphi 0 10.10.2009 08:48
Ошибка Run-Time error 13 DEZuv Microsoft Office Access 0 03.04.2009 12:25
При создание edit, в режиме run-time, нет стандартного контекстного меню slips Общие вопросы Delphi 6 08.11.2008 17:05