![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод окна приложения-сервера на передний план [Delphi, Windows]
Vlash © (2005-01-13 10:09:00)Доброго времени суток.
Устал искать решение проблемы (на этом форуме точно не нашел):
Есть приложение, являющееся COM-сервером. Есть клиент к нему.
Сервер отдает клиенту идентификатор выбранного элемента из деревяшки (это суть их взаимодействия). Проблема:
Когда в клиенте я нажимаю кнопку "Выбор" на сервере открывается новая форма. Мне нужно, чтобы в этот момент сервер стал активным, а точнее вновь созданная форма, а то она перекрывается окном клиента и по дереву элементов бегать сразу не получается... :( Приходится вручную переходить к серверу.
Пробовал так (у сервера в функции, которая передает идентификатор клиенту):
Application.BringToFront;
Application.createform(TDBDialog,DBDialog);
В строке состояния заголовок окна сервера мигает, но созданная форма на передний план не выходит :(
А потом, после выбора, хотелось бы, чтобы окно сервера сворачивалось или уходило на задний план (под окно клиента).
Vlash (2005-01-13 12:23:00) [1]Эххх. Таки через API и хэндлы :(
Не совсем эту технологию воспринимаю, ну ничего ;)
Спасибо, буду делать так...
Erik1 (2005-01-13 11:57:00) [2]Например я делел так:
procedure TfCardReader.FormCreate(Sender: TObject);
begin
//SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDWININICHANGE or PIF_UPDATEINIFILE);
Application.OnDeactivate := ReShow;
Application.OnMinimize := ReShow;
end;
procedure TfCardReader.ReShow(Sender: TObject);
begin
if IsIconic(Handle) then
ShowWindow(Handle,SW_SHOWNORMAL);
SetWindowPos(Handle, HWND_TOP, Left, Top, Width, Height, SWP_SHOWWINDOW); //SWP_NOMOVE or SWP_NOSIZE SHOWWINDOW
SetForegroundWindow(Handle);
end;
Думаю тебе этого хватит. Если мало то есть еще AttachThreadInput