Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Главная форма [D7, XP]


Страницы:   1 2 3

Петр ©   (2008-11-01 14:25:00) 

Добрый день.

Очень нужна ваша помощь и очень срочно.

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


Alarm   (2008-11-05 18:00:00) [21]


> Петр   (01.11.08 14:25)

> Вопрос как сделать, так что бы пользователь при ее появлении
> был вынужденнажать на ней некую кнопку, т.е. активировать
> все остальные окна и приложения на заднем плане было не
> возможно.

Не вынуждай никого. Нажми ее (некую кнопку) программно.
В чем вопрос?


Петр   (2008-11-05 17:59:00) [22]


> Тын-Дын ©   (05.11.08 17:58) [23]
>
> А почему не ShowModal?

Ну даже если и ShowModal форма все равно появляется не активной....


Тын-Дын   (2008-11-05 17:58:00) [23]

А почему не ShowModal?


Петр   (2008-11-05 17:58:00) [24]

да главную форму вообще не трогаем...она вечно невидимая...

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

сейчас меня больше интересует следующие, при срабатывании процесса у меня выполняеться команда form2.show. форма появляеться но она не активна, нужно нажать на ее мышкой что бы активизировать....а можно сделать как то что бы при выполнении form2.show форма была сразу активной?


Петр   (2008-11-05 17:55:00) [25]

да главную форму вообще не трогаем...она вечно невидимая...

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

сейчас меня больше интересует следующие, при срабатывании процесса у меня выполняеться команда form2.show. форма появляеться но она не активна, нужно нажать на ее мышкой что бы активизировать....а можно сделать как то что бы при выполнении form2.show форма была сразу активной?


Тын-Дын   (2008-11-05 17:44:00) [26]


> у меня получилось, это возникало из за того что я предварительно
> делал form2.show но сейчас у меня возникает вопрос а как
> теперь эту форму сделать снова не видимой?...:)


Так ведь главная форма должна быт ьневидимой, а не дополнительная?


Петр   (2008-11-05 17:22:00) [27]


> Тын-Дын ©   (05.11.08 17:09) [17]
>
>
> > сработало...но не совсем...почему то на форме пропали
> лейблы
> > и кнопки...остался только едит...:) это почему?
>
>
> не должно такого быть...

у меня получилось, это возникало из за того что я предварительно делал form2.show но сейчас у меня возникает вопрос а как теперь эту форму сделать снова не видимой?...:)


Петр   (2008-11-05 17:10:00) [28]

у меня такое есть...:)

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


Тын-Дын   (2008-11-05 17:09:00) [29]


> сработало...но не совсем...почему то на форме пропали лейблы
> и кнопки...остался только едит...:) это почему?


не должно такого быть...


Петр   (2008-11-05 15:40:00) [30]


> Что непонятно?

:)
спасибо понял...даже стыдно стало..
сработало...но не совсем...почему то на форме пропали лейблы и кнопки...остался только едит...:) это почему?


Ega23   (2008-11-05 15:24:00) [31]


> :(
> не понимаю....
>


Посмотри в хелпе.


Тын-Дын   (2008-11-05 14:55:00) [32]


> Петр   (05.11.08 14:48) [13]


Код первой формы:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Application.OnIdle := Form2.Idle;
 Form2.Left := 0;
 Form2.Top := 0;
 Form2.Width := Screen.Width;
 Form2.Height := Screen.Height;
 Form2.ShowModal;
 Application.OnIdle := nil;
end;

end.


Код второй формы:

unit Unit2;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm2 = class(TForm)
 private
   { Private declarations }
 public
   procedure Idle(Sender: TObject; var Done: Boolean);
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}
{ TForm2 }

procedure TForm2.Idle(Sender: TObject; var Done: Boolean);
begin
 SetWindowPos(Form2.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);
end;

end.


Что непонятно?


Петр   (2008-11-05 14:48:00) [33]


> Palladin ©   (05.11.08 14:33) [12]
>
> TApplication.OnIdle

:(
не понимаю....


Palladin   (2008-11-05 14:33:00) [34]

TApplication.OnIdle


Петр   (2008-11-05 14:26:00) [35]


> procedure TForm2.Idle(Sender: TObject; var Done: Boolean);

Простите, пожалуйста, ламера, а что это за процедура такая IDLE?...:)


Тын-Дын   (2008-11-05 14:16:00) [36]

procedure TForm1.Button1Click(Sender: TObject);
begin
 Application.OnIdle := Form2.Idle;
 Form2.Left := 0;
 Form2.Top := 0;
 Form2.Width := Screen.Width;
 Form2.Height := Screen.Height;
 Form2.ShowModal;
 Application.OnIdle := nil;
end;

procedure TForm2.Idle(Sender: TObject; var Done: Boolean);
begin
 SetWindowPos(Form2.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);
end;


Петр   (2008-11-05 13:21:00) [37]


> Сергей М. ©   (01.11.08 16:20) [5]
>
>
> > Петр   (01.11.08 16:13) [4]
>
>
> А чем, собственно, этой форме конкретно и твоему приложению
> в целом так уж насолили окна других приложений, могущих
> стать активными в этот момент ?
> Чем эта ситуация столь уж чревата ?
>
> Поясни ..
>

Сергей очень долго объяснять. Работать буду пользователи и задача моя обязать их нажимать именно на мою форму 2.


Германн   (2008-11-02 00:47:00) [38]


> Пускай свое приложение на отдельном десктопе

А зачем нужна "прозрачная форма во весь экран" на отдельном десктопе?
:)


Leonid Troyanovsky   (2008-11-01 23:35:00) [39]


> Петр   (01.11.08 16:13) [4]

Пускай свое приложение на отдельном десктопе
и никто ему мешать не будет.

> fsStayOnTop держит окно наверху только внутри своего приложения.

Ерундой болтаешь.

--
Regards, LVT.


Andy BitOff   (2008-11-01 16:35:00) [40]

> Петр   (01.11.08 16:13) [4]
> Есть идея сделать форму на весь экран и прозрачную

Дык, а толку? Alt+Tab никто не отменял.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо