Вниз
Скачать: CL | DM;

создание окна в runtime   Найти похожие ветки 

 
Vlad Oshin ©   (2003-10-31 12:07) [0]

Пишу следующее(читаю с файла кнопочки и чекбоксы, ставлю на форму):

while not(eof(f)) do begin
readln(f,s); //what create?
case s[1] of
"c": begin
chNew:=Tcheckbox.Create(form1);
readln(f,s);
chNew.Name:=s;
readln(f,s);
chNew.Top:=strtoint(s);
readln(f,s);
chNew.Left:=strtoint(s);
chNew.OnClick:=OnClickButton;
chNew.Parent:=form1;
end;
"b":begin
New:=TButton.Create(form1);
readln(f,s);
New.Name:=s;
readln(f,s);
New.Top:=strtoint(s);
readln(f,s);
New.Left:=strtoint(s);
New.OnClick:=OnClickButton;
New.Parent:=form1;
end;
end;

в обоих случаях case"а все одинаково, кроме первой строки, думаю это(как у меня) неправильно, можно по другому?


 
VAleksey ©   (2003-10-31 12:21) [1]

Можно.
Примерно так:

Сделай переменную типа
New:TWinControl;

Потом примерно так:

while not(eof(f)) do begin
readln(f,s); //what create?
case s[1] of
"c": begin
New:=Tcheckbox.Create(form1);
Tcheckbox(New).OnClick := OnClickButton;
end;
"b":begin
New:=TButton.Create(form1);
TButton(New).OnClick := OnClickButton;
end;
end;
readln(f,s);
New.Name:=s;
readln(f,s);
New.Top:=strtoint(s);
readln(f,s);
New.Left:=strtoint(s);
New.OnClick:=OnClickButton;
New.Parent:=form1;


 
Vlad Oshin ©   (2003-10-31 12:41) [2]

нет,
New.OnClick - undeclared identifier


 
VAleksey ©   (2003-10-31 12:47) [3]


> New.OnClick:=OnClickButton;

Вот эта строка внизу не нужна :-)) Она с помощью Copy / Paste туда попала. Убери ее.
Вот так:

while not(eof(f)) do begin
readln(f,s); //what create?
case s[1] of
"c": begin
New:=Tcheckbox.Create(form1);
Tcheckbox(New).OnClick := OnClickButton;
end;
"b":begin
New:=TButton.Create(form1);
TButton(New).OnClick := OnClickButton;
end;
end;
readln(f,s);
New.Name:=s;
readln(f,s);
New.Top:=strtoint(s);
readln(f,s);
New.Left:=strtoint(s);
New.Parent:=form1;


 
Vlad Oshin ©   (2003-10-31 12:55) [4]

ясно.

А я подумал что
TButton(New).OnClick := OnClickButton;
Tcheckbox(New).OnClick := OnClickButton;
можно и не писать, а сразу New.OnClick:=OnClickButton; в конце написать.

Спасибо!


 
VAleksey ©   (2003-10-31 13:02) [5]


> можно и не писать, а сразу New.OnClick:=OnClickButton; в
> конце написать.

Ну в принципе если надо можно и просто и так написать:
New.Top:=strtoint(s);
readln(f,s);
New.Left:=strtoint(s);
TButton(New).OnClick := OnClickButton;

Работать будет.


 
Mystic ©   (2003-10-31 14:02) [6]

Замена условной логики полиморфизмом?

И просто интересно, почему не запись формы в поток?



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
14-42102
Nikolay M.
2003-10-17 14:17
2003.11.13
Нет ли у кого вакансии на программиста (Дельфи)?!


7-42141
proofy
2003-08-06 14:06
2003.11.13
Как менять время??


1-41574
maestro
2003-10-27 14:29
2003.11.13
Создание Button


14-41892
Layner
2003-10-21 11:53
2003.11.13
Преобразовывание цифрового ряда из 24 цифр в 48 цифр


1-41204
Agent[007]
2003-11-01 22:07
2003.11.13
Case ... of <a>:<b>; end;




   Наверх