Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Развернуть свое окно после нажатия


Автор: jhonyxakep 6.5.2011, 12:14
САБЖ Собственно стандартные RESTORE, MAXIMIZE и прочие почему-то не работают.

Автор: MetalFan 6.5.2011, 15:33
jhonyxakep, еще раз внятно и с примером кода. что конкретно не работает?

Автор: jhonyxakep 6.5.2011, 15:37
Код

ShowWindow(Form1.Handle,SW_SHOWNORMAL);

//или

SendMessage(Form1.Handle,WM_SHOWWINDOW,0,0);

//или

SetForegroundWindow(Form1.Handle);


ни одна из этих функций, после нажатия кнопки "свернуть все окна", не показывает Form1. оно по прежнему остается свернутым.

Автор: MetalFan 6.5.2011, 16:14
jhonyxakep, А должна чтоли?)))
Вообще не стоит без надобности/осознанности использовать WinApi на VCL компонентах.
есть Application.Restore, есть TForm.WindowState

Автор: jhonyxakep 7.5.2011, 04:42
Цитата(MetalFan @  6.5.2011,  16:14 Найти цитируемый пост)
Application.Restore


первое, что я попробовал


Цитата(MetalFan @  6.5.2011,  16:14 Найти цитируемый пост)
TForm.WindowState


Как это должно помочь развернуть окно?

Автор: MetalFan 7.5.2011, 21:52
Цитата(jhonyxakep @  7.5.2011,  04:42 Найти цитируемый пост)
Как это должно помочь развернуть окно? 

а что, никак? а F1?

Автор: jhonyxakep 8.5.2011, 06:14
Цитата(MetalFan @  7.5.2011,  21:52 Найти цитируемый пост)
а что, никак? а F1?


Причем тут справка вообще? Я говорю, что стандартные средства не восстанавливают окно из свернутого режима, после нажатия ctrl+d

Автор: MetalFan 9.5.2011, 23:43
jhonyxakep, При том, что "стандартные" средства - это средства VCL, а не функции WinApi.
Попробуй присвоить WindowState = wsNormal(если не ошибаюсь) для разворачивания окна.

Автор: jhonyxakep 10.5.2011, 10:21
Код

   Form1.WindowState := wsNormal;
   Application.Restore;


Спасибо, вот так идеально работает =) 

Автор: MetalFan 10.5.2011, 11:06
jhonyxakep, ну вот и разобрались) у меня сейчас схожая проблема была - не хочет приложение иногда разворачиваться программно из трея)

Автор: jhonyxakep 12.5.2011, 13:15
Оказалось, что всё намного хуже =(


Цитата(jhonyxakep @  10.5.2011,  10:21 Найти цитируемый пост)

 Form1.WindowState := wsNormal; 
 Application.Restore;


Этот код идеально работает.... Но с условием, что окно имеет рамку, тоесть если Border Style неравен bsNone.

Увы с bsNone неработает...

Есть еще вариант решения?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)