![]() |
|
|
#1
|
||||
|
||||
|
Всем доброе, люди пару повросов:
Вызываю дочернее окно MDI приложения: Код:
var KLJ: TKl_journal; begin KLJ := TKl_journal.Create(Application); Klj.WindowState:=wsMaximized; end; 1) Как узнать в последующем что окно созданно что бы не вызывать его ещё раз? 2) Если таким же методом вызывать 2 е дочернее окно то первое почемуто принимает WindowState:=wsNormal, подскажите как с этим бороться? |
|
#2
|
||||
|
||||
|
Код:
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Add1: TMenuItem;
Windows1: TMenuItem;
N1: TMenuItem;
AddwithCheck1: TMenuItem;
procedure Add1Click(Sender: TObject);
procedure AddwithCheck1Click(Sender: TObject);
uses Unit2;
procedure TForm1.Add1Click(Sender: TObject);
begin
with TForm2.Create(Application) do
begin
WindowState:=wsMaximized;
Caption:=IntToStr(GetTickCount);
Show;
end;
end;
procedure TForm1.AddwithCheck1Click(Sender: TObject);
begin
if Application.FindComponent('Form2')<>nil then Exit;
with TForm2.Create(Application) do
begin
WindowState:=wsMaximized;
Caption:=IntToStr(GetTickCount);
Show;
end;
end;http://data.cod.ru/126495 |
|
#3
|
||||
|
||||
|
Спасибо, то что нужно, а по второму вопросу не подскажешь?
|
|
#4
|
||||
|
||||
|
exe по ссылке запускал? не подтверждено это:
Цитата:
|
|
#5
|
||||
|
||||
|
ой стоп немного соврал по пункту 2:
первое дочернее запускаем: Код:
var KLJ: TKl_journal; begin KLJ := TKl_journal.Create(Application); Klj.WindowState:=wsMaximized; end; а потом из 1 дочернего запускаем второе Код:
var KLJ: TKl_journal; begin KLJ := TKl_journal.Create(Application); Klj.WindowState:=wsNormal; end; |
|
#6
|
||||
|
||||
|
имхо, все fsMDIChild имеют одно значение WindowState. можно через Constraints задать MinWidth и MinHeight.
|
|
#7
|
||||
|
||||
|
Не путай человека, WindowState у всех присутствующих в данный момент MDI-ОКОН может быть разный.
|
|
#8
|
||||
|
||||
|
Цитата:
Тогда как это сделать? |
|
#9
|
||||
|
||||
|
Цитата:
подробней если можно, как я понимаю тут попытка выставить минимальные размеры окна, но как это сделать если расширение монитора у пользователей разное... выставлю одно значение а уних слишком маленькое окно, у других на экран не влезает.... Последний раз редактировалось Dead_Gigabit, 29.09.2011 в 09:13. |
|
#10
|
||||
|
||||
|
согласен, не корректно выразился.
если хоть одно дочернее окно имеет состояние (визуальное) maximized, то и все остальные будут иметь maximized. даже те, которые были minimized. переключаясь между ними Ctrl+Tab увидим их все. т.е. невозможно сделать, к примеру, одно дочернее окно maximized, другое restores. думаю так будет правильней мысль высказана) кстати, такое наблюдается и в Excel (2007): делаешь один документ maximized, второй тоже становится maximized. одному restores, другой тоже становится restores. |
|
#11
|
||||
|
||||
|
Дык как решить проблему она имеет решение или нет?
|
|
#12
|
||||
|
||||
|
NumLock, если хоть одно дочернее окно имеет состояние (визуальное) maximized, то остальные могут иметь ЛЮБОЕ состояние и Excel в данном случае не показатель. При переключении по Ctrl-Tab, если одно дочернее окно maximized, то все последующие будут отображаться также maximized, но... если хоть одно окно таким образом не показать (через Ctrl-Tab), то оно сохранит свой первоначальный статус.
Цитата:
|