Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.021 c
1-41689
zerro_nuz
2003-11-03 23:40
2003.11.13
Мастера помогите сделать отчет.


3-40895
viper_cd
2003-10-26 23:04
2003.11.13
запрос и группировка


1-41478
konstantinov
2003-10-28 18:36
2003.11.13
Тормоза при Runtime создание компонентов


6-41789
D.Rider
2003-09-13 23:16
2003.11.13
Как узнать включен, ли удалнный компьютер, не пингуя


3-41029
Post
2003-10-23 12:48
2003.11.13
Коннект к MSSQL через dbExpress