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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #9  
Старый 16.12.2009, 19:54
thelv thelv вне форума
Прохожий
 
Регистрация: 19.07.2009
Сообщения: 7
Репутация: 10
По умолчанию

Интересный вариант, спасибо.

Только когда уже Form1 восстанавливаем из панели задач, то при нажатии на кнопку сворачивания на форме, она сворачивается в левый нижний угол экрана (над кнопкой пуск). [это понятно, ведь Form2 мы не убили, а она - главная форма при таком коде Project1! ]

И еще один баг - это мерцание кнопки приложения на панели задач при закрытии Form2 (она пропадает на долю секунды и появляется заново).

Вот вродебы мне удалось создать полностью рабочий код, тоже с определением Application.onRestore.

Project1

Код:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.ShowMainForm:=False;
  Application.CreateForm(TForm2, Form2);
  Form2.Show();
  Application.Run;
end.

Unit1

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure onRestore(Sender:tobject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.onRestore(Sender:TObject);
begin
  Form1.Visible:=True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnRestore:=onRestore;
end;

end.

Unit2

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

uses
  Unit1;


procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 action:=caNone;
 DestroyWindow(handle);
 Application.Minimize;
end;

end.

Тут я использую функцию DestroyWindow, чтобы закрытие Form2 не удаляло значок приложения из панели задач, как это случалось в случае если просто сделать close().

И приходится при Appication.onRestore, самому сделать Form1 видимой.

Способ дурацкий, наверно можно проще как-то, если WinApi получше знать.

И еще один баг остался: Form2 пока она еще открыта, сворачивается не вместе с приложением, а в левый нижний угол экрана.
Но мне это не важно.

В принципе вопрос решён. Всем спасибо. Но если у кого будут другие варианты буду рад увидеть.
Ответить с цитированием
 


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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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