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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.045 c
2-1171392126
RaPToRidze
2007-02-13 21:42
2007.03.04
послать нажатие клавиши


15-1171025896
IMHO
2007-02-09 15:58
2007.03.04
Вспоминая прошлое


2-1171454709
Nija
2007-02-14 15:05
2007.03.04
Как создать Webbrowser в RunTime


4-1161170550
Alex_06
2006-10-18 15:22
2007.03.04
Получение иконки из exe-файла


1-1168441791
novice007
2007-01-10 18:09
2007.03.04
использование Lame_enc.dll





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский