Вниз
Скачать: 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.027 c
11-41128
vdas2
2003-02-16 03:29
2003.11.13
размер в памяти (после запуска)


7-42205
Павлов Александр
2003-08-25 14:44
2003.11.13
Как определить из MS-DOS вендора и модель чипсета?


14-41888
Gfa
2003-10-09 18:14
2003.11.13
Сотовая связь в Германии


1-41291
Dysan
2003-10-31 12:46
2003.11.13
Как распечатать содержимое формы?


14-41982
Rouse_
2003-10-19 14:30
2003.11.13
Антология Мастера Улыбаются.




   Наверх