Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

Мастера, посоветуйте, как сделать например 48 TEdit в цикле,   Найти похожие ветки 

 
Layner ©   (2004-02-26 09:23) [0]

не форме. И потом "смочь" считать значения из каждого..


 
SPIRIT ©   (2004-02-26 09:26) [1]

зачем ?
но всё же: есть конструктор Create


 
HSolo ©   (2004-02-26 09:29) [2]

http://delphi.vitpc.com/asp/viewitem.asp?catalogid=342


 
Anatoly Podgoretsky ©   (2004-02-26 09:30) [3]

Так сделай цикл

for I := 1 to 48 do
begin
Работа с объектами с любым методом идентификации
end;


 
SergP ©   (2004-02-26 09:33) [4]

Делай массив EDIT"ов

var
MyEdit:array[1..48] of TEdit;

....

Procedure EditCreate;
var
i:byte;
begin
for i:=1 to 48 do
begin
MyEdit[i]:=TEdit.Create(self);
... // Здесь устанавливаешь свойства каждого едита

end;
end;

А считать значение n-го эдита сможешь из MyEdit[n].text


 
Layner ©   (2004-02-26 09:41) [5]

С массивом сейчас опробую, как у SergP!
Спасибо всем огромное за помощь!


 
Anatoly Podgoretsky ©   (2004-02-26 09:44) [6]

А зачем три массива и так уже есть два - Compinents и Controls


 
Alex Konshin ©   (2004-02-26 09:44) [7]

Может разумнее все-таки сделать это в каком-нибудь гриде или хотя бы использовать ту же идею? Я говорю про создание TEdit в нужном месте в нужное время.


 
Layner ©   (2004-02-26 09:46) [8]

SergP, а как адресовать Edit"ам, чтобы они сосздавались на форме, т.е. надо установить родителя?

procedure TForm1.Button2Click(Sender: TObject);
var
i:byte;
begin
for i:=1 to 48 do
begin
MyEdit[i]:=TEdit.Create(self);
MyEdit[i].Top:=i*25;
MyEdit[i].Left:=10;
MyEdit[i].Width:=50;
MyEdit[i].Height:=20;
end;
end;


 
Layner ©   (2004-02-26 09:48) [9]

Все понял :)
MyEdit.parent:=MyForm;


 
SergP ©   (2004-02-26 09:49) [10]

MyEdit[i].parent:=Form1;


 
SPIRIT ©   (2004-02-26 09:52) [11]

inc(j,5);
MyEdit[i].Top:=j;


 
SergP ©   (2004-02-26 09:54) [12]

>Anatoly Podgoretsky © (26.02.04 09:44)
>А зачем три массива и так уже есть два - Compinents и Controls

Для того чтобы адресация проще была...ИМХО... Хотя может я чего-то и не знаю как лучше сделать, просто написал как бы возможно сделал я в таком случае.


 
Ega23 ©   (2004-02-26 10:03) [13]

>Anatoly Podgoretsky © (26.02.04 09:44)
>А зачем три массива и так уже есть два - Compinents и Controls
А если ещё Edit"ы есть? Тогла имя надо вводить. Хотя я и так бы его ввёл.


 
Layner ©   (2004-02-26 11:08) [14]

Второй вопрос родился из первого :)
Как можно повесить на все эти элементы один обработчик, например
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in["0".."9", Chr(VK_BACK)]) then key:=#0;
end;

?


 
Vit@ly ©   (2004-02-26 11:12) [15]

К примеру Button1Click
Button1.Visible:= False;


 
SergP ©   (2004-02-26 11:31) [16]

>Как можно повесить на все эти элементы один обработчик, например

MyEdit[i].OnKeyPress:=EditKeyPress;


 
Vit@ly ©   (2004-02-26 11:41) [17]

В действительности у меня реализовано так:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
If ActiveControl is TEdit then
if not(Key in ["0".."9", #8, DecimalSeparator]) then Key := #0;
end;


 
SergP ©   (2004-02-26 11:48) [18]

>Vit@ly © (26.02.04 11:41)

А если на форме есть еще и другие Эдиты, для которых нужен свой обработчик, будет не очень удобно обрабатывать все в одном обработчике, хотя можно и так...


 
Layner ©   (2004-02-26 11:50) [19]

Классно!
Воспользовался как у Vit@ly, только на форме выставил KeyPreviw=True



Страницы: 1 вся ветка

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
14-25933
Sniper-Max
2004-01-31 08:46
2004.03.09
Помогите!!! У меня странно комп перезагружается... сам!!!


1-25789
Ivolg
2004-02-26 11:14
2004.03.09
Загружение с dll


14-25865
svin666
2004-02-16 15:56
2004.03.09
Цены за работу


1-25781
Danilin
2004-02-25 13:30
2004.03.09
Странное поведение TIniFile


14-25899
Attrib
2004-02-16 10:07
2004.03.09
Сеть