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

Вниз

Немодальное окно в модальном приложении, возможно?   Найти похожие ветки 

 
newbie2   (2007-02-14 14:56) [0]

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

возможно ли это реалзовать (и как) ?


 
Сергей М. ©   (2007-02-14 14:58) [1]


> модальном приложении


Термин "Приложение" никак не связан с термином "Модальность".


> Все формы в приложении открываются через ShowModal


Что, и главная тоже ?!


 
newbie2   (2007-02-14 15:00) [2]

> Термин "Приложение" никак не связан с термином "Модальность".
написал, для сокращенного варианта, подробности в тексте
> Что, и главная тоже ?!
ага


 
Сергей М. ©   (2007-02-14 15:07) [3]


> подробности в тексте


В каком тексте ?


> ага


Дурь какая-то)

Ну и как ты, позволь полюбопытствовать, измордовал с этой целью dpr ?


 
newbie2   (2007-02-14 15:15) [4]

я вопрос не об этом задавал
вызвано:
...
плавающая_форма.Show // это некое плавающее окно, которое должно быть доступно всегда
...
модельная_форма.ShowModal // после вызова этой формы плавающая_форма становиться не доступна пользователю

я спрашиваю как можно плавающую_форму сделать действительно доступной всегда


 
Сергей М. ©   (2007-02-14 15:22) [5]


> newbie2   (14.02.07 15:15) [4]


У тебя с головой все в порядке ?)

Модальные формы для того и придуманы, чтобы удерживать фокус вплоть до момента их закрытия !


 
Vlad Oshin ©   (2007-02-14 15:39) [6]

просто интересно.. вот такие мысли:
такое окно отслеживает над каким окном мыша
type
 TForm1 = class(TForm)
   Label1: TLabel;
   Label2: TLabel;
   Timer1: TTimer;
   procedure Timer1Timer(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   procedure ShowHwndAndClassName(CrPos: TPoint);
   procedure wmActivate (var Msg:TWMACTIVATE);   message wm_Activate;

 public

end;

var
 Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.WMActivate (var Msg:TWMActivate);
begin
 if (Msg.Active = WA_ACTIVE) or (Msg.Active = WA_CLICKACTIVE)
 then    label1.Font.Color := clActiveCaption
 else    label1.Font.Color := clInactiveCaption;
 inherited;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
 rPos: TPoint;
begin
 if Boolean(GetCursorPos(rPos)) then ShowHwndAndClassName(rPos);
end;

procedure TForm1.ShowHwndAndClassName(CrPos: TPoint);
var
 hWnd: THandle;
 aName: array [0..255] of Char;
begin
 hWnd := WindowFromPoint(CrPos);
 Label1.Caption := "Handle :  " + IntToStr(hWnd);

 if Boolean(GetClassName(hWnd, aName, 256)) then
   Label2.Caption := "ClassName :  " + string(aName)
 else
   Label2.Caption := "ClassName :  not found";
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Form1.FormStyle := fsStayOnTop;
 Timer1.Interval := 50;
end;

можно переделать так, что если над интересующем кликнули - то его и опять выставить showmodal вперед


 
newbie2   (2007-02-15 16:33) [7]

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


 
Плохиш ©   (2007-02-15 16:38) [8]


> я спрашиваю как можно плавающую_форму сделать действительно
> доступной всегда

Не вызывая другие формы как модальные или написать свою ОС.


 
newbie2   (2007-02-15 16:40) [9]

>написать свою ОС
ну это слишком глобально

думаю можно реализовать свой ShowModal внеся туда список форм для исключения


 
Плохиш ©   (2007-02-15 16:45) [10]

Я бы посоветовал для начала почитать литературу, особенно раздел по созданию приложений с SDI-интерфейсом. Может отпадёт желание иметь странное.


 
Сергей М. ©   (2007-02-15 17:07) [11]


> очень глобально


Дурь какая-то)

Чем "очень глобально" отличается от "не слишком локально" ?))))


 
newbie2   (2007-02-15 17:28) [12]

блин, народ, завязывай
ответе нормально на вопрос:
"как можно запретить доступ к форме/переключение на неё"
предполагаю сделать чтонеибудь в этом роде:
...
Form2.Show;
while Form2.Visible do
 Application.HandleMessage;
end;
...

но при этом требуется запретить возможность манипуляций юзера с текущим окном


 
newbie2   (2007-02-15 17:34) [13]

гы, блин, оттцы, пусть вам будет стыдно, заодно попробуйте литературу перечитать

если очень постараться то всего можно добиться

в общем у меня все работает :)

и даже спасибо сказать не только не хочеться но и некому, кроме себя родимого и Vlad Oshin (хотя Ваш вариант и не использовал)


 
iXT ©   (2007-02-16 09:34) [14]

Form2.Show;

OnShow
begin
 FormX.Enable:=false; //X- куча форм, которые юзеру низя трогать
end;

OnClose
begin
 FormX.Enable:=true;
end;

P.S. А вообще бред ты задумал :)



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

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

Наверх




Память: 0.5 MB
Время: 0.031 c
1-1168507230
alex_***
2007-01-11 12:20
2007.03.04
фильтрация в DBGridEh через STFilter - работает неадекватно


15-1170542687
Pasha L
2007-02-04 01:44
2007.03.04
idtcpclient. Ответ от сервера запихнуть в стрим.


1-1168833303
ORMADA
2007-01-15 06:55
2007.03.04
Манифест XP съедает часть формы


6-1158692227
Орион
2006-09-19 22:57
2007.03.04
Traffic Compressor и редирект портов


2-1171438377
s_
2007-02-14 10:32
2007.03.04
GlobalAlloc