Форум: "Начинающим";
Текущий архив: 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