Главная страница
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.038 c
1-41149
Денисыч
2003-11-03 13:44
2003.11.13
зависание приложения


1-41584
Users
2003-10-27 12:11
2003.11.13
Вставка в EXCEL OLAP куба средствами Delphi


1-41218
ildar
2003-11-01 17:37
2003.11.13
Обработка событий от объекта -свойства


1-41233
imp
2003-11-01 12:18
2003.11.13
Автоматизация тестирования проги


14-42089
Gorlum
2003-10-23 14:26
2003.11.13
Реляционные базы данных и дискретная математика