Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.02;
Скачать: CL | DM;

Вниз

Контроль фокуса.   Найти похожие ветки 

 
demonyator ©   (2003-05-17 20:17) [0]

Есть две формы, обе видны на экране.Задача в том, что надо сделать чтобы при получении фокуса одной формой - другая оставалась всё-равно позади. Помогите справиться с проблемой.


 
Романов Р.В. ©   (2003-05-17 21:40) [1]

FormStyle := fsStayOnTop; ?


 
demonyator ©   (2003-05-18 01:38) [2]

это не то. Обе формы не должны обязательно быть сверху всех. Необходимо просто сделать так, чтобы при получении фокуса одной формой, другая при этом не вылазила на первый план.


 
Dmk ©   (2003-05-18 02:53) [3]

SetWindowPos

посмотри флаги

SWP_NOOWNERZORDER Does not change the owner window"s position in the Z order.
SWP_NOREPOSITION Same as the SWP_NOOWNERZORDER flag.
SWP_NOZORDER Retains the current Z order (ignores the hWndInsertAfter parameter).


 
Юрий Зотов ©   (2003-05-18 09:52) [4]

> Задача в том, что надо сделать чтобы при получении фокуса
> одной формой - другая оставалась всё-равно позади

> Необходимо просто сделать так, чтобы при получении фокуса
> одной формой, другая при этом не вылазила на первый план.


Знаете, а если НИЧЕГО не делать, то как раз так и будет.


 
demonyator ©   (2003-05-18 15:10) [5]


> Знаете, а если НИЧЕГО не делать, то как раз так и будет.

Нет, Юрий, Вы не правы. У обоих форм Visible=True. Поэтому при получении фокуса одной, вторая тоже выпихивается повыше.


 
Zacho ©   (2003-05-18 15:25) [6]


> demonyator © (18.05.03 15:10)

Чушь какая-то. Например, в моем текущем проекте может быть до хрена видимых форм. И при получении фокуса одной из них, остальные никуда не "выпихиваются". Что-то ты не договариваешь.


 
demonyator ©   (2003-05-18 19:54) [7]

Странно... Описываю ситуацию.
Form1 - главная.
Form2 - обычная.
Form1 - полностью скрыта за другими окнами.
Form2 - частично скрыта (торчит кусок :-) жму на этот кусок (который торчит :-) --- на передний план выходят обе формы...


 
Юрий Зотов ©   (2003-05-19 15:08) [8]

> demonyator © (18.05.03 19:54)

Так бы сразу и говорили. Первоначальный-то вопрос звучал иначе.
Делайте Form1 невидимой, вот и все.

procedure TForm2.FormShow(Sender: TObject);
begin
Application.MainForm.Hide
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.MainForm.Show
end;


 
demonyator ©   (2003-05-20 18:06) [9]


> Юрий Зотов

в том то и проблема, что обе формы должны быть видны. В вашем примере получается - onShow - Hide. OnClose - Show. То есть она появится только когда её будут закрывать :) Я сделал таким образом: Form2.OnClick ->> Form1.Hide ..... Form1.Show, но при этом Form1 всё-равно на мгновение появляется на экране - что очень не красиво. Может ещё идеи какие - нибудь?


 
Юрий Зотов ©   (2003-05-20 18:19) [10]

Копните в этом направлении:
WM_WINDOWPOSCHANGING (или WM_WINDOWPOSCHANGED)

inherited;
if Screen.ActiveForm <> Self then
with Message.WidowPos do
flags := flags or SWP_NOZORDER




 
demonyator ©   (2003-05-21 00:50) [11]

ok. Спасибо



Страницы: 1 вся ветка

Текущий архив: 2003.06.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
14-3149
Карелин Артем
2003-05-15 11:50
2003.06.02
Материалы по радиолокации. Где найти?


3-2809
EugeneK
2003-05-14 10:44
2003.06.02
Проблема с ConnectTimeout при работе с ADO


1-2967
Tatiana
2003-05-16 13:25
2003.06.02
SaveDialog


7-3190
Jel
2003-04-02 12:28
2003.06.02
Повторный вызов RASDial


8-3013
Zergling
2003-02-15 07:13
2003.06.02
Работа с DirectSound