Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2010, 13:31   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Две формы. Перекрывание.

Требуется постоянное перекрывание одной формой другой - FRMMain под FRMInter.

Вот, что сделал, но судя по всему, FRMInter.ParentWindow := FRMMain.Handle; не дает форме показаться.

Без этой строки происходит обратное перекрывание - FRMMain над FRMInter, что не есть гут.

Как все сделать правильно?

Код:
program TK;

uses
  Forms,
  UNTMain in 'Code\Forms\UNTMain.pas' {FRMMain},
  UNTInter in 'Code\Forms\UNTInter.pas' {FRMInter},
  UNTServ in 'Code\Service\UNTServ.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TFRMMain, FRMMain);
  Application.Run;
end.
Код:
unit UNTMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UNTInter, OleCtrls, SHDocVw, UNTServ;

type
  TFRMMain = class(TForm)
    WEBMain: TWebBrowser;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FRMMain : TFRMMain;
  CurDir  : String;


implementation

{$R *.dfm}

procedure TFRMMain.FormCreate(Sender: TObject);
begin
 CurDir := UNTServ.GetCurrrentDirectory;
 Application.CreateForm(TFRMInter, FRMInter);
 FRMInter.ParentWindow := FRMMain.Handle;
end;

procedure TFRMMain.FormShow(Sender: TObject);
begin
 FRMInter.Visible := TRUE;
end;

end.
Код:
unit UNTInter;

interface

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

type
  TFRMInter = class(TForm)
    IMGBack: TImage;
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FRMInter: TFRMInter;
  (* BitMaps *)
  BTMBack : TBitMap;

implementation

uses UNTMain;

{$R *.dfm}

procedure TFRMInter.FormShow(Sender: TObject);
begin
 FRMInter.Left := FRMMain.Left;
 FRMInter.Top  := FRMMain.Top;
 FRMInter.IMGBack.Canvas.Draw(0,0, BTMBack);
end;

procedure TFRMInter.FormCreate(Sender: TObject);
begin
 BTMBack := TBitMap.Create;
 BTMBack.LoadFromFile(CurDir + '\Res\Back.bmp');
end;

procedure TFRMInter.FormDestroy(Sender: TObject);
begin
 BTMBack.Free;
end;

end.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 30.05.2010, 13:46   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...а просто добавить форме которая должна быть сверху, по типу
Код:
  protected
    procedure CreateParams(var Params:TCreateParams);override;
  end;

implementation
...

procedure Tform2.CreateParams;
begin
 inherited;
 Params.WndParent:= form1.Handle
end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 30.05.2010, 13:50   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Спасибо, помогло!

А где можно подробнее почитать про Params?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 30.05.2010, 13:57   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Метод CreateParams

TWinControl перед созданием окна вызывает виртуальный метод CreateParams, позволяя программисту задать низкоуровневые параметры создаваемого окна. В процедуру передается структура данных:
Код:
TCreateParams = record
   Caption: PChar;     // Заголовок окна, соответствующий параметру
                       // lpWindowName
   Style: Longint;     // Стиль окна, соответствующий параметру dwStyle
   ExStyle: Longint;   // Расширенный стиль окна (dwExStyle)
   X, Y: Integer; 
   Width, Height: Integer; // Координаты окна
   WndParent: HWND;    // Идентификатор окна-владельца (hWndParent)
   Param: Pointer      // Дополнительный параметр (lpParam)
   WindowClass: TWndClass;  // Структура TWndClass, позволяющая задать
                            // параметры класса окна
   WinClassName: array[0..63] of Char; // Имя класса окна
                                       // (lpClassName)
 end;
Цитата:
Наследники TWinControl могут перекрыть CreateParams, создавая окна с требуемыми внешним видом и поведением. Например, необходимо создать форму, не имеющую заголовка, однако позволяющую изменять свои размеры. Delphi не предоставляет возможности задать такое поведение визуальными средствами, однако, перекрыв TForm.CreateParams, мы легко добиваемся нужного эффекта:
Код:
procedure TForm1.CreateParams(var Params: TCreateParams);
 begin
   inherited; // Вызываем унаследованный обработчик, позволяя
              // VCL подготовить «типовую» конфигурацию окна
   with Params do
     // И изменяем требуемые параметры
     Style := Style and (not WS_CAPTION) or WS_THICKFRAME or WS_POPUP;
 end;
http://hack-world.org/showthread.php?t=770
http://www.compress.ru/article.aspx?id=11554&iid=452
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 30.05.2010, 14:33   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Еще раз спасибо.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос про две формы... doniyor Общие вопросы Delphi 5 13.08.2009 17:18
Z порядок компонентов и их перекрывание друг друга Пепел Феникса Общие вопросы Delphi 6 04.05.2009 21:25
две формы StakanpORTvejna Общие вопросы Delphi 4 04.05.2009 19:32
две формы в одном приложении.. AXEnic Общие вопросы Delphi 6 22.04.2009 16:52
две формы Form1 и Form2 Михаил Юрьевич Общие вопросы Delphi 11 02.03.2008 19:38