Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.163.171] |
|
Сообщ.
#1
,
|
|
|
showmessage на заднем плане из за формы по верх всех окон
как исправить? Добавлено заменил на MessageBox с указанием handle Окна родителя. все норм стало. закрыто |
Сообщ.
#2
,
|
|
|
Можно что-то типа такого:
procedure MyShowMessage(const Msg: string); begin with CreateMessageDialog(Msg, mtCustom, [mbOK]) do try HelpContext := 0; HelpFile := ''; FormStyle := fsStayOnTop; Position := poScreenCenter; ShowModal; finally Free; end; end; |
Сообщ.
#3
,
|
|
|
Filka, жалко нет функции CreateOpenDialog
у меня сейчас такая же проблема только с вызовом OpenDialog1.Execute, на задний фон уходит тоже. может подскажешь что нибудь? |
Сообщ.
#4
,
|
|
|
Цитата Emmys @ жалко нет функции CreateOpenDialog GetOpenFileName |
Сообщ.
#5
,
|
|
|
Emmys
procedure TForm1.Button1Click(Sender: TObject); var P: PHandle; H: THandle; begin P := @Application.Handle; H := P^; P^ := FindWindow('Shell_TrayWnd', nil); try OpenDialog1.Execute; finally P^ := H; end; end; |
Сообщ.
#6
,
|
|
|
Filka, ПОМОГЛО но я не понял в чем суть куда... при чем тут Shell_TrayWnd
и почему так лучше не делать |
Сообщ.
#7
,
|
|
|
Цитата Emmys @ TOpenDialog - обёртка над функцией GetOpenFileName. В неё передаётся структура OPENFILENAME. У неё есть поле hwndOwner (A handle to the window that owns the dialog box.)суть куда... При вызове метода Execute: hWndOwner := Application.Handle; Цитата Emmys @ Чтобы OpenDialog появлялся поверх других окон, нужно сделать, чтобы hWndOwner = HWND окна, которое имеет стиль WS_EX_TOPMOST.при чем тут Shell_TrayWnd Панель задач - окно, которое есть всегда (практически) и оно поверх других окон... Цитата Emmys @ Т.к. изменяется Application.Handle... Можно, если осторожно почему так лучше не делать |
Сообщ.
#8
,
|
|
|
Emmys
Ещё можно так: procedure TForm1.OpenDialog1Show(Sender: TObject); begin SetWindowPos(GetParent(OpenDialog1.Handle), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); end; |