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