1 (edited by vit007 2019-11-22 08:58:52)

Topic: Помогите со свертыванием окон...

Задумка состоит из двух форм, одна является задним фоном, вторая основная. При загрузки отображается одна над одной. Появились проблемки...

Задний фон надо развернуть на максимальный размер, пробовал два способа

//frmBackground.Width := Screen.Width;
//frmBackground.Height := Screen.Height;
frmBackground.WindowState := wsMaximized;

Но не понял, как развернуть так, чтоб панель задач винды была видна. А то, щелкаешь настройки значков, панель доступна, как-то иначе - нет... Вот, как правильно надо...

И нужен скрипт, чтоб при нажатие "свертывания", обе формы сворачивались и соответственно разворачивались синхронно... Вот. Спасибо.

2 (edited by sibprogsistem 2019-11-22 09:32:00)

Re: Помогите со свертыванием окон...

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
  Form2.Show;
end;

begin
  Form1.WindowState := wsMaximized;
end.

при сворачивании основной формы, сворачиваются и остольные

 
так же можно поместить все фромы в основную форму

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
  Form2.Parent:=Form1;
  Form2.Show;
end;

begin
  Form1.WindowState := wsMaximized;
end.
Post's attachments

Attachment icon test.7z 2.27 kb, 257 downloads since 2019-11-22 

3 (edited by vit007 2019-11-22 12:30:27)

Re: Помогите со свертыванием окон...

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

4 (edited by sibprogsistem 2019-11-22 14:42:20)

Re: Помогите со свертыванием окон...

procedure Form2_OnResize (Sender: TObject);
begin
  if Form2.WindowState= wsMinimized then Form1.WindowState:= wsMinimized ;
end;

5 (edited by vit007 2019-11-23 13:02:39)

Re: Помогите со свертыванием окон...

Странно, при не выборе в borderIcons - biMaximize, то панель винды пропадает... Как можно это побороть?
Да, как настроить чтоб активной по умолчанию была вторая форма, а не форма фона...

Re: Помогите со свертыванием окон...

Здравствуйте Vit007,
Это помогает?
С Уважением,
Derek.

Post's attachments

Attachment icon minimise.zip 335.04 kb, 259 downloads since 2019-11-23 

Re: Помогите со свертыванием окон...

derek, по сути получилось одно и тоже, что предложено выше, но с помощью вашего примера, я смог увидеть возможность стайла окон... И, наверно, сделаю вообще без бордюра... Как, я понял, от центровать содержимое формы сложно, а когда отцентрирована форма в форме, то и все красиво выглядит на разных экранах...

Re: Помогите со свертыванием окон...

vit007 wrote:

... Как, я понял, отцентровать содержимое формы сложно, ...

Первой форме цепляем на событие OnResize код:

procedure Form1_OnResize (Sender: TObject);
begin
    Form2.Position:= poMainFormCenter;
end;

Вуаля! Вторая форма центрируется по первой .

Re: Помогите со свертыванием окон...

Hello Derek, vitt007,mapcreatormail

Или для каждой созданной формы всегда включайте свойство Position = poMainFormCenter в Инспекторе объектов, я делаю это каждый раз (переведено с Google)

JB

Re: Помогите со свертыванием окон...

Но чтобы убедиться, что формы хорошо центрированы, наиболее эффективным является проверка свойства
poScreenCenter (Made with Google)

JB

Re: Помогите со свертыванием окон...

vit007 wrote:

... Как, я понял, отцентровать содержимое формы сложно, ...

Если требуется отцентрировать форму, которая запихивается в форму, то можно так:

procedure Form1_OnResize (Sender: TObject);
begin
    if Form2 <> nil then
    begin
        Form2.Left:= Form1.ClientWidth div 2 - Form2.Width div 2;
        Form2.Top:= Form1.ClientHeight div 2 - Form2.Height div 2;
    end;
end;

procedure Form1_OnShow (Sender: TObject; Action: string);
begin
    Form2.Show;
    Form2.Parent:= Form1;
    Form2.Align:= alCustom;
end;

procedure Form2_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
    Form1.WindowState := wsMinimized;
end;

procedure Form1_OnClose (Sender: TObject; Action: string);
begin
    Form2:= nil;
end;

procedure Form2_OnClose (Sender: TObject; Action: string);
begin
    Form1.Close;
end;

begin
end.

12 (edited by vit007 2019-11-25 09:49:22)

Re: Помогите со свертыванием окон...

Спасибо, Но как понял никто не понял, что я хотел сказать, а именно главное слово "содержимое", т.е. таблицы, кнопки, текстовые поля... Намекая, что, если взять одну форму и ее растянуть на весь экран... А вот как раз использование "формы в форме", делает это выполнимо. Еще раз сп.