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


Автор: SoWa 1.4.2005, 08:41
Надо сделать такую штуку:
Мое окно находится на переднем плане, а на все остальные окна нельзя кликать, т.е. нельзя переводить фокус на другие окна, пока мое не закроется.

Автор: DimW 1.4.2005, 09:09
По моему единственый способ это сделать- не дать указатулю мыши выйти за пределы твоего окна и запретить Alt+Tab и FormStile:=fsStayOnTop;

Автор: Golden Hands 1.4.2005, 09:28
Остальные окна - это остальные формы твоего проекта smile или приложения в системе?

Автор: DimW 1.4.2005, 09:32
Цитата
Остальные окна - это остальные формы твоего проекта


если так то form2.showmodal;

Автор: ~FoX~ 1.4.2005, 11:47
SoWa
Модальность может быть на уровне приложения, а может быть на уровне системы.

Автор: SoWa 1.4.2005, 11:56
Модальность на уровне системы.
А ограничить мышь- хорошая мысля!

Автор: FRAGNATIC 1.4.2005, 12:01
для ограничения мыши используй ClipCursor

Автор: DimW 1.4.2005, 12:11
Вот можешь поюзать:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
var pos:Tpoint;
begin
getcursorpos(pos);
if pos.X<form1.Left then setcursorpos(form1.Left,pos.y);
if pos.X>form1.Left+form1.Width then setcursorpos(form1.Left+form1.Width,pos.y);
if pos.Y<form1.Top then setcursorpos(pos.x,form1.Top);
if pos.Y>form1.Top+form1.Height then setcursorpos(pos.x,form1.Top+form1.Height);
end;

Автор: FRAGNATIC 1.4.2005, 12:22
Цитата(DimW @ 1.4.2005, 12:11)
Вот можешь поюзать:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
var pos:Tpoint;
begin
getcursorpos(pos);
if pos.X<form1.Left then setcursorpos(form1.Left,pos.y);
if pos.X>form1.Left+form1.Width then setcursorpos(form1.Left+form1.Width,pos.y);
if pos.Y<form1.Top then setcursorpos(pos.x,form1.Top);
if pos.Y>form1.Top+form1.Height then setcursorpos(pos.x,form1.Top+form1.Height);
end;

ну тогда выходит надо ставить у таймера интервал в 0 а то если юзер всётаки успеет кликнуть за пределами окна то тогда всё окно станет не активным и потом мышу будет просто кидать на ту позицую где было окно
Добавлено @ 12:23
+ юзера всегда под рукой alt+tab

Автор: DimW 1.4.2005, 12:32
Цитата
ну тогда выходит надо ставить у таймера интервал в 0


я же несказал пользуйся, а сказал поюзай....

Цитата
+ юзера всегда под рукой alt+tab


про это я тоже говорил... см. выше

FRAGNATIC когда выкладывается кусок кода это не значит что он на 100% решает задачу, нужно же головой немного подумать и проаналезировать вот как это сделал ты!!!

Автор: Гость_Yanis 1.4.2005, 13:24
Попроробуй OnTimer с интервалом 1:
Код

  form.formstyle = fsStayOnTop;
  form.Show;
  // or
  {form.Show;
  form.formstyle = fsStayOnTop;}

Даже popup меню заголовка формы перекрывает.

Автор: Yanis 1.4.2005, 13:26
Блин! Забыл залогиниться smile

Автор: SoWa 1.4.2005, 19:09
Спасибо, Yanis, сработало!

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