Форум: "Основная";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];
ВнизМастера, посоветуйте, как сделать например 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c