![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про Close
kiber-pilot © (2008-01-29 23:25:00)Что будет, если у модальной формы в методе Close написать close?
Anatoly Podgoretsky (2008-01-31 14:36:00) [1]> Ega23 (31.01.2008 13:55:25) [25]
Я спас генофонд!!!
Ega23 (2008-01-31 13:55:00) [2]
> Anatoly Podgoretsky © (31.01.08 12:03) [24]
да-а-а...
Снимаю шляпу. До этого не додумался...
Anatoly Podgoretsky (2008-01-31 12:03:00) [3]> Ega23 (31.01.2008 10:45:23) [23]
Не так
TF1 = class(TForm)
public
procedure Close; reintroduce; virtual
end;
TF2 = class(TF1)
public
procedure Close; override
end;
procedure TF1.Close;
begin
Inherited;
end;
procedure TF2.Close;
begin
Close; <- вот оно
end;
Ega23 (2008-01-31 10:45:00) [4]
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure Close;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Close;
begin
inherited Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
Всё равно 1 раз "тот самый Close" вызовется.
Ega23 (2008-01-31 10:44:00) [5]
> Вполне если владеть ООП
Как???
Anatoly Podgoretsky (2008-01-31 10:17:00) [6]Вполне если владеть ООП
Ega23 (2008-01-31 10:06:00) [7]
> А при вызове Close из Close?
Всё ещё не понимаю, каким образом можно вызвать Close из Close без вмешательства в генофонд.
KSergey (2008-01-31 09:49:00) [8]> Loginov Dmitry © (31.01.08 07:58) [18]
> А где здесь ошибка? При вызове Close всего-навсего
А при вызове Close из Close?
Loginov Dmitry (2008-01-31 07:58:00) [9]> Я случайно заметил эту ошибку.
А где здесь ошибка? При вызове Close всего-навсего повторно изменяется переменная ModalResult:
if fsModal in FFormState then
ModalResult := mrCancel
а уж потом значение переменной проверяется в цикле обработки сообщений данного окна
if ModalResult <> 0
приведет к выходу из цикла и закрытию окна. Никакой рекурсии.
kiber-pilot (2008-01-30 20:22:00) [10]Самое интересное, что ничего не происходило, работало как и должно работать. Я случайно заметил эту ошибку.
Washington (2008-01-30 15:14:00) [11]А я обосновал, что не хуже
homm (2008-01-30 15:00:00) [12]> [14] Washington © (30.01.08 14:52)
Уже обосновал.
http://www.delphimaster.ru/cgi-bin/forum.pl?n=18&id=1200477368
Washington (2008-01-30 14:52:00) [13]
> homm © (30.01.08 14:41) [13]
обоснуй
homm (2008-01-30 14:41:00) [14]> [10] Washington © (30.01.08 13:57)
> не спорю, но до такого у меня не доходило :)
У тебя еще хуже.
Washington (2008-01-30 14:14:00) [15]
> но до такого у меня не доходило :)
...и, надеюсь, не дойдёт :)
{RASkov} (2008-01-30 14:01:00) [16]> [10] Washington © (30.01.08 13:57)
> но до такого у меня не доходило :)
еще не вечер :)
Washington (2008-01-30 13:57:00) [17]
> homm © (30.01.08 13:43) [9]
не спорю, но до такого у меня не доходило :)
homm (2008-01-30 13:43:00) [18]> [8] Washington © (30.01.08 13:41)
> Бог ему в помощь
Сам то не далеко от горша ушел :(
Washington (2008-01-30 13:41:00) [19]
> Наверно полез править генофонд, чтобы увидеть это.
Бог ему в помощь
Anatoly Podgoretsky (2008-01-30 12:18:00) [20]> clickmaker (30.01.2008 12:05:06) [6]
Наверно полез править генофонд, чтобы увидеть это.