Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.09.2011, 12:38
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию MDI

Всем доброе, люди пару повросов:

Вызываю дочернее окно MDI приложения:

Код:
var
KLJ: TKl_journal;
begin
KLJ := TKl_journal.Create(Application);
Klj.WindowState:=wsMaximized;
end;

1) Как узнать в последующем что окно созданно что бы не вызывать его ещё раз?


2) Если таким же методом вызывать 2 е дочернее окно то первое почемуто принимает WindowState:=wsNormal, подскажите как с этим бороться?
Ответить с цитированием
  #2  
Старый 28.09.2011, 13:16
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
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  
Старый 28.09.2011, 15:02
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

Спасибо, то что нужно, а по второму вопросу не подскажешь?
Ответить с цитированием
  #4  
Старый 28.09.2011, 15:19
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

exe по ссылке запускал? не подтверждено это:
Цитата:
2) Если таким же методом вызывать 2 е дочернее окно то первое почемуто принимает WindowState:=wsNormal, подскажите как с этим бороться?
проверил на Delphi 7 и XE2.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 28.09.2011, 15:33
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

ой стоп немного соврал по пункту 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  
Старый 28.09.2011, 16:00
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

имхо, все fsMDIChild имеют одно значение WindowState. можно через Constraints задать MinWidth и MinHeight.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 28.09.2011, 21:18
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не путай человека, WindowState у всех присутствующих в данный момент MDI-ОКОН может быть разный.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #8  
Старый 29.09.2011, 09:07
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Не путай человека, WindowState у всех присутствующих в данный момент MDI-ОКОН может быть разный.

Тогда как это сделать?
Ответить с цитированием
  #9  
Старый 29.09.2011, 09:08
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
имхо, все fsMDIChild имеют одно значение WindowState. можно через Constraints задать MinWidth и MinHeight.

подробней если можно, как я понимаю тут попытка выставить минимальные размеры окна, но как это сделать если расширение монитора у пользователей разное...

выставлю одно значение а уних слишком маленькое окно, у других на экран не влезает....

Последний раз редактировалось Dead_Gigabit, 29.09.2011 в 09:13.
Ответить с цитированием
  #10  
Старый 29.09.2011, 09:22
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

согласен, не корректно выразился.
если хоть одно дочернее окно имеет состояние (визуальное) maximized, то и все остальные будут иметь maximized. даже те, которые были minimized. переключаясь между ними Ctrl+Tab увидим их все.
т.е. невозможно сделать, к примеру, одно дочернее окно maximized, другое restores.
думаю так будет правильней мысль высказана)
кстати, такое наблюдается и в Excel (2007): делаешь один документ maximized, второй тоже становится maximized. одному restores, другой тоже становится restores.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #11  
Старый 29.09.2011, 09:38
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

Дык как решить проблему она имеет решение или нет?
Ответить с цитированием
  #12  
Старый 29.09.2011, 21:29
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

NumLock, если хоть одно дочернее окно имеет состояние (визуальное) maximized, то остальные могут иметь ЛЮБОЕ состояние и Excel в данном случае не показатель. При переключении по Ctrl-Tab, если одно дочернее окно maximized, то все последующие будут отображаться также maximized, но... если хоть одно окно таким образом не показать (через Ctrl-Tab), то оно сохранит свой первоначальный статус.

Цитата:
Сообщение от Dead_Gigabit
выставлю одно значение а уних слишком маленькое окно, у других на экран не влезает....
А кто мешает узнать текущий размер экрана?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025