Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос про Close


Страницы:   1 2

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]

Наверно полез править генофонд, чтобы увидеть это.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо