Побочный Эффект Windowstate := Wsnormal;

Тема в разделе "Delphi - Компоненты", создана пользователем Shouldercannon, 30 сен 2014.

  1. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Доброго времени суток!
    Использую WindowState := wsNormal;, чтобы восстанавливать форму с панели задач, если форма свёрнута, но у этого свойства есть побочный эффект. Если форма развёрнута на весь экран, то wsNormal вызывает событие Свернуть в окно у формы. Можно ли этот момент как-то убрать?
     
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Лучше так
    Код (Delphi):
    ShowWindow(MyForm.Handle, SW_RESTORE);
     
  3. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Сделала так
    Код (Delphi):
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShowWindow(Form2.Handle, SW_RESTORE);
    end;
    С Form2 исчезла кнопка и эта же форма не реагирует на закрытие + теряет активность (тёмный Caption формы) после события ShowWindow, но зато остаётся в последнем заданном состоянии ;)
     
  4. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    дык это вроде нормальная ситуация, зачем ее убирать?
     
  5. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Однозначно "Бага" совсем в другом месте Вашего кода. Скорее всего в обработчиках на самой форме Form2.
    Где-то Вы над ней серьезно "поиздевались"... :)
    Если Вы говорите что "исчезают кнопки", то это явно указывает на то что в области памяти выделенной приложением для формы Form2 данные испорчены.
    К примеру в обработчиках (на Form2) Вы используете методы пересоздающие окно этой формы.
    Либо другая форма (или поток) уничтожает/пересоздаёт Form2 в то время как сама форма об этом "не знает" (например находится в состоянии ShowModal).
    Кстати внутри обработчиков формы Form2 и ее контролов вместо Form2.чегонибудь... следует писать Self.чегонибудь...
    Либо Вы Вашу Form2 в первый раз пытаетесь показывать точно таким же способом (вызываете ShowWindow вместо Form2.Show)
    Либо где нибудь в другом месте кода неправильно управляете созданием/показом/уничтожением этой формы.
    Причины могут быть разные. Надо искать где.
    Советую поочередно "отключать" (обернуть в коммент) куски кода которые что либо производят с самой формой Form2 и контролов на ней расположенных (в части геометрии и отображения /скрытия), пока при вызове (из кода на Form1) ShowWindow(Form2.Handle, SW_RESTORE) не перестанет проявляться "эффект исчезания кнопки и реагирования на закрытие".
    Ищите... Чудес не бывает... :)
     
  6. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    В проекте всё по умолчанию, только одно процедура кнопки и вот такие пироги
    Похоже, на этом споткнулся -
     

    Вложения:

    • WindowState.zip
      Размер файла:
      7,3 КБ
      Просмотров:
      2
Загрузка...

Поделиться этой страницей