СообЧа > База Знаний > Программирование > Delphi

Вопрос

1. Всегда ли при вызове метода фрмы Show у нее возникает событие OnShow?(Пишу прогу, которая сидит в трее и што-то делает, а по DoubleClick-у вызывается метод Show, который выводит форму с настройками. Так вот после старта первый DoubleClick все делает нормально, а после Закрытия формы

begin

Action := caNone;

ShowWindow (Handle, sw_Hide);

end;

и повторного DoubleClick-а события OnShow не происходит ( У меня там обновление отображаемых данных) и в результате все Label-ы, Edit-ы, ListBox-ы и ComboBox-ы получаются чиствми-пречистыми. По моему что-то тут не в порядке. Это я конечно вылечил — перед Show я вызываю свою процедуру, в которой все, что было в OnShow, но это наверное не совсем правильно. Подскажите, в чем тут дело?

Ответ

На новой форме написал такую штуку

procedure TForm1.FormClick(Sender: TObject); begin ShowWindow(Handle, SW_HIDE); ShowMessage('Visible: '+BoolToStr(Visible)); end;

Так вот она выдает, что Visible=true. Поэтому и не генерится OnShow — форма-то думает, что она видима! Решение простое:

Используйте либо только ShowWindow, либо только пару Show/Hide. Например, вместо ShowWindow(Handle, SW_HIDE) вызывайте Hide. Или вместо Show вызывайте ShowWindow(Handle, SW_SHOW). Использование Show/Hide, по-моему, предпочтительнее, т.к. будут вызываться OnShow/OnHide, да и Visible будет иметь правильное значение. Иначе придется использовать IsWindowVisible…

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация