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

Вниз

Динамически создал edit а роботать с ним не могу(   Найти похожие ветки 

 
Дмитрий   (2013-03-06 00:50) [0]

Извиняюсь пишу про динамическую тему не первый раз, но все не могу разобраться((( Edit"ы созданы динамически:
Код:


procedure TForm1.Button4Click(Sender: TObject);

var Edit: TEdit; StaticText:TStaticText; i,I1,i2,i3:INTEGER;
begin
FOR i1:=4 TO STRTOINT(EDIT4.TEXT) DO BEGIN
edit.Name:="Edit"+inttostr(i1+1);
end;
FOR i:=1 TO STRTOINT(EDIT4.TEXT) DO BEGIN
Edit:=TEdit.Create(Form1);
Edit.Parent:=Form1;
Edit.Left:=592{+(I-1)*80};
Edit.Top:=200+(I-1)*30;
Edit.Width:=95;
Edit.Height:=18;
edit.font.size:=8;

end;

FOR i1:=0 TO STRTOINT(EDIT4.TEXT) DO BEGIN
StaticText.Caption:=Inttostr(i1);
StaticText:=TStaticText.Create(form1);
StaticText.Parent:=Form1;
StaticText.Left:=552{+(I-1)*80};
StaticText.Top:=200+(I1)*30;
StaticText.Font.Size:=10;
end;

begin
FOR i2:=i1+1 TO STRTOINT(EDIT4.TEXT) DO BEGIN
edit.Name:="Edit"+inttostr(i2+(i1+1));
end;
FOR i:=1 TO STRTOINT(EDIT4.TEXT) DO BEGIN
Edit:=TEdit.Create(Form1);
Edit.Parent:=Form1;
Edit.Left:=711{+(I-1)*80};
Edit.Top:=200+(I-1)*30;
Edit.Width:=95;
Edit.Height:=18;
edit.font.size:=8;

end;

begin
FOR i3:=i1+i2+1 TO STRTOINT(EDIT4.TEXT) DO BEGIN
edit.Name:="Edit"+inttostr(i3+(i1+(i2+1)));
end;
FOR i:=1 TO STRTOINT(EDIT4.TEXT) DO BEGIN
Edit:=TEdit.Create(Form1);
Edit.Parent:=Form1;
Edit.Left:=830{+(I-1)*80};
Edit.Top:=200+(I-1)*30;
Edit.Width:=95;
Edit.Height:=18;
edit.font.size:=8;
end;
end;
end;
end;


Показано на 1 картинке.

Мне надо написать формулу когда из первого столбца edit"ов первый, умножается на первый из 3 столбца, и суммируется со 2 из 1 столбца умноженный на 2 из 3 стобца и т.д. Что типо (edit1*edit3)+(edit4*edit6)+...(edi tn+editn).

Вы скажите создай лучше массив! Конечно там с массивом работать проще указывать индекс edit"а и производить нужные операции.
Есть пример с массивом "картинку кинул",считает первые эдиты. Но не получается сделать 3 колонки как в первом примере(((


procedure TForm1.Button1Click(Sender: TObject);

begin
n := 500;
SetLength(Lab, n+1);
SetLength(Ed, n+1);

for i:=1 to strtoint(memo1.Text) do
begin
Lab[i] := TLabel.Create(self);
Lab[i].Parent := self;
Lab[i].Left := 10;
Lab[i].Top := i*30+20;
Lab[i].Caption := "Ýòèêåòêà"+IntToStr(i);
Ed[i] := TEdit.Create(self);
Ed[i].Parent := self;
Ed[i].Left := 150;
Ed[i].Top := i*30+20;
Ed[i].Text := "Ïîëå ââîäà "+IntToStr(i);
Ed[i].Name:= "Edit"+IntToStr(i);
end;


И еще вопрос: если великий мудрец подскажет как это сделать и все получится! Как сделать чтоб формула считала неограниченное число этих edit"ов? Если я укажу в формуле например edit500 а он не создан динамически а создано только 3, компилятор будет ругаться что такой едит не создан? Или указать в private edit500 и все будет гладко?


 
Германн ©   (2013-03-06 00:58) [1]


> FOR i1:=4 TO STRTOINT(EDIT4.TEXT) DO BEGIN
> edit.Name:="Edit"+inttostr(i1+1);
> end;

Смысл этого кода объясни.


 
Дмитрий   (2013-03-06 09:23) [2]

Смысл в том что у меня лежит edit 4 так на форме, а имена других присвает начиная с 5 и т.д.


 
sniknik ©   (2013-03-06 09:40) [3]

объяснить, это не значит написать что у тебя делается, скорее зачем...

какой смысл задавать имена, пусть, начиная с 5... если они а) динамическим вообще не нужны, б)  больше одного не влезет, с) первоначально задаются не созданному объекту.
???

+ от себя, нафига столько повторяющегося кода? если можно все в 1 (вложенный) цикл... с чего код видимо и переделан учитывая закоментаренное (Edit.Left:=592{+(I-1)*80};).


 
O'ShinW ©   (2013-03-06 10:52) [4]

stringgrid не проще?


 
Юрий Зотов ©   (2013-03-06 11:54) [5]

И поменяйте местами эти 2 строчки:

StaticText.Caption:=Inttostr(i1);
StaticText:=TStaticText.Create(form1);

Нельзя работать с еще не созданным объектом.


 
brother ©   (2013-03-06 11:55) [6]

да тут весь код страшен, отсюда вопрос: кто его так?


 
anonims   (2013-03-06 14:34) [7]


> Но не получается сделать 3 колонки как в первом примере(((

lab: array of array of Edit;

setlength(lab,N,3); //или наоборот 3,N
for j ... to N
 lab[i,0] ...
 lab[i,0].left:=0;

 lab[i,1]...
 lab[i,0].left:=30;

 lab[j,2]...
 lab[i,0].left:=90;


 
O'ShinW ©   (2013-03-06 14:46) [8]


> lab: array of array of Edit;

= stringgrid


 
Inovet ©   (2013-03-06 14:59) [9]

> [8] O"ShinW ©   (06.03.13 14:46)

Не объясняет же зачем ему это.


 
Германн ©   (2013-03-07 01:48) [10]


> Извиняюсь пишу про динамическую тему не первый раз, но все
> не могу разобраться

Может наконец прочитаешь учебник?
Или продолжишь искать примеры на помойке? Тогда бог тебе в помощь.



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

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

Наверх




Память: 0.49 MB
Время: 0.006 c
2-1362606625
__meat__
2013-03-07 01:50
2013.12.29
Не работает отладка


11-1247770454
Ruzzz
2009-07-16 22:54
2013.12.29
Не получается выставить font=Tahoma


15-1369983700
clippership
2013-05-31 11:01
2013.12.29
Реинжиниринг торговой системы


15-1373292451
pasha_golub
2013-07-08 18:07
2013.12.29
Хочу одинаковую версию для экзешника


15-1373488202
Юрий
2013-07-11 00:30
2013.12.29
С днем рождения ! 11 июля 2013 четверг