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

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

Немодальное окно в модальном приложении, возможно? [D5]


newbie2 ©   (2007-02-14 14:56:00) 

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

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


iXT   (2007-02-16 09:34:00) [1]

Form2.Show;

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

OnClose
begin
 FormX.Enable:=true;
end;

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


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

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

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

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

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


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

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

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


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


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


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

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


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

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


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

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

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


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


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

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


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

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


Vlad Oshin   (2007-02-14 15:39:00) [9]

просто интересно.. вот такие мысли:
такое окно отслеживает над каким окном мыша
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 вперед


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


> newbie2   (14.02.07 15:15) [4]


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

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


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

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

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


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


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


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


> ага


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

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


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

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


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


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


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


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


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


Наверх

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