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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2011, 22:58   #1
Giku
Пользователь
 
Регистрация: 30.12.2009
Сообщений: 53
Сообщение СозданиЕ определенного количество кнопок

подскажите пожалуйста как создать "n" полей (n - число из Edit'а)
я так думаю это надо сделать циклом
что то вроде этого
Код:
for i:=0 to n do
begin
edt[i]:=TEdit.Create(Form1);
edt[i].Parent:=Form1;
edt[i].Top:=Form1.Height div 2+20;
edt[i].Left:=120;
edt[i].Width:=100;
edt[i].Height:=25;
edt[i].Text:='pla';
end;
правильно ли это? и как правильно объявить переменную "edt" ???

Последний раз редактировалось Giku; 04.11.2011 в 23:04.
Giku вне форума Ответить с цитированием
Старый 04.11.2011, 23:49   #2
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Код:
for i:=0 to n do
begin
Edit:=TEdit.Create(Form1);
Edit.Parent:=Form1;
Edit.Top:=(Form1.Height div 2+20)+(n*Edit.height);
...
end;
Зачем создавать массив?
kettanaito вне форума Ответить с цитированием
Старый 05.11.2011, 00:54   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

В названии темы - "Создание определенного количество кнопок".
В первом сообщении - "как создать "n" полей".
В коде - динамическое содание компонентов TEdit...

Вы уж определитесь, что вам нужно ?
mihali4 вне форума Ответить с цитированием
Старый 05.11.2011, 01:04   #4
Giku
Пользователь
 
Регистрация: 30.12.2009
Сообщений: 53
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Вы уж определитесь, что вам нужно ?
поля ввода
сначала мне показалось что легче объяснить на кнопках (суть та же)
но потом заметил что в коде Едит

Цитата:
Сообщение от kettanaito Посмотреть сообщение
Код:
for i:=0 to n do
begin
Edit:=TEdit.Create(Form1);
Edit.Parent:=Form1;
Edit.Top:=(Form1.Height div 2+20)+(n*Edit.height);
...
end;
Зачем создавать массив?
что означают "..." ??

и как программа про именует поля ввода ? (Edit1, Edit2, ... или как то так)

Последний раз редактировалось Stilet; 05.11.2011 в 11:19.
Giku вне форума Ответить с цитированием
Старый 05.11.2011, 01:37   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
правильно ли это?
Правильно.
Цитата:
и как правильно объявить переменную "edt" ???
Код:
var
  edt : array[0..n] of TEdit;
Прик вне форума Ответить с цитированием
Старый 05.11.2011, 07:42   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

n не известно на этапе компиляции (цитата : "вводится из эдита"). Надо дин.массив, после ввода пользователем n - установить длину массива. Именовать вам надо их самому, если хотите к ним обращаться, например так :
Код:
edt[i].name := 'edit'+inttostr(i);
Но в общем случае, вам не надо будет их не именовать, не заводить массив, - они и так будут в массиве компонентов формы, и доступ к ним вполне можно сделать оттуда, но с именами конечно удобнее, а с массивом и поиска по компонентам не понадобится.
Ну и деталь : в коде нельзя будет обратиться к данным вот так : Edit1.text , ибо не будет никакого edit1 , а обращаться (в случае с массивом) : edt[1].text
phomm вне форума Ответить с цитированием
Старый 05.11.2011, 10:40   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
Edit:=TEdit.Create(Form1);
Edit.Parent:=Form1;
Зачем второй раз делать сделанное?
p51x вне форума Ответить с цитированием
Старый 05.11.2011, 11:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Надо дин.массив
А еще лучше TObjectList.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2011, 11:31   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Зачем второй раз делать сделанное?
в конструторе задается владелец, а не родитель.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.11.2011, 23:35   #10
Giku
Пользователь
 
Регистрация: 30.12.2009
Сообщений: 53
По умолчанию

все получилось только я вместо

Код:
var
  edt : array[0..n] of TEdit;
прописал
Код:
var
  edt : array[0..20] of TEdit;
а то мне ошибку выдает (я не знаю как объявить "n" )
чем это отличается (мне не нужно будет n>20)
Giku вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество пикселей определенного цвета zih Общие вопросы Delphi 4 20.10.2010 23:57
Создание кнопок Alenkakiss Помощь студентам 4 07.06.2009 18:20
Создание окна при получение определенного пакета GHOST_Kasper Общие вопросы Delphi 5 06.02.2008 13:01
Создание файла определенного типа Македонский Общие вопросы Delphi 12 06.09.2007 11:58
Количество кнопок на форме fuv Общие вопросы Delphi 5 25.04.2007 16:33