Add new components for MDI applications. Add demo MDI application

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2545 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2012-10-09 10:35:17 +00:00
parent faa98477d0
commit 33c7722b0e
23 changed files with 1638 additions and 4 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@ -0,0 +1,113 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<General>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<AutoCreateForms Value="False"/>
<Title Value="project1"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<Icon Value="0"/>
</General>
<i18n>
<EnableI18N LFM="False"/>
</i18n>
<VersionInfo>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
</local>
</RunParams>
<RequiredPackages Count="2">
<Item1>
<PackageName Value="rxnew"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="5">
<Unit0>
<Filename Value="project1.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="project1"/>
</Unit0>
<Unit1>
<Filename Value="unit1.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
</Unit1>
<Unit2>
<Filename Value="unit2.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form2"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit2"/>
</Unit2>
<Unit3>
<Filename Value="unit3.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form3"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit3"/>
</Unit3>
<Unit4>
<Filename Value="unit4.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form4"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit4"/>
</Unit4>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<Target>
<Filename Value="project1"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<Other>
<CompilerMessages>
<MsgFileName Value=""/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,20 @@
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1, rxnew, Unit2, Unit3, Unit4;
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

View File

@ -0,0 +1,208 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectSession>
<Version Value="9"/>
<BuildModes Active="Default"/>
<Units Count="6">
<Unit0>
<Filename Value="project1.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="project1"/>
<UsageCount Value="20"/>
</Unit0>
<Unit1>
<Filename Value="unit1.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="45"/>
<CursorPos X="26" Y="75"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
<Unit2>
<Filename Value="unit2.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form2"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit2"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/>
<TopLine Value="7"/>
<CursorPos X="6" Y="10"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit2>
<Unit3>
<Filename Value="../../rxmdi.pas"/>
<UnitName Value="RxMDI"/>
<EditorIndex Value="1"/>
<WindowIndex Value="0"/>
<TopLine Value="294"/>
<CursorPos X="3" Y="298"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="unit3.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form3"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit3"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="9"/>
<CursorPos X="14" Y="37"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit4>
<Unit5>
<Filename Value="unit4.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form4"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit4"/>
<EditorIndex Value="4"/>
<WindowIndex Value="0"/>
<TopLine Value="12"/>
<CursorPos X="26" Y="41"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit5>
</Units>
<General>
<ActiveWindowIndexAtStart Value="0"/>
</General>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="unit1.pas"/>
<Caret Line="18" Column="27" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="unit1.pas"/>
<Caret Line="20" Column="27" TopLine="1"/>
</Position2>
<Position3>
<Filename Value="unit1.pas"/>
<Caret Line="21" Column="27" TopLine="1"/>
</Position3>
<Position4>
<Filename Value="unit1.pas"/>
<Caret Line="22" Column="27" TopLine="1"/>
</Position4>
<Position5>
<Filename Value="unit1.pas"/>
<Caret Line="23" Column="27" TopLine="1"/>
</Position5>
<Position6>
<Filename Value="unit1.pas"/>
<Caret Line="24" Column="27" TopLine="1"/>
</Position6>
<Position7>
<Filename Value="unit1.pas"/>
<Caret Line="25" Column="27" TopLine="1"/>
</Position7>
<Position8>
<Filename Value="unit1.pas"/>
<Caret Line="27" Column="27" TopLine="1"/>
</Position8>
<Position9>
<Filename Value="unit1.pas"/>
<Caret Line="42" Column="9" TopLine="15"/>
</Position9>
<Position10>
<Filename Value="unit1.pas"/>
<Caret Line="43" Column="9" TopLine="15"/>
</Position10>
<Position11>
<Filename Value="unit2.pas"/>
<Caret Line="24" Column="22" TopLine="1"/>
</Position11>
<Position12>
<Filename Value="unit1.pas"/>
<Caret Line="44" Column="9" TopLine="15"/>
</Position12>
<Position13>
<Filename Value="unit1.pas"/>
<Caret Line="46" Column="9" TopLine="15"/>
</Position13>
<Position14>
<Filename Value="unit1.pas"/>
<Caret Line="53" Column="47" TopLine="24"/>
</Position14>
<Position15>
<Filename Value="unit1.pas"/>
<Caret Line="54" Column="47" TopLine="25"/>
</Position15>
<Position16>
<Filename Value="unit1.pas"/>
<Caret Line="55" Column="47" TopLine="26"/>
</Position16>
<Position17>
<Filename Value="unit1.pas"/>
<Caret Line="55" Column="1" TopLine="28"/>
</Position17>
<Position18>
<Filename Value="unit1.pas"/>
<Caret Line="55" Column="1" TopLine="28"/>
</Position18>
<Position19>
<Filename Value="unit3.pas"/>
<Caret Line="19" Column="22" TopLine="1"/>
</Position19>
<Position20>
<Filename Value="unit3.pas"/>
<Caret Line="23" Column="22" TopLine="1"/>
</Position20>
<Position21>
<Filename Value="unit3.pas"/>
<Caret Line="26" Column="22" TopLine="1"/>
</Position21>
<Position22>
<Filename Value="unit1.pas"/>
<Caret Line="55" Column="1" TopLine="28"/>
</Position22>
<Position23>
<Filename Value="unit1.pas"/>
<Caret Line="57" Column="1" TopLine="29"/>
</Position23>
<Position24>
<Filename Value="unit1.pas"/>
<Caret Line="62" Column="47" TopLine="35"/>
</Position24>
<Position25>
<Filename Value="unit4.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position25>
<Position26>
<Filename Value="unit1.pas"/>
<Caret Line="63" Column="47" TopLine="36"/>
</Position26>
<Position27>
<Filename Value="unit1.pas"/>
<Caret Line="65" Column="26" TopLine="43"/>
</Position27>
<Position28>
<Filename Value="unit4.pas"/>
<Caret Line="22" Column="21" TopLine="4"/>
</Position28>
<Position29>
<Filename Value="unit1.pas"/>
<Caret Line="73" Column="26" TopLine="43"/>
</Position29>
<Position30>
<Filename Value="unit1.pas"/>
<Caret Line="74" Column="26" TopLine="44"/>
</Position30>
</JumpHistory>
</ProjectSession>
<EditorMacros Count="0"/>
</CONFIG>

Binary file not shown.

View File

@ -0,0 +1,129 @@
object Form1: TForm1
Left = 527
Height = 423
Top = 222
Width = 581
Caption = 'MainForm'
ClientHeight = 400
ClientWidth = 581
Menu = MainMenu1
Position = poScreenCenter
LCLVersion = '1.1'
WindowState = wsMaximized
object ToolPanel1: TToolPanel
Left = 0
Height = 31
Top = 0
Width = 581
Items = <>
Options = []
Align = alTop
BorderWidth = 4
ClientHeight = 31
ClientWidth = 581
TabOrder = 0
object RxMDICloseButton1: TRxMDICloseButton
AnchorSideTop.Control = ToolPanel1
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = ToolPanel1
AnchorSideRight.Side = asrBottom
Left = 553
Height = 22
Top = 4
Width = 23
Anchors = [akTop, akRight]
Glyph.Data = {
1A020000424D1A0200000000000036000000280000000B0000000B0000000100
200000000000E401000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000FF0000
00FF00000000000000000000000000000000000000FF000000FF000000000000
00000000000000000000000000FF000000FF0000000000000000000000FF0000
00FF000000000000000000000000000000000000000000000000000000FF0000
00FF000000FF000000FF00000000000000000000000000000000000000000000
00000000000000000000000000FF000000FF0000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000FF0000
00FF0000000000000000000000FF000000FF0000000000000000000000000000
0000000000FF000000FF00000000000000000000000000000000000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
}
end
end
object RxMDITasks1: TRxMDITasks
Left = 0
Height = 25
Top = 356
Width = 581
Align = alBottom
end
object StatusBar1: TStatusBar
Left = 0
Height = 19
Top = 381
Width = 581
Panels = <>
end
object RxMDIPanel1: TRxMDIPanel
Left = 0
Height = 325
Top = 31
Width = 581
CloseButton = RxMDICloseButton1
TaskPanel = RxMDITasks1
Align = alClient
BevelOuter = bvLowered
end
object ActionList1: TActionList
left = 440
top = 72
object sysClose: TAction
Category = 'System'
Caption = 'Close'
OnExecute = sysCloseExecute
end
object Action1: TAction
Category = 'MDI forms'
Caption = 'Form # 1'
OnExecute = Action1Execute
end
object Action2: TAction
Category = 'MDI forms'
Caption = 'Form # 2'
OnExecute = Action2Execute
end
object Action3: TAction
Category = 'MDI forms'
Caption = 'New single MDI form'
OnExecute = Action3Execute
end
end
object MainMenu1: TMainMenu
left = 408
top = 72
object MenuItem1: TMenuItem
Caption = 'System'
object MenuItem2: TMenuItem
Action = sysClose
end
end
object MenuItem3: TMenuItem
Caption = 'MDI forms'
object MenuItem4: TMenuItem
Action = Action1
end
object MenuItem5: TMenuItem
Action = Action2
end
object MenuItem7: TMenuItem
Caption = '-'
end
object MenuItem6: TMenuItem
Action = Action3
end
end
end
end

View File

@ -0,0 +1,79 @@
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, rxtoolbar, RxMDI, Forms, Controls, Graphics,
Dialogs, ActnList, Menus, ComCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Action1: TAction;
Action2: TAction;
Action3: TAction;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
sysClose: TAction;
ActionList1: TActionList;
MainMenu1: TMainMenu;
RxMDICloseButton1: TRxMDICloseButton;
RxMDIPanel1: TRxMDIPanel;
RxMDITasks1: TRxMDITasks;
StatusBar1: TStatusBar;
ToolPanel1: TToolPanel;
procedure Action1Execute(Sender: TObject);
procedure Action2Execute(Sender: TObject);
procedure Action3Execute(Sender: TObject);
procedure sysCloseExecute(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4;
{$R *.lfm}
{ TForm1 }
procedure TForm1.sysCloseExecute(Sender: TObject);
begin
Close;
end;
procedure TForm1.Action1Execute(Sender: TObject);
begin
RxMDIPanel1.ChildWindowsCreate(Form2, TForm2);
end;
procedure TForm1.Action2Execute(Sender: TObject);
begin
RxMDIPanel1.ChildWindowsCreate(Form3, TForm3);
end;
procedure TForm1.Action3Execute(Sender: TObject);
var
Form4: TForm4;
begin
Form4:=TForm4.Create(Application);
RxMDIPanel1.ChildWindowsAdd(Form4);
end;
end.

View File

@ -0,0 +1,59 @@
object Form2: TForm2
Left = 502
Height = 240
Top = 245
Width = 320
Caption = 'MDI form 1'
ClientHeight = 240
ClientWidth = 320
Icon.Data = {
7E04000000000100010010100000010020006804000016000000280000001000
0000200000000100200000000000000400006400000064000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000BE7A45FFBE7A
45FFBE7A45FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000BE7A45FFBE7A45FF78553958BE7A45FFE3CD
BCFFBE7A45FF78553958BE7A45FFBE7A45FF0000000000000000000000000000
00000000000000000000BE7A45FFE3CDBCFFD2A786FFBE7A45FFC79064FFDAB8
9DFFC79064FFBE7A45FFD2A786FFE3CDBCFFBE7A45FF00000000000000000000
00000000000000000000BE7A45FFD2A786FFDAB89DFFDAB89DFFDAB89DFFDAB8
9DFFDAB89DFFDAB89DFFDAB89DFFD2A786FFBE7A45FF00000000000000000000
0000000000000000000078553958BE7A45FFE3CDBCFFCFA17CFFBD7F4CF8C386
56FFBA7A46F4D5AE8FFFDAB89DFFBE7A45FF7855395800000000000000000000
000000000000BE7A45FFBE7A45FFC79064FFDAB89DFFBD7F4CF8B78256CD7855
3959A56F43C0BA7A46F4DAB89DFFC79064FFBE7A45FFBE7A45FF000000000000
000000000000BE7A45FFE3CDBCFFDAB89DFFDAB89DFFC38656FF785539590000
000078553959C38656FFDAB89DFFDAB89DFFE3CDBCFFBE7A45FF000000000000
000000000000BE7A45FFBE7A45FFC79064FFDAB89DFFBA7A46F49C6B42AE7855
39598F633F97BA7C49EEDAB89DFFC79064FFBE7A45FFBE7A45FF000000000000
0000000000000000000078553958BE7A45FFDAB89DFFCFA17CFFBA7A46F4C386
56FFBA7A46F4D1A582FFDAB89DFFBE7A45FF7855395800000000000000000000
00000000000000000000BE7A45FFD2A786FFDAB89DFFDAB89DFFDAB89DFFDAB8
9DFFDAB89DFFDAB89DFFDAB89DFFD2A786FFBE7A45FF00000000000000000000
00000000000000000000BE7A45FFE3CDBCFFD2A786FFBE7A45FFC79064FFDAB8
9DFFC79064FFBE7A45FFD2A786FFE3CDBCFFBE7A45FF00000000000000000000
0000000000000000000078553958BE7A45FFBE7A45FF78553958BE7A45FFE3CD
BCFFBE7A45FF78553958BE7A45FFBE7A45FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000BE7A45FFBE7A
45FFBE7A45FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000
}
OnClose = FormClose
LCLVersion = '1.1'
object Panel1: TPanel
Left = 0
Height = 50
Top = 0
Width = 320
Align = alTop
Caption = 'MDI form # 1'
TabOrder = 0
end
end

View File

@ -0,0 +1,39 @@
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
type
{ TForm2 }
TForm2 = class(TForm)
Panel1: TPanel;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
private
{ private declarations }
public
{ public declarations }
end;
var
Form2: TForm2 = nil;
implementation
{$R *.lfm}
{ TForm2 }
procedure TForm2.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
CloseAction:=caFree;
Form2:=nil;
end;
end.

View File

@ -0,0 +1,70 @@
object Form3: TForm3
Left = 604
Height = 442
Top = 239
Width = 640
Caption = 'MDI form # 2'
ClientHeight = 442
ClientWidth = 640
Icon.Data = {
7E04000000000100010010100000010020006804000016000000280000001000
0000200000000100200000000000000400006400000064000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000E2C0AAFFE2C0AAFF000000000000
00000000000000000000E2C0AAFFE2C0AAFF0000000000000000000000000000
0000000000000000000000000000C8865BFFBE713FFFC58053FF000000000000
00000000000000000000CE946EFFBE703EFFC17746FF00000000000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
00000000000000000000D6A586FFC2794AFFCA8A61FF00000000000000000000
0000000000000000000000000000D39E7CFFC2794AFFCC9068FF000000000000
00000000000000000000C9885EFFC07443FFC27849FF00000000000000000000
0000000000000000000000000000C9885EFFC2794AFFC9885EFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000BD6E3BFFBD6E3BFFE2C0AAFF000000000000
0000000000000000000000000000D4A17FFFBD6F3CFFBE703DFF000000000000
00000000000000000000C68155FFBF7241FFCC8D66FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000
}
OnClose = FormClose
LCLVersion = '1.1'
object Panel1: TPanel
Left = 0
Height = 50
Top = 0
Width = 640
Align = alTop
Caption = 'MDI form # 2'
TabOrder = 0
end
object Memo1: TMemo
Left = 0
Height = 392
Top = 50
Width = 640
Align = alClient
Lines.Strings = (
'Memo1'
)
TabOrder = 1
end
end

View File

@ -0,0 +1,41 @@
unit Unit3;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls;
type
{ TForm3 }
TForm3 = class(TForm)
Memo1: TMemo;
Panel1: TPanel;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
private
{ private declarations }
public
{ public declarations }
end;
var
Form3: TForm3 = nil;
implementation
{$R *.lfm}
{ TForm3 }
procedure TForm3.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
CloseAction:=caFree;
Form3:=nil;
end;
end.

View File

@ -0,0 +1,60 @@
object Form4: TForm4
Left = 477
Height = 446
Top = 196
Width = 620
Caption = 'Form4'
ClientHeight = 446
ClientWidth = 620
Icon.Data = {
7E04000000000100010010100000010020006804000016000000280000001000
0000200000000100200000000000000400006400000064000000000000000000
0000874A2056874A20FF874A20FF874A20FF874A204400000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000874A20FFBEA592FFB89C86FFB89C86FF874A20FF874A2044000000000000
0000000000000000000000000000858A8881858A88D3858A8881000000000000
0000874A20FFCCBBADFFA7917DFFB5957AFFAE8B72FF874A20FF874A20440000
00000000000000000000858A884C858A88FF9EA1A0FF858A88FF000000000000
0000874A20FFCCBBADFFA48D78FFA28A74FFB4957AFFB3937CFF874A20FF0000
000000000000858A884C858A88FFD2D3D4FFC2C3C4FF858A88FF000000000000
0000874A2030874A20FFD4C8BDFFA48D78FFA48D78FFBEA592FF874A20FF0000
0000858A884C858A88FFE2E3E4FFC2C4C6FF858A88FF858A8881000000000000
000000000000874A2019874A20FFCCBBADFFCCBBADFFB3937CFF874A20FF858A
8881858A88FFD3D3D4FFBDBEBFFF858A88FF858A884C00000002000000000000
00000000000000000000874A2019874A20FF874A20FF874A20FF85837DFFAAAD
ADFFC8C9CAFFBDBEBFFF858A88FF858A884C0000000000000000000000000000
0000000000000000000000000000000000000000000000000000B5B7B8FF858A
88FFB7B8B9FF858A88FF858A884C000000020000000000000000000000000000
000000000000858A884C858A88FF858A88FF858A88FF858A88FFD0D1D2FFA3A4
A4FF858A88FF858A888100000000000000000000000000000000000000000000
0000858A884C858A88FFF3F3F3FEEFF0F0FFEDEEEEFEEAECECFEB6B9BAFF858A
88FF858A884C858A88FF858A884C000000000000000000000000000000000000
0000858A88FFF5F6F6FEA9ACABFF858A88FFF7F7F7FFE2E3E5FFAAADADFFECEE
EE8100000000858A884C858A88FF858A884C0000000000000000000000000000
0000858A884C858A88FF00000000858A884C858A88FFFAFAFAFF858A88FF0000
00000000000000000000858A884C858A88FF878C8AFF0000004C000000000000
000000000000000000000000000000000000858A88FFEEF0F0FF858A88FF0000
0000000000000000000000000000858A88FFF0F0F0FF858A88FF0000004C0000
0000000000000000000000000000858A88FFE9EBECFF858A88FF858A884C0000
00000000000000000000000000000000004C858A88FFEEEFEFFC858A88FF0000
0000000000000000000000000000858A884C858A88FF858A884C000000000000
0000000000000000000000000000000000000000004C858A88FF858A884C0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000
}
OnClose = FormClose
OnCreate = FormCreate
LCLVersion = '1.1'
object Panel1: TPanel
Left = 0
Height = 50
Top = 0
Width = 620
Align = alTop
Caption = 'MDI form # ...'
TabOrder = 0
end
end

View File

@ -0,0 +1,45 @@
unit Unit4;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
type
{ TForm4 }
TForm4 = class(TForm)
Panel1: TPanel;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
CntMM:integer = 0;
implementation
{$R *.lfm}
{ TForm4 }
procedure TForm4.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
CloseAction:=caFree;
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
Inc(CntMM);
Panel1.Caption:=Panel1.Caption + IntToStr(CntMM);
Caption:=Panel1.Caption;
end;
end.

View File

@ -0,0 +1,7 @@
LazarusResources.Add('RxMDICloseIcon','PNG',[
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#11#0#0#0#11#1#3#0#0#0#147'b'#229'e'
+#0#0#0#3'sBIT'#8#8#8#219#225'O'#224#0#0#0#6'PLTE'#0#0#0#0#0#0#165'g'#185#207
+#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#9'pHYs'#0#0#14#196#0#0#14#196#1#149'+'
+#14#27#0#0#0' IDAT'#8#153'c`'#16'g'#0#2#131#3#12#146#13#12#252'l'#12'l'#12#12
+#252#12' 6P'#4#12#0'7r'#3'T'#179'3'#141'G'#0#0#0#0'IEND'#174'B`'#130
]);

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

View File

@ -41,10 +41,22 @@ msgstr "Derecho"
msgid "Carbon widget set"
msgstr ""
#: rxconst.scloseallexceptthis
msgid "Close all except this"
msgstr ""
#: rxconst.scloseallwindows
msgid "Close all windows"
msgstr ""
#: rxconst.sclosevaliderror
msgid "Error. Expected vailes..."
msgstr ""
#: rxconst.sclosewindows
msgid "Close window"
msgstr ""
#: rxconst.sdatedlgtitle
msgid "Select a Date"
msgstr "Seleccionar Fecha"

View File

@ -41,10 +41,22 @@ msgstr ""
msgid "Carbon widget set"
msgstr ""
#: rxconst.scloseallexceptthis
msgid "Close all except this"
msgstr ""
#: rxconst.scloseallwindows
msgid "Close all windows"
msgstr ""
#: rxconst.sclosevaliderror
msgid "Error. Expected vailes..."
msgstr ""
#: rxconst.sclosewindows
msgid "Close window"
msgstr ""
#: rxconst.sdatedlgtitle
msgid "Select a Date"
msgstr ""

View File

@ -41,10 +41,22 @@ msgstr "Вправо"
msgid "Carbon widget set"
msgstr "Графический интерфейс Carbon"
#: rxconst.scloseallexceptthis
msgid "Close all except this"
msgstr ""
#: rxconst.scloseallwindows
msgid "Close all windows"
msgstr ""
#: rxconst.sclosevaliderror
msgid "Error. Expected vailes..."
msgstr "Ошибка. Ожидается значение..."
#: rxconst.sclosewindows
msgid "Close window"
msgstr ""
#: rxconst.sdatedlgtitle
msgid "Select a Date"
msgstr "Выберите дату"

View File

@ -47,7 +47,7 @@ uses
Dialogs, ComponentEditors, DBPropEdits, DB, rxctrls,
RxCustomChartPanel, AutoPanel, pickdate, rxconst, tooledit, rxclock,
rxceEditLookupFields, rxpopupunit, rxspin, RxTimeEdit,
RxAboutDialog, RxViewsPanel;
RxAboutDialog, RxViewsPanel, RxMDI;
type
@ -211,6 +211,11 @@ begin
RegisterComponents('RX',[TRxViewsPanel]);
end;
procedure RegisterRxMDI;
begin
RegisterComponents('RX',[TRxMDICloseButton, TRxMDIPanel, TRxMDITasks]);
end;
procedure RegisterRxHistoryNavigator;
begin
RegisterComponents('RX Tools',[TRxHistoryNavigator]);
@ -243,6 +248,8 @@ begin
RegisterUnit('RxAboutDialog', @RegisterRxAboutDialog);
RegisterUnit('RxViewsPanel', @RegisterRxViewsPanel);
RegisterUnit('RxHistoryNavigator', @RegisterRxHistoryNavigator);
RegisterUnit('RxMDI', @RegisterRxMDI);
//

View File

@ -123,6 +123,11 @@ resourcestring
sReqValue = 'Error. Expected value for filed %s.';
sExptControlNotFound = 'Control not found in validate %s.';
{ RxMDI }
sCloseWindows = 'Close window';
sCloseAllExceptThis = 'Close all except this';
sCloseAllWindows = 'Close all windows';
implementation
end.

712
components/rx/rxmdi.pas Normal file
View File

@ -0,0 +1,712 @@
{ Free DB Manager
Copyright (C) 2005-2012 Lagunov Aleksey alexs75 at hotbox.ru
This source is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This code is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
A copy of the GNU General Public License is available on the World Wide Web
at <http://www.gnu.org/copyleft/gpl.html>. You can also obtain it by writing
to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
}
unit RxMDI;
{$I rx.inc}
interface
uses
Classes, SysUtils, Forms, Buttons, Menus, ExtCtrls, Graphics, Controls;
type
TRxMDIPanel = class;
TRxMDITasks = class;
{ TRxMDIButton }
TRxMDIButton = class(TSpeedButton)
private
FNavForm: TForm;
FNavPanel:TRxMDITasks;
FSaveClose:TCloseEvent;
procedure SeTRxMDIForm(AValue: TForm);
procedure DoCreateMenuItems;
procedure DoCloseMenu(Sender: TObject);
procedure DoCloseAllMenu(Sender: TObject);
procedure DoCloseAllExcepThisMenu(Sender: TObject);
procedure DoActivateMenu(Sender: TObject);
procedure DoCreateButtonImage;
private
FMenu:TPopupMenu;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
public
constructor CreateButton(AOwner:TRxMDITasks; AForm:TForm);
procedure Click; override; // make Click public
procedure UpdateCaption;
property NavForm:TForm read FNavForm write SeTRxMDIForm;
end;
{ TRxMDITasks }
TRxMDITasks = class(TCustomPanel)
private
FBtnScrollLeft:TSpeedButton;
FBtnScrollRigth:TSpeedButton;
FMainPanel: TRxMDIPanel;
procedure UpdateScrollBtnStatus;
procedure ScrollLeftExecute(Sender: TObject);
procedure ScrollRigthExecute(Sender: TObject);
procedure ShowHiddenBtnOnResize;
procedure ChildWindowsShowLast;
protected
procedure Paint; override;
procedure Resize; override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
public
constructor Create(TheOwner: TComponent); override;
destructor Destroy; override;
procedure AddButton(Btn:TRxMDIButton);
procedure ShowWindow(F:TForm);
property MainPanel:TRxMDIPanel read FMainPanel write FMainPanel;
published
property Align;
end;
{ TRxMDICloseButton }
TRxMDICloseButton = class(TCustomSpeedButton)
private
FInfoLabel:TBoundLabel;
FLabelSpacing:integer;
FMDIPanel:TRxMDIPanel;
protected
procedure SetParent(AParent: TWinControl); override;
procedure Loaded; override;
procedure DoPositionLabel;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure CreateInternalLabel;
public
constructor Create(AOwner: TComponent); override;
published
property Align;
property Anchors;
property Glyph;
property Flat;
end;
{ TRxMDIPanel }
TRxMDIPanel = class(TCustomPanel)
private
FCurrentChildWindow: TForm;
FCloseButton: TRxMDICloseButton;
FTaskPanel: TRxMDITasks;
procedure SetCurrentChildWindow(AValue: TForm);
procedure navCloseButtonClick(Sender: TObject);
procedure SetRxMDICloseButton(AValue: TRxMDICloseButton);
procedure SetTaskPanel(AValue: TRxMDITasks);
protected
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
public
constructor Create(TheOwner: TComponent); override;
procedure ShowWindow(F:TForm);
procedure ChildWindowsAdd(F:TForm);
procedure ChildWindowsCreate(var AForm; FC:TFormClass);
procedure ChildWindowsUpdateCaption(F:TForm);
property CurrentChildWindow:TForm read FCurrentChildWindow write SetCurrentChildWindow;
published
property CloseButton:TRxMDICloseButton read FCloseButton write SetRxMDICloseButton;
property TaskPanel:TRxMDITasks read FTaskPanel write SetTaskPanel;
property Align;
property BevelInner;
property BevelOuter;
end;
implementation
uses LResources, vclutils, rxconst;
{ TRxMDICloseButton }
procedure TRxMDICloseButton.SetParent(AParent: TWinControl);
begin
inherited SetParent(AParent);
DoPositionLabel;
end;
procedure TRxMDICloseButton.Loaded;
begin
inherited Loaded;
DoPositionLabel;
end;
procedure TRxMDICloseButton.DoPositionLabel;
begin
if FInfoLabel = nil then exit;
if Parent<>nil then
Parent.DisableAlign;
//DebugLn(['TCustomLabeledEdit.DoPositionLabel ']);
FInfoLabel.Parent := Parent;
FInfoLabel.Visible := Visible;
{ case FLabelPosition of
lpAbove:
begin
FInfoLabel.AnchorParallel(akLeft,0,Self);
FInfoLabel.AnchorToCompanion(akBottom,FLabelSpacing,Self);
end;
lpBelow:
begin
FInfoLabel.AnchorParallel(akLeft,0,Self);
FInfoLabel.AnchorToCompanion(akTop,FLabelSpacing,Self);
end;
lpLeft :
begin}
FInfoLabel.AnchorToCompanion(akRight,FLabelSpacing,Self);
FInfoLabel.AnchorVerticalCenterTo(Self);
{ end;
lpRight:
begin
FInfoLabel.AnchorToCompanion(akLeft,FLabelSpacing,Self);
FInfoLabel.AnchorVerticalCenterTo(Self);
end;
end;}
if Parent<>nil then
Parent.EnableAlign;
end;
procedure TRxMDICloseButton.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (AComponent = FInfoLabel) and (Operation = opRemove) then
FInfoLabel := nil
else
if (AComponent = FMDIPanel) and (Operation = opRemove) then
begin
FMDIPanel:=nil;
OnClick:=nil;
end;
end;
procedure TRxMDICloseButton.CreateInternalLabel;
begin
if FInfoLabel<>nil then exit;
FInfoLabel := TBoundLabel.Create(Self);
FInfoLabel.ControlStyle := FInfoLabel.ControlStyle + [csNoDesignSelectable];
//FInfoLabel.FocusControl := Self;
end;
constructor TRxMDICloseButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
// FLabelPosition := lpAbove;
FLabelSpacing := 3;
CreateInternalLabel;
Glyph:=LoadLazResBitmapImage('RxMDICloseIcon');
end;
{ TRxMDIPanel }
procedure TRxMDIPanel.SetCurrentChildWindow(AValue: TForm);
begin
FCurrentChildWindow:=AValue;
if Assigned(FCloseButton) then
begin
FCloseButton.Enabled:=Assigned(FCurrentChildWindow);
if FCloseButton.Enabled then
FCloseButton.FInfoLabel.Caption:=FCurrentChildWindow.Caption
else
FCloseButton.FInfoLabel.Caption:='';
end;
if Assigned(TaskPanel) then
TaskPanel.Visible:=Assigned(FCurrentChildWindow);
end;
procedure TRxMDIPanel.navCloseButtonClick(Sender: TObject);
begin
if Assigned(FCurrentChildWindow) then
FCurrentChildWindow.Close;
end;
procedure TRxMDIPanel.SeTRxMDICloseButton(AValue: TRxMDICloseButton);
begin
if FCloseButton=AValue then Exit;
if Assigned(FCloseButton) then
begin
FCloseButton.OnClick:=nil;
FCloseButton.FMDIPanel:=nil;
end;
FCloseButton:=AValue;
if Assigned(FCloseButton) then
begin
FCloseButton.OnClick:=@navCloseButtonClick;
FCloseButton.FMDIPanel:=Self;
end;
end;
procedure TRxMDIPanel.SetTaskPanel(AValue: TRxMDITasks);
begin
if FTaskPanel=AValue then Exit;
FTaskPanel:=AValue;
if Assigned(FTaskPanel) then
FTaskPanel.FMainPanel:=Self;
end;
procedure TRxMDIPanel.Notification(AComponent: TComponent; Operation: TOperation
);
begin
inherited Notification(AComponent, Operation);
if (AComponent = FCloseButton) and (Operation = opRemove) then
FCloseButton := nil
else
if (AComponent = FTaskPanel) and (Operation = opRemove) then
FTaskPanel:=nil;
end;
constructor TRxMDIPanel.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
Caption:='';
Align:=alClient;
BevelOuter:=bvLowered;
end;
procedure TRxMDIPanel.ShowWindow(F: TForm);
begin
TaskPanel.ShowWindow(F);
end;
procedure TRxMDIPanel.ChildWindowsAdd(F: TForm);
var
B:TRxMDIButton;
begin
F.BorderStyle:=bsNone;
F.Align:=alClient;
F.Parent:=Self;
F.Visible:=true;
F.BringToFront;
Application.MainForm.ActiveControl:=F;
B:=TRxMDIButton.CreateButton(TaskPanel, F);
end;
procedure TRxMDIPanel.ChildWindowsCreate(var AForm; FC: TFormClass);
var
FForm:TForm absolute AForm;
begin
if not Assigned(FForm) then
begin
FForm:=FC.Create(Self);
ChildWindowsAdd(FForm);
end
else
ShowWindow(FForm)
end;
procedure TRxMDIPanel.ChildWindowsUpdateCaption(F: TForm);
var
i:integer;
B:TRxMDIButton;
begin
for i:=0 to TaskPanel.ComponentCount -1 do
begin
if TRxMDIButton(TaskPanel.Components[i]).NavForm = F then
begin
TRxMDIButton(TaskPanel.Components[i]).UpdateCaption;
exit;
end;
end;
end;
{ TRxMDITasks }
procedure TRxMDITasks.UpdateScrollBtnStatus;
var
i, W:Integer;
B:TRxMDIButton;
begin
W:=FBtnScrollLeft.Width + FBtnScrollRigth.Width;
FBtnScrollLeft.Enabled:=false;
for i:=0 to ComponentCount-1 do
begin
B:=TRxMDIButton(Components[i]);
if not B.Visible then
FBtnScrollLeft.Enabled:=true
else
W:=W+B.Width + 2;
end;
FBtnScrollRigth.Enabled:=W > Width;
end;
procedure TRxMDITasks.ScrollLeftExecute(Sender: TObject);
var
i:Integer;
B:TRxMDIButton;
begin
for i:=0 to ComponentCount-1 do
begin
if (Components[i] is TRxMDIButton) then
begin
B:=TRxMDIButton(Components[i]);
if not B.Visible then
begin
B.Visible:=true;
B.Left:=FBtnScrollLeft.Width;
break;
end;
end;
end;
UpdateScrollBtnStatus;
Invalidate;
end;
procedure TRxMDITasks.ScrollRigthExecute(Sender: TObject);
var
i:Integer;
B:TRxMDIButton;
begin
for i:=0 to ComponentCount - 1 do
begin
if (Components[i] is TRxMDIButton) then
begin
B:=TRxMDIButton(Components[i]);
if B.Visible then
begin
B.Visible:=false;
break;
end;
end;
end;
UpdateScrollBtnStatus;
Invalidate;
end;
procedure TRxMDITasks.ShowHiddenBtnOnResize;
begin
end;
procedure TRxMDITasks.ChildWindowsShowLast;
var
CC:TControl;
begin
if (FMainPanel.ControlCount>1) then
begin
CC:=FMainPanel.Controls[FMainPanel.ControlCount-2];
if Assigned(CC) then
ShowWindow(CC as TForm)
end
else
FMainPanel.CurrentChildWindow:=nil;
Invalidate;
end;
procedure TRxMDITasks.Paint;
var
i:integer;
H:integer;
B:TRxMDIButton;
begin
inherited Paint;
Canvas.Pen.Color:=clBlack;
H:=Height - 2;
for i:=0 to ComponentCount - 1 do
begin
if (Components[i] is TRxMDIButton) then
begin
B:=TRxMDIButton(Components[i]);
if (B.Visible) and (B.Left > B.Width) then
begin
Canvas.Pen.Color:=clBtnShadow;
Canvas.Line(B.Left - 2, 2, B.Left - 2, H);
Canvas.Pen.Color:=clWindow;
Canvas.Line(B.Left - 1, 2, B.Left - 1, H);
end;
end;
end;
end;
procedure TRxMDITasks.Resize;
begin
inherited Resize;
if Assigned(FBtnScrollLeft) and Assigned(FBtnScrollRigth) then
UpdateScrollBtnStatus;
end;
procedure TRxMDITasks.Notification(AComponent: TComponent; Operation: TOperation
);
begin
inherited Notification(AComponent, Operation);
if (AComponent = FMainPanel) and (Operation = opRemove) then
FMainPanel := nil
end;
constructor TRxMDITasks.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
Caption:='';
FBtnScrollLeft:=TSpeedButton.Create(Self);
FBtnScrollLeft.Parent:=Self;
FBtnScrollLeft.Align:=alLeft;
FBtnScrollLeft.AnchorSide[akLeft].Control:=Self;
FBtnScrollLeft.Anchors:=[akLeft, akTop, akBottom];
FBtnScrollLeft.OnClick:=@ScrollLeftExecute;
FBtnScrollLeft.Caption:='<';
FBtnScrollLeft.ShowCaption:=true;
FBtnScrollLeft.AutoSize:=true;
FBtnScrollLeft.Flat:=true;
FBtnScrollLeft.Transparent:=false;
FBtnScrollRigth:=TSpeedButton.Create(Self);
FBtnScrollRigth.Parent:=Self;
FBtnScrollRigth.Align:=alRight;
FBtnScrollRigth.Anchors:=[akRight, akTop, akBottom];
FBtnScrollRigth.AnchorSide[akRight].Control:=Self;
FBtnScrollRigth.OnClick:=@ScrollRigthExecute;
FBtnScrollRigth.Caption:='>';
FBtnScrollRigth.ShowCaption:=true;
FBtnScrollRigth.AutoSize:=true;
FBtnScrollRigth.Flat:=true;
FBtnScrollRigth.Transparent:=false;
Align:=alBottom;
Height:=25;
end;
destructor TRxMDITasks.Destroy;
begin
FBtnScrollRigth:=nil;
FBtnScrollLeft:=nil;
inherited Destroy;
end;
procedure TRxMDITasks.AddButton(Btn: TRxMDIButton);
begin
Btn.Parent:=Self;
Btn.Left:=Width-1;
Btn.Down:=true;
Btn.BorderSpacing.Left:=3;
Btn.BorderSpacing.Right:=3;
FBtnScrollRigth.BringToFront;
FBtnScrollLeft.BringToFront;
UpdateScrollBtnStatus;
end;
procedure TRxMDITasks.ShowWindow(F: TForm);
var
i:integer;
begin
for i:=0 to ComponentCount -1 do
begin
if (Components[i] is TRxMDIButton) and (TRxMDIButton(Components[i]).NavForm = F) then
begin
TRxMDIButton(Components[i]).Click;
TRxMDIButton(Components[i]).Visible:=true;
exit;
end;
end;
end;
{ TRxMDIButton }
procedure TRxMDIButton.SeTRxMDIForm(AValue: TForm);
var
FImageIndex:integer;
B:TBitmap;
begin
if FNavForm=AValue then Exit;
FNavForm:=AValue;
if Assigned(FNavForm) then
begin
FSaveClose:=FNavForm.OnClose;
FNavForm.OnClose:=@FormClose;
Caption:=' '+FNavForm.Caption+' ';
DoCreateButtonImage;
FNavPanel.FMainPanel.CurrentChildWindow:=NavForm;
end;
{ if NavForm is TfbmDBObjectEditorForm then
begin
B:=TBitmap.Create;
try
B.Width:=fbManagerMainForm.ImageList2.Width;
B.Height:=fbManagerMainForm.ImageList2.Height;
B.Canvas.Brush.Color:=Color;
B.Canvas.FillRect(0,0, B.Width, B.Height);
FImageIndex:=ord(TfbmDBObjectEditorForm(NavForm).DBObject.DBObjectKind) + 2;
fbManagerMainForm.ImageList2.Draw(B.Canvas, 0,0,FImageIndex);
Glyph.Assign(B);
finally
B.Free;
end;
end;}
end;
procedure TRxMDIButton.DoCreateMenuItems;
var
Item: TMenuItem;
begin
Item:=TMenuItem.Create(Self);
Item.Caption:=Caption;
Item.OnClick:=@DoActivateMenu;
FMenu.Items.Add(Item);
Item:=TMenuItem.Create(Self);
Item.Caption:='-';
FMenu.Items.Add(Item);
Item:=TMenuItem.Create(Self);
Item.Caption:=sCloseWindows;
Item.OnClick:=@DoCloseMenu;
FMenu.Items.Add(Item);
Item:=TMenuItem.Create(Self);
Item.Caption:='-';
FMenu.Items.Add(Item);
Item:=TMenuItem.Create(Self);
Item.Caption:=sCloseAllExceptThis;
Item.OnClick:=@DoCloseAllExcepThisMenu;
FMenu.Items.Add(Item);
Item:=TMenuItem.Create(Self);
Item.Caption:=sCloseAllWindows;
Item.OnClick:=@DoCloseAllMenu;
FMenu.Items.Add(Item);
end;
procedure TRxMDIButton.DoCloseMenu(Sender: TObject);
begin
if Assigned(FNavForm) then
FNavForm.Close;
end;
procedure TRxMDIButton.DoCloseAllMenu(Sender: TObject);
begin
{ if Assigned(WindowTabs) then
CloseAllWindowTabs;}
end;
procedure TRxMDIButton.DoCloseAllExcepThisMenu(Sender: TObject);
var
i:integer;
F:TForm;
begin
{ if Assigned(WindowTabs) then
begin
for i:=WindowTabs.WindowCount-1 downto 0 do
begin
F:=WindowTabs.Item[i];
if F<>FNavForm then
F.Close;
end;
end;}
end;
procedure TRxMDIButton.DoActivateMenu(Sender: TObject);
begin
Click;
end;
procedure TRxMDIButton.DoCreateButtonImage;
var
FImageIndex:integer;
B:TBitmap;
begin
if Assigned(NavForm.Icon) and (NavForm.Icon.Count>0) then
begin
B:=TBitmap.Create;
try
B.Width:=NavForm.Icon.Width;
B.Height:=NavForm.Icon.Height;
B.Canvas.Brush.Color:=Color;
B.Canvas.FillRect(0,0, B.Width, B.Height);
B.Canvas.Draw(0, 0, NavForm.Icon);
Glyph.Assign(B);
finally
B.Free;
end;
end;
end;
procedure TRxMDIButton.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
if Assigned(FSaveClose) then
FSaveClose(Sender, CloseAction);
Free;
FNavPanel.ChildWindowsShowLast;
FNavPanel.ShowHiddenBtnOnResize;
end;
constructor TRxMDIButton.CreateButton(AOwner: TRxMDITasks; AForm: TForm);
begin
inherited Create(AOwner);
FNavPanel:=AOwner;
Align:=alLeft;
NavForm:=AForm;
AutoSize:=true;
Flat:=true;
GroupIndex:=1;
FMenu:=TPopupMenu.Create(Self);
FMenu.Parent:=Self;
PopupMenu:=FMenu;
DoCreateMenuItems;
AOwner.AddButton(Self);
end;
procedure TRxMDIButton.Click;
begin
inherited Click;
if Assigned(FNavForm) then
begin
FNavForm.BringToFront;
FNavPanel.FMainPanel.CurrentChildWindow:=NavForm;
Application.MainForm.ActiveControl:=NavForm.ActiveControl;
end;
Down:=true;
end;
procedure TRxMDIButton.UpdateCaption;
begin
if Assigned(FNavForm) then
Caption:=' '+FNavForm.Caption+' '
else
Caption:='---';
AdjustSize;
end;
initialization
{$I RxMDICloseIcon.lrs}
end.

View File

@ -26,8 +26,8 @@ Copyright (c) 1998 Master-Bank
translate to Lazarus by alexs in 2005 - 2012
"/>
<License Value="LGPL"/>
<Version Major="2" Minor="3" Release="1" Build="116"/>
<Files Count="66">
<Version Major="2" Minor="4" Release="1" Build="118"/>
<Files Count="67">
<Item1>
<Filename Value="autopanel.pas"/>
<UnitName Value="AutoPanel"/>
@ -295,6 +295,10 @@ translate to Lazarus by alexs in 2005 - 2012
<Filename Value="rxsortby.pas"/>
<UnitName Value="rxsortby"/>
</Item66>
<Item67>
<Filename Value="rxmdi.pas"/>
<UnitName Value="RxMDI"/>
</Item67>
</Files>
<LazDoc Paths="docs;\usr\local\share\lazarus\components\rxnew\docs"/>
<i18n>

View File

@ -18,7 +18,7 @@ uses
RxSystemServices, rxtbrsetup, RxTimeEdit, rxtoolbar, RxVersInfo,
RxViewsPanel, rxxpman, seldsfrm, tooledit, vclutils, RxCloseFormValidator,
RxHistoryNavigator, ex_rx_bin_datapacket, ex_rx_datapacket,
ex_rx_xml_datapacket, rxsortby, LazarusPackageIntf;
ex_rx_xml_datapacket, rxsortby, RxMDI, LazarusPackageIntf;
implementation