Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.12.14;
Скачать: [xml.tar.bz2];

Вниз

Главная форма   Найти похожие ветки 

 
Петр   (2008-11-01 14:25) [0]

Добрый день.

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

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


 
Сергей М. ©   (2008-11-01 14:31) [1]

Т.е. тебе нужно показать некую форму в режиме модального (на уровне тек.десктопа) диалога ?


 
Vlad Oshin ©   (2008-11-01 14:32) [2]

есть мысль сделать fsStayOnTop и постоянно делать setforeground
и/или не выпускать мышку за свои пределы


 
han_malign ©   (2008-11-01 14:59) [3]

по хорошему надо копать сюда: http://msdn.microsoft.com/en-us/library/aa380543.aspx


 
Петр   (2008-11-01 16:13) [4]


> Vlad Oshin ©   (01.11.08 14:32) [2]
>
> есть мысль сделать fsStayOnTop и постоянно делать setforeground
> и/или не выпускать мышку за свои пределы

fsStayOnTop держит окно наверху только внутри своего приложения.
Есть идея сделать форму на весь экран и прозрачную но оказываться через нее нажатия мышки проходят...:)


 
Сергей М. ©   (2008-11-01 16:20) [5]


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


А чем, собственно, этой форме конкретно и твоему приложению в целом так уж насолили окна других приложений, могущих стать активными в этот момент ?
Чем эта ситуация столь уж чревата ?

Поясни ..


 
Andy BitOff ©   (2008-11-01 16:35) [6]

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

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


 
Leonid Troyanovsky ©   (2008-11-01 23:35) [7]


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

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

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

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

--
Regards, LVT.


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


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

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


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


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

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


 
Тын-Дын ©   (2008-11-05 14:16) [10]

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 14:26) [11]


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

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


 
Palladin ©   (2008-11-05 14:33) [12]

TApplication.OnIdle


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


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

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


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


> Петр   (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.


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


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


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


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


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


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

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


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


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


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


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

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

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


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


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

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


 
Тын-Дын ©   (2008-11-05 17:44) [20]


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


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


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

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

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

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


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

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

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

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


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

А почему не ShowModal?


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


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

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


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


> Петр   (01.11.08 14:25)

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

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


 
Тын-Дын ©   (2008-11-05 18:01) [26]


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


Код покажи, который используешь.


 
Leonid Troyanovsky ©   (2008-11-05 18:04) [27]


> Петр   (05.11.08 17:58) [22]

> ...а можно сделать как то что бы при выполнении form2.show
> форма была сразу активной?

Не положено.

Окно foreground может делать только foreground thread.
See also msdn.

У тебя ТЗ хромое.

--
Regards, LVT.


 
Петр   (2008-11-05 18:05) [28]


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

ну я просто вам не все функции своей "мега" программы рассказал. сложно объяснить все мне просто нужно что бы она появлялась активной.


 
Тын-Дын ©   (2008-11-05 18:09) [29]


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


Сначала приложение переведи на передний план, потом активизируй форму.


 
Leonid Troyanovsky ©   (2008-11-05 18:09) [30]


> Петр   (05.11.08 18:05) [28]

> ну я просто вам не все функции своей "мега" программы рассказал.

Дык, не таи в себе.
А мы уж покритикуем.

--
Regards, LVT.


 
Петр   (2008-11-05 18:11) [31]

так...меня не понимаете...значит коряво пишу....:)

попробую ещё раз.

Забудем про все, что я писал раньше.

моё приложение всегда запущено и каждую секунду контролирует появление некого файла. Когда файл обнаружен на главной форме срабатывает
form2.show.

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

фуф...ну что запутал всех еще больше?...:)


 
Leonid Troyanovsky ©   (2008-11-05 18:11) [32]


> Тын-Дын ©   (05.11.08 18:09) [29]

> Сначала приложение переведи на передний план,

Дык, [27].

--
Regards, LVT.


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


> Leonid Troyanovsky ©   (05.11.08 18:11) [32]
>
>
> > Тын-Дын ©   (05.11.08 18:09) [29]
>
> > Сначала приложение переведи на передний план,
>
> Дык, [27].

не понимаю о чем вы...:(


 
Leonid Troyanovsky ©   (2008-11-05 18:14) [34]


> Петр   (05.11.08 18:11) [31]

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

Угадал, угадал.
http://msdn.microsoft.com/en-us/library/ms632668(VS.85).aspx

--
Regards, LVT.


 
Петр   (2008-11-05 18:15) [35]


> Leonid Troyanovsky ©   (05.11.08 18:11) [32]
>
>
> > Тын-Дын ©   (05.11.08 18:09) [29]
>
> > Сначала приложение переведи на передний план,
>
> Дык, [27].

не понимаю о чем вы...:(


 
Leonid Troyanovsky ©   (2008-11-05 18:17) [36]


> Петр   (05.11.08 18:14) [33]

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

Во-первых, это не тебе. See [27, 30].
Во-вторых, see also msdn:
http://msdn.microsoft.com/en-us/library/ms632668(VS.85).aspx

--
Regards, LVT.


 
Петр   (2008-11-05 18:20) [37]


> Leonid Troyanovsky ©   (05.11.08 18:17) [36]
>
>
> > Петр   (05.11.08 18:14) [33]
>
> > не понимаю о чем вы...:(
>
> Во-первых, это не тебе. See [27, 30].
> Во-вторых, see also msdn:
> http://msdn.microsoft.com/en-us/library/ms632668(VS.85).
> aspx
>
> --
> Regards, LVT.

если я скажу что мне ничего на этом сайте не понятно, вы наверняка напишите "" ну же ты дружочек!!! какое тебе программирование...."" да?...:)

если не трудно дайте код....:)


 
Leonid Troyanovsky ©   (2008-11-05 18:24) [38]


> Петр   (05.11.08 18:20) [37]

> если я скажу что мне ничего на этом сайте не понятно, вы
> наверняка напишите "" ну же ты дружочек!!! какое тебе программирование.

Ну, вот чего я непонятного сказал [27, 30, 36]?

--
Regards, LVT.


 
Петр   (2008-11-05 18:26) [39]


> Leonid Troyanovsky ©   (05.11.08 18:24) [38]
>
>
> > Петр   (05.11.08 18:20) [37]
>
> > если я скажу что мне ничего на этом сайте не понятно,
> вы
> > наверняка напишите "" ну же ты дружочек!!! какое тебе
> программирование.
>
> Ну, вот чего я непонятного сказал [27, 30, 36]?
>
> --
> Regards, LVT.

ты дал ссылку где про это написано на английском языке. Вот это то мне и не понятно...:)


 
Leonid Troyanovsky ©   (2008-11-05 18:32) [40]


> Петр   (05.11.08 18:26) [39]

> Вот это то мне и не понятно...:)

ABBY те в руки. Даже google дает.

Чего не разберешь, то уж вопрошай.

--
Regards, LVT.



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

Форум: "Начинающим";
Текущий архив: 2008.12.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.009 c
2-1225459016
Alex_Ford
2008-10-31 16:16
2008.12.14
реестр


15-1223448178
Alkid
2008-10-08 10:42
2008.12.14
Софт для билд-сервера


15-1223898497
Vlad Oshin
2008-10-13 15:48
2008.12.14
GPLS - что это за условие распостранения?


3-1211271563
Ega23
2008-05-20 12:19
2008.12.14
Select * from - порядок полей


2-1225800533
newbie
2008-11-04 15:08
2008.12.14
таймер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский