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

Вниз

Как мне присвоить текст сделанной строки...   Найти похожие ветки 

 
RedDragon   (2004-10-03 21:48) [0]

На данном форуме мне сказали, как по ходу прогона программы создавать какие - нибудь компоненты...
Переделав некоторые детали у меня получился такой код:
procedure TIndex.numberprezidentokClick(Sender: TObject);
var
Prezidents:TEdit;
i:Integer;
begin
numberprezidents:=0;
numberprezidents:=StrToInt(numberprezidentedit.text);
for i:=1 to numberprezidents do
  begin
    Prezidents:=TEdit.Create(Index);
    Prezidents.Parent:=PrezidentsPanel;
    Prezidents.Top:=I*16+26;
    Prezidents.Left:=15;
    Prezidents.Name:="prezidentedit"+InttoStr(I);
    Prezidents.Text:=Кандидат №"+InttoStr(I);
    Prezidents.Width:=170;
    Createprezidentsvote.Visible:=True;
    PrezidentsLabel.Visible:=True;
  end;

end;
Всё получилось, но никто не сказал, как мне присвоить какой -нибудь, например, переменной президент текст, например, 6 строки(при условии, что кандидатов 6 или более).
Сразу говорю, попробуйте сделать это у себя на компьютере и
вот такой вариант не проходит:
prezident1:=prezidentedit1.text;


 
Piter ©   (2004-10-03 22:12) [1]

О боже... я тебя настоятельно рекомендую почитать книги, если ты вообще хочешь разобраться в чем-нибудь. Какие книги тебе нужны пожешь спросить в "Потрепаться" - http://www.delphimaster.ru/cgi-bin/forum.pl?n=3 - только укажи ссылку на эту ветку.

По сабжу - ну сделай хотя бы через динамические массивы:

var
 Prezidents: array of TEdit;
 i:Integer;
begin
 numberprezidents:=StrToInt(numberprezidentedit.text);
 SetLength(Prezidents, numberprezidents);
 for i:=1 to numberprezidents do
   with Prezidents[i-1]
   begin
     Prezidents[i-1] := TEdit.Create(Index);
     Parent := PrezidentsPanel;
     Top := I*16+26;
     Left := 15;
     Name := "prezidentedit"+InttoStr(I);
     Text := Кандидат №"+InttoStr(I);
     Width := 170;
     Createprezidentsvote.Visible := True;
     PrezidentsLabel.Visible := True;
   end;


RedDragon   (03.10.04 21:48)
Всё получилось, но никто не сказал, как мне присвоить какой -нибудь, например, переменной президент текст, например, 6 строки(при условии, что кандидатов 6 или более).


prezident1:=Prezidents[5].text;

Хотя это все ужасно... книги, книги и еще раз книги...


 
GuAV ©   (2004-10-03 22:45) [2]


>    with Prezidents[i-1]
>    begin
>      Prezidents[i-1] := TEdit.Create(Index);

это тоже плохо.
do пропустил.
и используешь несозданный объект. надо сначала сохдать а потом with


 
jack128 ©   (2004-10-03 22:51) [3]

RedDragon   (03.10.04 21:48)
TIndex.NumberPrezidentokClick(

Ты президенток отдельно от президентов считаешь? ;-)


 
Piter ©   (2004-10-04 17:12) [4]

GuAV ©   (03.10.04 22:45) [2]

ну писал с руки... и не хотелось лишний begin...end ставить... все равно ведь работать будет (если do поставить, конечно)


 
GuAV ©   (2004-10-04 19:34) [5]


> все равно ведь работать будет (если do поставить, конечно)

Нет.


 
RedDragon   (2004-10-04 21:32) [6]

Здравствуй GuAV, а скажи как правильно сделать, ты говорил, что
он там ошибку допустил, напиши правильно, ладно??


 
begin...end ©   (2004-10-04 21:35) [7]


> [4] Piter ©   (04.10.04 17:12)


> и не хотелось лишний begin...end ставить...

Так меня ещё никто не игнорировал 8-)


 
Мастер ©   (2004-10-04 21:48) [8]

>RedDragon   (04.10.04 21:32)
Вот тебе 2 варианта, выбирай, какой больше нравится:


1.
procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
begin
 for i := 1 to 6 do
 begin
   with TEdit.Create(Form1) do
   begin
     Width := 80;
     Left := I*(Width+10)+10;
     Height := 20;
     Name := "Prezident"+IntToStr(i);
     Text := "Кандидат № "+IntToStr(i);
     Parent := Form1;
     Visible := True;
   end;
 end;

 Label1.Caption := (FindComponent("Prezident1") as TEdit).Text;

end;

2.
procedure TForm1.Button1Click(Sender: TObject);
var
 Ed: TEdit;
 i: Integer;
begin
 for i := 1 to 6 do
 begin
   Ed := TEdit.Create(Form1);
   Ed.Width := 80;
   Ed.Left := I*(Ed.Width+10)+10;
   Ed.Height := 20;
   Ed.Name := "Prezident"+IntToStr(i);
   Ed.Text := "Кандидат № "+IntToStr(i);
   Ed.Parent := Form1;
   Ed.Visible := True;
 end;

 Label1.Caption := (FindComponent("Prezident1") as TEdit).Text;

end;


 
Piter ©   (2004-10-04 22:17) [9]

Ладно, подумав, соглашусь, что работать не будет :)

Тогда так:

for i:=1 to numberprezidents do
 begin
   Prezidents[i-1] := TEdit.Create(Index);
   with Prezidents[i-1]
     begin    
       Parent := PrezidentsPanel;
       Top := I*16+26;
       Left := 15;
       Name := "prezidentedit"+InttoStr(I);
       Text := Кандидат №"+InttoStr(I);
       Width := 170;
       Createprezidentsvote.Visible := True;
       PrezidentsLabel.Visible := True;
  end;


 
Piter ©   (2004-10-04 22:18) [10]

begin...end ©   (04.10.04 21:35) [7]
Так меня ещё никто не игнорировал 8-)


:)))


 
RedDragon   (2004-10-05 22:06) [11]

Я никого не игнорирую, мне просто хорошее решение предложили, вот и всё, ты мне лучше помоги со следующим вопросом, который я задам в другом топике....



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

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

Наверх




Память: 0.5 MB
Время: 0.026 c
1-1096532602
awp
2004-09-30 12:23
2004.10.17
Invalid Pointer Operation при вызове DLL


14-1096465788
olookin
2004-09-29 17:49
2004.10.17
И еще интересно - какова вероятность правильного определения...


14-1096296459
Stef
2004-09-27 18:47
2004.10.17
Многопоточность


4-1094851020
массив
2004-09-11 01:17
2004.10.17
Как определить время простаивания системы для Win9x ?


4-1095046045
DelphiN!
2004-09-13 07:27
2004.10.17
Получить статус окна