Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1373488202
Юрий
2013-07-11 00:30
2013.12.29
С днем рождения ! 11 июля 2013 четверг


15-1373277139
p
2013-07-08 13:52
2013.12.29
Цифровая подпись


15-1372134518
[ВладОшин]
2013-06-25 08:28
2013.12.29
PLSQL developer настроить на показ длиных number


15-1373629469
RoyalFlushBY
2013-07-12 15:44
2013.12.29
конвертация cer в pfx


1-1319975920
goodveen
2011-10-30 14:58
2013.12.29
Как получить полный список опубликованных свойств класса?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский