Форум: "Начинающим";
Текущий архив: 2013.12.29;
Скачать: [xml.tar.bz2];
ВнизДинамически создал 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c