Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

MDI приложение   Найти похожие ветки 

 
Iconka ©   (2004-09-07 16:25) [0]

Приветсвую всех!
Как эффективней можно реализовать переключение между дочерними окнами в MDI приложении. Напрмер как это реализованно в Opere,IBExperte или PL/SQL Developere (строка кнопок с заголовками окон)


 
Defunct ©   (2004-09-07 16:29) [1]

TToolBar


 
Mim1 ©   (2004-09-07 17:59) [2]

Вынесите следующий код в отдельный модуль и при создании mdi child окон заменяте предка на TCkgMdiChild;


 TCkgMdiChild = class(TForm)
 protected
   FToolButton:TToolButton;
   procedure TextChanged; override;
   procedure Activate; override;
   procedure Deactivate; override;
 private
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
   procedure AfterConstruction; override;
   property ToolButton:TToolButton read FToolButton;
 end;

procedure TCkgMdiChild.Activate;
begin
 inherited;
 if (ActiveControl = nil) and (FFocusAccepter <> nil) then
   try
     ActiveControl := FFocusAccepter;
   except
   end;  
 if FToolButton<> nil then FToolButton.Down := true;
end;

procedure TCkgMdiChild.AfterConstruction;
begin
 inherited;
 FToolButton.Enabled := true;

 if FFocusAccepter=nil then
   begin
     FFocusAccepter := TButton.Create(self);
     FFocusAccepter.Parent := self;
     FFocusAccepter.Left := - FFocusAccepter.Width;
     FFocusAccepter.Top := - FFocusAccepter.Height;
   end;
 FLoading := False;
end;

constructor TCkgMdiChild.Create(AOwner: TComponent);
begin
 inherited;
 FormStyle := fsMDIChild;

 if Application.MainForm is TWndMain then
   begin
     FToolButton := TToolButton.Create(nil);
     with FToolButton do
       begin
         OnClick := ToolButtonClick;
         Parent := TWndMain(Application.MainForm).AppWndBar;
         Caption := "Loading ...";
         AutoSize := true;
         Enabled := false;
       end;
   end;
end;

procedure TCkgMdiChild.Deactivate;
begin
 inherited;
 if FToolButton<> nil then FToolButton.Down := false;
end;

destructor TCkgMdiChild.Destroy;
begin
 FreeAndNil(FToolButton);
 inherited;
end;

procedure TCkgMdiChild.DoClose(var Action: TCloseAction);
begin
 action := caFree;
 inherited;
end;

procedure TCkgMdiChild.ToolButtonClick(Sender: TObject);
begin
 следующий код прийдется переписать для VCL
{  if QWidget_isVisible(Handle) then
   begin
     if (Application.MainForm as tform).ActiveMDIChild = self then
       begin
         QWidget_clearFocus(Handle);
         QWidget_hide(Handle);
       end
     else
       begin
         QWidget_clearFocus(Handle);
         if Visible and Enabled then SetFocus;
       end;
   end
 else
   begin
     QWidget_clearFocus(Handle);
     QWidget_show(Handle);
     if Visible and Enabled then SetFocus;
   end;}
end;



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.064 c
14-1093973736
Jus
2004-08-31 21:35
2004.09.19
Сон замучал!!!


1-1094186759
guest_Dmitry
2004-09-03 08:45
2004.09.19
Файл ресурсов. Вроде все по хелпу....


3-1092986116
Гаврила
2004-08-20 11:15
2004.09.19
SQL Query Analizer отказывается выполнять debug


1-1094066952
lipskiy
2004-09-01 23:29
2004.09.19
TAnimate тормозит, что делать?


14-1093880565
Cerberus
2004-08-30 19:42
2004.09.19
Мейл клиент