Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

создание окна в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.049 c
1-41161
Yanval
2003-10-31 12:12
2003.11.13
title в TWebBroswer


14-41883
Думкин
2003-10-22 04:28
2003.11.13
С днем рождения! 22 октября.


1-41670
Jack
2003-10-24 17:07
2003.11.13
Как в Delphi реализовать нечто похожее на Object Inspector?


1-41577
Furkan
2003-10-27 13:35
2003.11.13
MDI и scroll


1-41456
MaG
2003-11-04 16:06
2003.11.13
....без модуля Forms





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский