git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2390 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
bac149645a
commit
ff6f4c52a7
BIN
components/tdi/Demo/TDIDemo.ico
Normal file
BIN
components/tdi/Demo/TDIDemo.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 134 KiB |
111
components/tdi/Demo/TDIDemo.lpi
Normal file
111
components/tdi/Demo/TDIDemo.lpi
Normal file
@ -0,0 +1,111 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="9"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<MainUnit Value="0"/>
|
||||
<Title Value="TDIDemo"/>
|
||||
<ResourceType Value="res"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
<XPManifest>
|
||||
<DpiAware Value="True"/>
|
||||
</XPManifest>
|
||||
<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="TDI"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item2>
|
||||
</RequiredPackages>
|
||||
<Units Count="3">
|
||||
<Unit0>
|
||||
<Filename Value="TDIDemo.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TDIDemo"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="mainform.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="Main"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="MainForm"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="uform1.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="Form1"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="uForm1"/>
|
||||
</Unit2>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="TDIDemo"/>
|
||||
</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="4">
|
||||
<Item1>
|
||||
<Name Value="EAbort"/>
|
||||
<Enabled Value="False"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Name Value="ECodetoolError"/>
|
||||
<Enabled Value="False"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Name Value="EFOpenError"/>
|
||||
<Enabled Value="False"/>
|
||||
</Item3>
|
||||
<Item4>
|
||||
<Name Value="EInvalidOperation"/>
|
||||
<Enabled Value="False"/>
|
||||
</Item4>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
21
components/tdi/Demo/TDIDemo.lpr
Normal file
21
components/tdi/Demo/TDIDemo.lpr
Normal file
@ -0,0 +1,21 @@
|
||||
program TDIDemo;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
||||
cthreads,
|
||||
{$ENDIF}{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, uMainForm
|
||||
{ you can add units after this };
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
RequireDerivedFormResource := True;
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TfMainForm, fMainForm) ;
|
||||
Application.Run;
|
||||
end.
|
||||
|
632
components/tdi/Demo/TDIDemo.lps
Normal file
632
components/tdi/Demo/TDIDemo.lps
Normal file
@ -0,0 +1,632 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<ProjectSession>
|
||||
<PathDelim Value="\"/>
|
||||
<Version Value="9"/>
|
||||
<BuildModes Active="Default"/>
|
||||
<Units Count="61">
|
||||
<Unit0>
|
||||
<Filename Value="TDIDemo.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="TDIDemo"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1"/>
|
||||
<CursorPos X="36" Y="18"/>
|
||||
<UsageCount Value="84"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="mainform.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="Main"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="MainForm"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1"/>
|
||||
<CursorPos X="10" Y="8"/>
|
||||
<UsageCount Value="84"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="uform1.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="Form1"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="uForm1"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="24"/>
|
||||
<CursorPos X="15" Y="35"/>
|
||||
<UsageCount Value="84"/>
|
||||
<Loaded Value="True"/>
|
||||
<LoadedDesigner Value="True"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="umainform.pas"/>
|
||||
<ComponentName Value="fMainForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="uMainForm"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<EditorIndex Value="0"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="29"/>
|
||||
<CursorPos X="23" Y="36"/>
|
||||
<UsageCount Value="42"/>
|
||||
<Loaded Value="True"/>
|
||||
<LoadedDesigner Value="True"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<UnitName Value="TDIClass"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="237"/>
|
||||
<CursorPos X="18" Y="249"/>
|
||||
<UsageCount Value="42"/>
|
||||
<Bookmarks Count="3">
|
||||
<Item0 X="17" Y="728" ID="3"/>
|
||||
<Item1 X="1" Y="687" ID="1"/>
|
||||
<Item2 X="3" Y="649" ID="2"/>
|
||||
</Bookmarks>
|
||||
<Loaded Value="True"/>
|
||||
</Unit4>
|
||||
<Unit5>
|
||||
<Filename Value="..\tdinotebookclass.pas"/>
|
||||
<UnitName Value="TDINoteBookClass"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1"/>
|
||||
<CursorPos X="1" Y="10"/>
|
||||
<UsageCount Value="4"/>
|
||||
</Unit5>
|
||||
<Unit6>
|
||||
<Filename Value="C:\lazarus\lcl\include\customnotebook.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="740"/>
|
||||
<CursorPos X="1" Y="751"/>
|
||||
<UsageCount Value="18"/>
|
||||
</Unit6>
|
||||
<Unit7>
|
||||
<Filename Value="C:\lazarus\lcl\include\control.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="2124"/>
|
||||
<CursorPos X="1" Y="2135"/>
|
||||
<UsageCount Value="11"/>
|
||||
</Unit7>
|
||||
<Unit8>
|
||||
<Filename Value="..\tdireg.pas"/>
|
||||
<UnitName Value="TDIReg"/>
|
||||
<EditorIndex Value="6"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1"/>
|
||||
<CursorPos X="23" Y="5"/>
|
||||
<UsageCount Value="26"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit8>
|
||||
<Unit9>
|
||||
<Filename Value="..\..\..\TOOLS\DJ_FormPrincipal.pas"/>
|
||||
<ComponentName Value="FormDJ_Main"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="DJ_FormPrincipal"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="130"/>
|
||||
<CursorPos X="37" Y="146"/>
|
||||
<UsageCount Value="35"/>
|
||||
</Unit9>
|
||||
<Unit10>
|
||||
<Filename Value="C:\lazarus\lcl\stdctrls.pp"/>
|
||||
<UnitName Value="StdCtrls"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1126"/>
|
||||
<CursorPos X="3" Y="1137"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit10>
|
||||
<Unit11>
|
||||
<Filename Value="C:\lazarus\lcl\buttons.pp"/>
|
||||
<UnitName Value="Buttons"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="173"/>
|
||||
<CursorPos X="14" Y="184"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit11>
|
||||
<Unit12>
|
||||
<Filename Value="..\..\..\TOOLS\DJ_FormPrincipal.lfm"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="2191"/>
|
||||
<CursorPos X="1" Y="2212"/>
|
||||
<UsageCount Value="7"/>
|
||||
<DefaultSyntaxHighlighter Value="LFM"/>
|
||||
</Unit12>
|
||||
<Unit13>
|
||||
<Filename Value="..\..\..\ACBr\trunk\Fontes\ACBrTEFD\ACBrTEFD.pas"/>
|
||||
<UnitName Value="ACBrTEFD"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="349"/>
|
||||
<CursorPos X="22" Y="12"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit13>
|
||||
<Unit14>
|
||||
<Filename Value="umainform.lfm"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="2229"/>
|
||||
<CursorPos X="1" Y="2239"/>
|
||||
<ExtraEditorCount Value="1"/>
|
||||
<ExtraEditor1>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="2474"/>
|
||||
<CursorPos X="32" Y="2480"/>
|
||||
</ExtraEditor1>
|
||||
<UsageCount Value="10"/>
|
||||
<DefaultSyntaxHighlighter Value="LFM"/>
|
||||
</Unit14>
|
||||
<Unit15>
|
||||
<Filename Value="..\tdiconst.pas"/>
|
||||
<UnitName Value="TDIConst"/>
|
||||
<EditorIndex Value="5"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1"/>
|
||||
<CursorPos X="17" Y="9"/>
|
||||
<UsageCount Value="39"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit15>
|
||||
<Unit16>
|
||||
<Filename Value="C:\lazarus\lcl\controls.pp"/>
|
||||
<UnitName Value="Controls"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="2104"/>
|
||||
<CursorPos X="21" Y="2123"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit16>
|
||||
<Unit17>
|
||||
<Filename Value="C:\lazarus\lcl\graphics.pp"/>
|
||||
<UnitName Value="Graphics"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1466"/>
|
||||
<CursorPos X="3" Y="1477"/>
|
||||
<UsageCount Value="6"/>
|
||||
</Unit17>
|
||||
<Unit18>
|
||||
<Filename Value="C:\lazarus\components\lazcontrols\extendednotebook.pas"/>
|
||||
<UnitName Value="ExtendedNotebook"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="35"/>
|
||||
<CursorPos X="3" Y="57"/>
|
||||
<UsageCount Value="20"/>
|
||||
</Unit18>
|
||||
<Unit19>
|
||||
<Filename Value="C:\lazarus\lcl\comctrls.pp"/>
|
||||
<UnitName Value="ComCtrls"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="218"/>
|
||||
<CursorPos X="3" Y="218"/>
|
||||
<UsageCount Value="22"/>
|
||||
</Unit19>
|
||||
<Unit20>
|
||||
<Filename Value="C:\lazarus\lcl\include\pagecontrol.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="22"/>
|
||||
<CursorPos X="1" Y="34"/>
|
||||
<UsageCount Value="16"/>
|
||||
</Unit20>
|
||||
<Unit21>
|
||||
<Filename Value="..\..\..\ACBr\trunk\Fontes\ACBrComum\ACBrAAC.pas"/>
|
||||
<UnitName Value="ACBrAAC"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<UsageCount Value="5"/>
|
||||
</Unit21>
|
||||
<Unit22>
|
||||
<Filename Value="..\..\..\ACBr\trunk\Fontes\ACBrComum\ACBrPAFClass.pas"/>
|
||||
<UnitName Value="ACBrPAFClass"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="241"/>
|
||||
<CursorPos X="17" Y="252"/>
|
||||
<UsageCount Value="5"/>
|
||||
</Unit22>
|
||||
<Unit23>
|
||||
<Filename Value="C:\lazarus\lcl\include\bitbtn.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="67"/>
|
||||
<CursorPos X="40" Y="79"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit23>
|
||||
<Unit24>
|
||||
<Filename Value="C:\lazarus\lcl\menus.pp"/>
|
||||
<UnitName Value="Menus"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="110"/>
|
||||
<CursorPos X="3" Y="118"/>
|
||||
<UsageCount Value="8"/>
|
||||
</Unit24>
|
||||
<Unit25>
|
||||
<Filename Value="C:\lazarus\lcl\include\menuitem.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1085"/>
|
||||
<CursorPos X="1" Y="1103"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit25>
|
||||
<Unit26>
|
||||
<Filename Value="C:\lazarus\lcl\include\buttons.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="234"/>
|
||||
<CursorPos X="42" Y="254"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit26>
|
||||
<Unit27>
|
||||
<Filename Value="C:\lazarus\lcl\actnlist.pas"/>
|
||||
<UnitName Value="ActnList"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="365"/>
|
||||
<CursorPos X="1" Y="378"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit27>
|
||||
<Unit28>
|
||||
<Filename Value="C:\lazarus\lcl\extctrls.pp"/>
|
||||
<UnitName Value="ExtCtrls"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1144"/>
|
||||
<CursorPos X="19" Y="1161"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit28>
|
||||
<Unit29>
|
||||
<Filename Value="C:\lazarus\lcl\include\buttonglyph.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="209"/>
|
||||
<CursorPos X="61" Y="219"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit29>
|
||||
<Unit30>
|
||||
<Filename Value="C:\lazarus\lcl\alllclunits.pp"/>
|
||||
<UnitName Value="alllclunits"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="19"/>
|
||||
<CursorPos X="1" Y="34"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit30>
|
||||
<Unit31>
|
||||
<Filename Value="C:\lazarus\lcl\arrow.pp"/>
|
||||
<UnitName Value="Arrow"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="69"/>
|
||||
<CursorPos X="1" Y="87"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit31>
|
||||
<Unit32>
|
||||
<Filename Value="C:\lazarus\lcl\customdrawndrawers.pas"/>
|
||||
<UnitName Value="customdrawndrawers"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="402"/>
|
||||
<CursorPos X="3" Y="404"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit32>
|
||||
<Unit33>
|
||||
<Filename Value="C:\lazarus\lcl\interfaces\wince\wincewsfactory.pas"/>
|
||||
<UnitName Value="WinCEWSFactory"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="503"/>
|
||||
<CursorPos X="23" Y="514"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit33>
|
||||
<Unit34>
|
||||
<Filename Value="C:\lazarus\lcl\widgetset\wsmenus.pp"/>
|
||||
<UnitName Value="WSMenus"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="196"/>
|
||||
<CursorPos X="3" Y="200"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit34>
|
||||
<Unit35>
|
||||
<Filename Value="C:\lazarus\lcl\widgetset\wsfactory.pas"/>
|
||||
<UnitName Value="WSFactory"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="89"/>
|
||||
<CursorPos X="10" Y="100"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit35>
|
||||
<Unit36>
|
||||
<Filename Value="C:\lazarus\lcl\include\menu.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="72"/>
|
||||
<CursorPos X="8" Y="82"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit36>
|
||||
<Unit37>
|
||||
<Filename Value="C:\lazarus\fpc\2.6.0\source\rtl\objpas\classes\classesh.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1535"/>
|
||||
<CursorPos X="5" Y="1546"/>
|
||||
<UsageCount Value="8"/>
|
||||
</Unit37>
|
||||
<Unit38>
|
||||
<Filename Value="C:\lazarus\lcl\registerlcl.pas"/>
|
||||
<UnitName Value="RegisterLCL"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="50"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit38>
|
||||
<Unit39>
|
||||
<Filename Value="C:\lazarus\lcl\imglist.pp"/>
|
||||
<UnitName Value="ImgList"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="47"/>
|
||||
<CursorPos X="12" Y="58"/>
|
||||
<UsageCount Value="7"/>
|
||||
</Unit39>
|
||||
<Unit40>
|
||||
<Filename Value="C:\lazarus\lcl\include\custompage.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="151"/>
|
||||
<CursorPos X="1" Y="166"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit40>
|
||||
<Unit41>
|
||||
<Filename Value="C:\lazarus\lcl\lclclasses.pp"/>
|
||||
<UnitName Value="LCLClasses"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="137"/>
|
||||
<CursorPos X="1" Y="149"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit41>
|
||||
<Unit42>
|
||||
<Filename Value="C:\lazarus\lcl\buttonpanel.pas"/>
|
||||
<UnitName Value="ButtonPanel"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="183"/>
|
||||
<CursorPos X="45" Y="194"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit42>
|
||||
<Unit43>
|
||||
<Filename Value="..\..\..\ACBr\trunk\Fontes\ACBrSerial\ACBrECF.pas"/>
|
||||
<UnitName Value="ACBrECF"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="5128"/>
|
||||
<CursorPos X="1" Y="5148"/>
|
||||
<UsageCount Value="8"/>
|
||||
</Unit43>
|
||||
<Unit44>
|
||||
<Filename Value="C:\lazarus\lcl\include\wincontrol.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="4516"/>
|
||||
<CursorPos X="3" Y="4521"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit44>
|
||||
<Unit45>
|
||||
<Filename Value="..\..\..\djpdv\djmonitor\DAV.pas"/>
|
||||
<ComponentName Value="frDAV"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="Dav"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="997"/>
|
||||
<CursorPos X="3" Y="999"/>
|
||||
<UsageCount Value="8"/>
|
||||
</Unit45>
|
||||
<Unit46>
|
||||
<Filename Value="C:\lazarus\lcl\include\customform.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="2132"/>
|
||||
<CursorPos X="3" Y="2132"/>
|
||||
<UsageCount Value="11"/>
|
||||
</Unit46>
|
||||
<Unit47>
|
||||
<Filename Value="C:\lazarus\lcl\include\screen.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="978"/>
|
||||
<CursorPos X="1" Y="989"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit47>
|
||||
<Unit48>
|
||||
<Filename Value="C:\lazarus\lcl\forms.pp"/>
|
||||
<UnitName Value="Forms"/>
|
||||
<EditorIndex Value="3"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="697"/>
|
||||
<CursorPos X="3" Y="708"/>
|
||||
<UsageCount Value="13"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit48>
|
||||
<Unit49>
|
||||
<Filename Value="C:\lazarus\lcl\lclmessageglue.pas"/>
|
||||
<UnitName Value="LCLMessageGlue"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="116"/>
|
||||
<CursorPos X="1" Y="128"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit49>
|
||||
<Unit50>
|
||||
<Filename Value="C:\lazarus\lcl\interfaces\win32\win32pagecontrol.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="254"/>
|
||||
<CursorPos X="1" Y="262"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit50>
|
||||
<Unit51>
|
||||
<Filename Value="C:\lazarus\lcl\interfaces\win32\win32wsforms.pp"/>
|
||||
<UnitName Value="Win32WSForms"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="361"/>
|
||||
<CursorPos X="1" Y="375"/>
|
||||
<UsageCount Value="8"/>
|
||||
</Unit51>
|
||||
<Unit52>
|
||||
<Filename Value="C:\lazarus\lcl\widgetset\wslclclasses.pp"/>
|
||||
<UnitName Value="WSLCLClasses"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="421"/>
|
||||
<CursorPos X="3" Y="414"/>
|
||||
<UsageCount Value="8"/>
|
||||
</Unit52>
|
||||
<Unit53>
|
||||
<Filename Value="C:\lazarus\lcl\lclproc.pas"/>
|
||||
<UnitName Value="LCLProc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="851"/>
|
||||
<CursorPos X="1" Y="865"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit53>
|
||||
<Unit54>
|
||||
<Filename Value="C:\lazarus\lcl\include\tabsheet.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="49"/>
|
||||
<CursorPos X="3" Y="69"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit54>
|
||||
<Unit55>
|
||||
<Filename Value="C:\lazarus\lcl\include\winapi.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="314"/>
|
||||
<CursorPos X="30" Y="322"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit55>
|
||||
<Unit56>
|
||||
<Filename Value="C:\lazarus\lcl\interfaces\win32\win32callback.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="211"/>
|
||||
<CursorPos X="14" Y="214"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit56>
|
||||
<Unit57>
|
||||
<Filename Value="..\..\..\..\TOOLS\DJ_FormPrincipal.pas"/>
|
||||
<ComponentName Value="FormDJ_Main"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="DJ_FormPrincipal"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="132"/>
|
||||
<CursorPos X="1" Y="154"/>
|
||||
<UsageCount Value="12"/>
|
||||
<Loaded Value="True"/>
|
||||
<LoadedDesigner Value="True"/>
|
||||
</Unit57>
|
||||
<Unit58>
|
||||
<Filename Value="C:\lazarus\fpc\2.6.0\source\rtl\objpas\sysutils\sysstrh.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="208"/>
|
||||
<CursorPos X="30" Y="219"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit58>
|
||||
<Unit59>
|
||||
<Filename Value="C:\lazarus\fpc\2.6.0\source\rtl\objpas\sysutils\sysstr.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1803"/>
|
||||
<CursorPos X="3" Y="1806"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit59>
|
||||
<Unit60>
|
||||
<Filename Value="C:\lazarus\lcl\include\customcontrol.inc"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="79"/>
|
||||
<CursorPos X="15" Y="90"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit60>
|
||||
</Units>
|
||||
<General>
|
||||
<ActiveWindowIndexAtStart Value="0"/>
|
||||
</General>
|
||||
<JumpHistory Count="25" HistoryIndex="24">
|
||||
<Position1>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="606" Column="1" TopLine="594"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="608" Column="1" TopLine="594"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="609" Column="1" TopLine="594"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="611" Column="1" TopLine="594"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="612" Column="1" TopLine="594"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="611" Column="1" TopLine="594"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="612" Column="1" TopLine="594"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="609" Column="37" TopLine="584"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="615" Column="19" TopLine="593"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="1" Column="1" TopLine="1"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="222" Column="9" TopLine="203"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="229" Column="1" TopLine="209"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="uform1.pas"/>
|
||||
<Caret Line="69" Column="25" TopLine="47"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="umainform.pas"/>
|
||||
<Caret Line="91" Column="83" TopLine="82"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="58" Column="15" TopLine="47"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="254" Column="3" TopLine="248"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="221" Column="1" TopLine="211"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="8" Column="38" TopLine="1"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="252" Column="1" TopLine="241"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="256" Column="1" TopLine="241"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="54" Column="1" TopLine="45"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="188" Column="1" TopLine="178"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="..\tdiclass.pas"/>
|
||||
<Caret Line="225" Column="1" TopLine="215"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="umainform.pas"/>
|
||||
<Caret Line="1" Column="1" TopLine="1"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="umainform.pas"/>
|
||||
<Caret Line="40" Column="48" TopLine="29"/>
|
||||
</Position25>
|
||||
</JumpHistory>
|
||||
</ProjectSession>
|
||||
</CONFIG>
|
BIN
components/tdi/Demo/TDIDemo.res
Normal file
BIN
components/tdi/Demo/TDIDemo.res
Normal file
Binary file not shown.
52
components/tdi/Demo/uform1.lfm
Normal file
52
components/tdi/Demo/uform1.lfm
Normal file
@ -0,0 +1,52 @@
|
||||
object Form1: TForm1
|
||||
Left = 623
|
||||
Height = 300
|
||||
Top = 319
|
||||
Width = 500
|
||||
Caption = 'Form1'
|
||||
ClientHeight = 300
|
||||
ClientWidth = 500
|
||||
Color = clScrollBar
|
||||
Constraints.MaxHeight = 300
|
||||
Constraints.MaxWidth = 500
|
||||
Constraints.MinHeight = 200
|
||||
Constraints.MinWidth = 300
|
||||
OnClose = FormClose
|
||||
OnCloseQuery = FormCloseQuery
|
||||
OnDestroy = FormDestroy
|
||||
LCLVersion = '1.1'
|
||||
object Button1: TButton
|
||||
Left = 376
|
||||
Height = 25
|
||||
Top = 248
|
||||
Width = 86
|
||||
AutoSize = True
|
||||
Caption = 'Close Form'
|
||||
OnClick = Button1Click
|
||||
TabOrder = 2
|
||||
end
|
||||
object Edit1: TEdit
|
||||
Left = 40
|
||||
Height = 23
|
||||
Top = 24
|
||||
Width = 82
|
||||
TabOrder = 0
|
||||
Text = 'Edit1'
|
||||
end
|
||||
object Edit2: TEdit
|
||||
Left = 40
|
||||
Height = 23
|
||||
Top = 56
|
||||
Width = 82
|
||||
OnExit = Edit2Exit
|
||||
TabOrder = 1
|
||||
end
|
||||
object Label1: TLabel
|
||||
Left = 51
|
||||
Height = 16
|
||||
Top = 268
|
||||
Width = 35
|
||||
Caption = 'Label1'
|
||||
ParentColor = False
|
||||
end
|
||||
end
|
80
components/tdi/Demo/uform1.pas
Normal file
80
components/tdi/Demo/uform1.pas
Normal file
@ -0,0 +1,80 @@
|
||||
unit uForm1 ;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls ;
|
||||
|
||||
type
|
||||
|
||||
{ TForm1 }
|
||||
|
||||
TForm1 = class(TForm)
|
||||
Button1 : TButton ;
|
||||
Edit1 : TEdit ;
|
||||
Edit2 : TEdit ;
|
||||
Label1 : TLabel ;
|
||||
procedure Button1Click(Sender : TObject) ;
|
||||
procedure Edit2Exit(Sender : TObject) ;
|
||||
procedure FormClose(Sender : TObject ; var CloseAction : TCloseAction) ;
|
||||
procedure FormCloseQuery(Sender : TObject ; var CanClose : boolean) ;
|
||||
procedure FormDestroy(Sender : TObject) ;
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
end ;
|
||||
|
||||
var
|
||||
Form1 : TForm1 ;
|
||||
|
||||
implementation
|
||||
|
||||
Uses uMainForm;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TForm1 }
|
||||
|
||||
procedure TForm1.Button1Click(Sender : TObject) ;
|
||||
begin
|
||||
// You can close Forms from Inside, TDI will detect and close the parent Page //
|
||||
Close ;
|
||||
end;
|
||||
|
||||
procedure TForm1.Edit2Exit(Sender : TObject) ;
|
||||
begin
|
||||
if Edit2.Text = '' then
|
||||
begin
|
||||
Label1.Caption := 'Edit2 cant be empty';
|
||||
ShowMessage( 'Edit2 cant be empty' );
|
||||
Edit2.SetFocus;
|
||||
end ;
|
||||
end;
|
||||
|
||||
procedure TForm1.FormClose(Sender : TObject ; var CloseAction : TCloseAction) ;
|
||||
begin
|
||||
CloseAction := caFree;
|
||||
fMainForm.mEvents.Lines.Add( 'Form1.Close' );
|
||||
end;
|
||||
|
||||
procedure TForm1.FormCloseQuery(Sender : TObject ; var CanClose : boolean) ;
|
||||
begin
|
||||
if Edit2.Text = '' then
|
||||
begin
|
||||
CanClose := False;
|
||||
ShowMessage( 'Remember... Edit2 cant be empty' );
|
||||
Edit2.Text := 'Ok, fixed';
|
||||
end ;
|
||||
fMainForm.mEvents.Lines.Add( 'Form1.CloseQuery: '+BoolToStr(CanClose,'True','False') );
|
||||
end;
|
||||
|
||||
procedure TForm1.FormDestroy(Sender : TObject) ;
|
||||
begin
|
||||
fMainForm.mEvents.Lines.Add( 'Form1.Destroy' );
|
||||
end;
|
||||
|
||||
end.
|
||||
|
2499
components/tdi/Demo/umainform.lfm
Normal file
2499
components/tdi/Demo/umainform.lfm
Normal file
File diff suppressed because it is too large
Load Diff
121
components/tdi/Demo/umainform.pas
Normal file
121
components/tdi/Demo/umainform.pas
Normal file
@ -0,0 +1,121 @@
|
||||
unit uMainForm ;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
|
||||
ComCtrls, Buttons, StdCtrls, ExtCtrls, TDIClass , types;
|
||||
|
||||
type
|
||||
|
||||
{ TfMainForm }
|
||||
|
||||
TfMainForm = class(TForm)
|
||||
Button1 : TButton ;
|
||||
Button2 : TButton ;
|
||||
cbxBackgroundCorner : TComboBox ;
|
||||
Edit1 : TEdit ;
|
||||
Edit2 : TEdit ;
|
||||
Edit3 : TEdit ;
|
||||
Edit4 : TEdit ;
|
||||
Image1 : TImage ;
|
||||
ImageList1 : TImageList ;
|
||||
Label1 : TLabel ;
|
||||
MainMenu1 : TMainMenu ;
|
||||
mEvents : TMemo ;
|
||||
MenuItem1 : TMenuItem ;
|
||||
MenuItem2 : TMenuItem ;
|
||||
miExit : TMenuItem ;
|
||||
miForm2 : TMenuItem ;
|
||||
miForm1 : TMenuItem ;
|
||||
pBottom : TPanel ;
|
||||
Splitter1 : TSplitter ;
|
||||
StatusBar1 : TStatusBar ;
|
||||
TabSheet1 : TTabSheet ;
|
||||
TabSheet2 : TTabSheet ;
|
||||
TDINoteBook1 : TTDINoteBook ;
|
||||
procedure cbxBackgroundCornerChange(Sender : TObject) ;
|
||||
procedure FormClose(Sender : TObject ; var CloseAction : TCloseAction) ;
|
||||
procedure FormCloseQuery(Sender : TObject ; var CanClose : boolean) ;
|
||||
procedure FormCreate(Sender : TObject) ;
|
||||
procedure miExitClick(Sender : TObject) ;
|
||||
procedure miForm1Click(Sender : TObject) ;
|
||||
procedure TDINoteBook1Change(Sender : TObject) ;
|
||||
private
|
||||
{ private declarations }
|
||||
Procedure ShowNewControl(Sender: TObject);
|
||||
|
||||
public
|
||||
{ public declarations }
|
||||
end ;
|
||||
|
||||
var
|
||||
fMainForm : TfMainForm ;
|
||||
|
||||
implementation
|
||||
|
||||
Uses uForm1 ;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TfMainForm }
|
||||
|
||||
procedure TfMainForm.FormCreate(Sender : TObject) ;
|
||||
begin
|
||||
// This will show how TDI can preserve ActiveControl in Forms, when Changing Pages //
|
||||
Screen.OnActiveControlChange := @ShowNewControl;
|
||||
|
||||
cbxBackgroundCorner.ItemIndex := Integer(TDINoteBook1.BackgroundCorner);
|
||||
end;
|
||||
|
||||
procedure TfMainForm.cbxBackgroundCornerChange(Sender : TObject) ;
|
||||
begin
|
||||
TDINoteBook1.BackgroundCorner := TTDIBackgroundCorner( cbxBackgroundCorner.ItemIndex );
|
||||
end;
|
||||
|
||||
procedure TfMainForm.FormClose(Sender : TObject ; var CloseAction : TCloseAction
|
||||
) ;
|
||||
begin
|
||||
Screen.OnActiveControlChange := nil;
|
||||
end;
|
||||
|
||||
procedure TfMainForm.FormCloseQuery(Sender : TObject ; var CanClose : boolean) ;
|
||||
begin
|
||||
CanClose := TDINoteBook1.CanCloseAllPages;
|
||||
end;
|
||||
|
||||
procedure TfMainForm.miExitClick(Sender : TObject) ;
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TfMainForm.miForm1Click(Sender : TObject) ;
|
||||
begin
|
||||
// You can Use Form Types //
|
||||
TDINoteBook1.CreateFormInNewPage( TForm1, 3 );
|
||||
end;
|
||||
|
||||
procedure TfMainForm.TDINoteBook1Change(Sender : TObject) ;
|
||||
begin
|
||||
mEvents.Lines.Add('OnChange');
|
||||
end;
|
||||
|
||||
procedure TfMainForm.ShowNewControl(Sender : TObject) ;
|
||||
var
|
||||
ControlCaption : String ;
|
||||
begin
|
||||
|
||||
if Assigned( Screen.ActiveControl ) then
|
||||
ControlCaption := Screen.ActiveControl.ClassName + ' - '+
|
||||
Screen.ActiveControl.Name
|
||||
else
|
||||
ControlCaption := 'nil' ;
|
||||
|
||||
StatusBar1.Panels[1].Text := ControlCaption;
|
||||
mEvents.Lines.Add( 'New Control: '+ControlCaption );
|
||||
end ;
|
||||
|
||||
end.
|
||||
|
10
components/tdi/read-me.txt
Normal file
10
components/tdi/read-me.txt
Normal file
@ -0,0 +1,10 @@
|
||||
What is TDI ?
|
||||
Please see:
|
||||
http://en.wikipedia.org/wiki/Tab_%28GUI%29
|
||||
|
||||
This is a very alfa post...
|
||||
I will write a Page on Wiki, and adjust all files for LGPL License
|
||||
|
||||
Author:
|
||||
Daniel Simões de Almeida
|
||||
daniel@djsystem.com.br
|
53
components/tdi/tdi.lpk
Normal file
53
components/tdi/tdi.lpk
Normal file
@ -0,0 +1,53 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<Package Version="4">
|
||||
<PathDelim Value="\"/>
|
||||
<Name Value="TDI"/>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<SearchPaths>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Other>
|
||||
<CompilerMessages>
|
||||
<MsgFileName Value=""/>
|
||||
</CompilerMessages>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
<Files Count="3">
|
||||
<Item1>
|
||||
<Filename Value="tdiclass.pas"/>
|
||||
<UnitName Value="TDIClass"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Filename Value="tdiconst.pas"/>
|
||||
<UnitName Value="TDIConst"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Filename Value="tdireg.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="TDIReg"/>
|
||||
</Item3>
|
||||
</Files>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<RequiredPkgs Count="3">
|
||||
<Item1>
|
||||
<PackageName Value="LazControls"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<PackageName Value="FCL"/>
|
||||
</Item3>
|
||||
</RequiredPkgs>
|
||||
<UsageOptions>
|
||||
<UnitPath Value="$(PkgOutDir)"/>
|
||||
</UsageOptions>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
</PublishOptions>
|
||||
</Package>
|
||||
</CONFIG>
|
21
components/tdi/tdi.pas
Normal file
21
components/tdi/tdi.pas
Normal file
@ -0,0 +1,21 @@
|
||||
{ This file was automatically created by Lazarus. Do not edit!
|
||||
This source is only used to compile and install the package.
|
||||
}
|
||||
|
||||
unit TDI ;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
TDIClass, TDIConst, TDIReg, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
procedure Register ;
|
||||
begin
|
||||
RegisterUnit('TDIReg', @TDIReg.Register) ;
|
||||
end ;
|
||||
|
||||
initialization
|
||||
RegisterPackage('TDI', @Register) ;
|
||||
end.
|
791
components/tdi/tdiclass.pas
Normal file
791
components/tdi/tdiclass.pas
Normal file
@ -0,0 +1,791 @@
|
||||
unit TDIClass ;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, ComCtrls, ExtCtrls, Menus,
|
||||
ExtendedNotebook, Buttons, Graphics ;
|
||||
|
||||
type
|
||||
|
||||
ETDIError = class( Exception ) ;
|
||||
|
||||
TTDICloseTabButtom = (tbNone, tbMenu, tbButtom ) ;
|
||||
TTDIBackgroundCorner = (coTopLeft, coTopRight, coBottomLeft, coBottomRight);
|
||||
|
||||
{ TTDIAction }
|
||||
|
||||
TTDIAction = class( TPersistent )
|
||||
private
|
||||
FCaption : String ;
|
||||
FImageIndex : Integer ;
|
||||
public
|
||||
Constructor Create ;
|
||||
published
|
||||
property Caption : String read FCaption write FCaption ;
|
||||
property ImageIndex : Integer read FImageIndex write FImageIndex ;
|
||||
end ;
|
||||
|
||||
{ TTDIActions }
|
||||
|
||||
TTDIActions = Class( TPersistent )
|
||||
private
|
||||
FCloseAllTabs : TTDIAction ;
|
||||
FCloseTab : TTDIAction ;
|
||||
FTabsMenu : TTDIAction ;
|
||||
public
|
||||
Constructor Create ;
|
||||
Destructor Destroy ; override;
|
||||
published
|
||||
property TabsMenu : TTDIAction read FTabsMenu write FTabsMenu ;
|
||||
property CloseTab : TTDIAction read FCloseTab write FCloseTab ;
|
||||
property CloseAllTabs : TTDIAction read FCloseAllTabs write FCloseAllTabs ;
|
||||
end ;
|
||||
|
||||
{ TTDIPage }
|
||||
|
||||
TTDIPage = class(TTabSheet)
|
||||
private
|
||||
fsFormInPage : TForm ;
|
||||
fsLastActiveControl: TWinControl;
|
||||
|
||||
procedure OnResizeTDIPage(Sender : TObject) ;
|
||||
|
||||
procedure SetFormInPage(AValue : TForm) ;
|
||||
protected
|
||||
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||
|
||||
public
|
||||
constructor Create(TheOwner: TComponent ); override;
|
||||
|
||||
procedure RestoreLastFocusedControl ;
|
||||
|
||||
property FormInPage : TForm read fsFormInPage write SetFormInPage ;
|
||||
property LastActiveControl : TWinControl read fsLastActiveControl write fsLastActiveControl ;
|
||||
end ;
|
||||
|
||||
{ TTDINoteBook }
|
||||
|
||||
TTDINoteBook = class(TExtendedNotebook)
|
||||
private
|
||||
FBackgroundImage : TImage ;
|
||||
FCloseTabButtom : TTDICloseTabButtom ;
|
||||
FFixedPages : Integer ;
|
||||
FMainMenu : TMainMenu ;
|
||||
FBackgroundCorner : TTDIBackgroundCorner ;
|
||||
FTDIActions : TTDIActions ;
|
||||
|
||||
procedure SetBackgroundImage(AValue : TImage) ;
|
||||
procedure SetBackgroundCorner(AValue : TTDIBackgroundCorner) ;
|
||||
procedure SetCloseTabButtom(AValue : TTDICloseTabButtom) ;
|
||||
procedure SetMainMenu(AValue : TMainMenu) ;
|
||||
private
|
||||
FCloseBitBtn : TBitBtn ;
|
||||
FCloseMenuItem : TMenuItem ;
|
||||
FCloseMenuItem2 : TMenuItem ;
|
||||
FCloseAllTabsMenuItem : TMenuItem ;
|
||||
FRestoreActiveControl : Boolean ;
|
||||
FTabsMenuItem : TMenuItem ;
|
||||
FTimerRestoreLastControl : TTimer;
|
||||
FVerifyIfCanChangePage : Boolean ;
|
||||
|
||||
procedure CreateCloseBitBtn ;
|
||||
procedure CreateCloseMenuItem ;
|
||||
procedure CreateTabsMenuItem ;
|
||||
|
||||
procedure ShowCloseButtom ;
|
||||
procedure HideCloseButtom ;
|
||||
procedure DrawBackgroundImage ;
|
||||
|
||||
procedure CloseTabClicked( Sender: TObject );
|
||||
procedure CloseAllTabsClicked( Sender: TObject );
|
||||
procedure SelectTabByMenu( Sender: TObject );
|
||||
procedure DropDownTabsMenu( Sender: TObject );
|
||||
|
||||
procedure TimerRestoreLastFocus( Sender: TObject );
|
||||
|
||||
protected
|
||||
function CanChange: Boolean; override;
|
||||
procedure DoChange; override;
|
||||
procedure Loaded; override;
|
||||
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||
|
||||
public
|
||||
constructor Create(TheOwner: TComponent ); override;
|
||||
destructor Destroy ; override;
|
||||
|
||||
procedure CreateFormInNewPage( AFormClass: TFormClass; ImageIndex : Integer = -1 ) ;
|
||||
procedure ShowForInNewPage( AForm: TForm; ImageIndex : Integer = -1 );
|
||||
|
||||
Function CanCloseAllPages: Boolean ;
|
||||
Function CanCloseAPage( APageIndex: Integer): Boolean;
|
||||
procedure CheckInterface;
|
||||
|
||||
published
|
||||
property BackgroundImage : TImage read FBackgroundImage
|
||||
write SetBackgroundImage ;
|
||||
property BackgroundCorner : TTDIBackgroundCorner read FBackgroundCorner
|
||||
write SetBackgroundCorner default coBottomRight ;
|
||||
property MainMenu : TMainMenu read FMainMenu write SetMainMenu ;
|
||||
property CloseTabButtom : TTDICloseTabButtom read FCloseTabButtom
|
||||
write SetCloseTabButtom default tbMenu ;
|
||||
|
||||
property TDIActions : TTDIActions read FTDIActions write FTDIActions ;
|
||||
|
||||
property RestoreActiveControl : Boolean read FRestoreActiveControl
|
||||
write FRestoreActiveControl default True;
|
||||
property VerifyIfCanChangePage : Boolean read FVerifyIfCanChangePage
|
||||
write FVerifyIfCanChangePage default True;
|
||||
property FixedPages : Integer read FFixedPages write FFixedPages default 0;
|
||||
end ;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
Uses TDIConst ;
|
||||
|
||||
{ TTDIAction }
|
||||
|
||||
constructor TTDIAction.Create ;
|
||||
begin
|
||||
FCaption := '';
|
||||
FImageIndex := -1;
|
||||
end ;
|
||||
|
||||
{ TTDIActions }
|
||||
|
||||
constructor TTDIActions.Create ;
|
||||
begin
|
||||
FCloseAllTabs := TTDIAction.Create;
|
||||
FCloseAllTabs.Caption := sActionCloseAllTabs;
|
||||
|
||||
FCloseTab := TTDIAction.Create;
|
||||
FCloseTab.Caption := sActionCloseTab;
|
||||
|
||||
FTabsMenu := TTDIAction.Create;
|
||||
FTabsMenu.Caption := sActionTabsMenu;
|
||||
end ;
|
||||
|
||||
destructor TTDIActions.Destroy ;
|
||||
begin
|
||||
FCloseAllTabs.Free;
|
||||
FCloseTab.Free;
|
||||
FTabsMenu.Free;
|
||||
|
||||
inherited Destroy;
|
||||
end ;
|
||||
|
||||
{ TTDIPage }
|
||||
|
||||
constructor TTDIPage.Create(TheOwner : TComponent) ;
|
||||
begin
|
||||
inherited Create(TheOwner) ;
|
||||
|
||||
Self.Parent := TWinControl( TheOwner ) ;
|
||||
Self.OnResize := @OnResizeTDIPage ;
|
||||
|
||||
fsLastActiveControl := nil ;
|
||||
end ;
|
||||
|
||||
procedure TTDIPage.RestoreLastFocusedControl ;
|
||||
begin
|
||||
if Assigned( fsLastActiveControl ) then
|
||||
begin
|
||||
if fsLastActiveControl <> Screen.ActiveControl then
|
||||
begin
|
||||
if fsLastActiveControl.Visible and fsLastActiveControl.Enabled then
|
||||
begin
|
||||
try
|
||||
fsLastActiveControl.SetFocus ;
|
||||
//FormInPage.ActiveControl := fsLastActiveControl;
|
||||
except
|
||||
end ;
|
||||
end ;
|
||||
end
|
||||
end
|
||||
else
|
||||
begin
|
||||
{ No LastActiveControle ? Ok, if current Screen control isn't on Tab,
|
||||
go to first Control on Tab... }
|
||||
if not Self.ContainsControl( Screen.ActiveControl ) then
|
||||
Self.SelectNext( Self, True, True);
|
||||
end
|
||||
end ;
|
||||
|
||||
procedure TTDIPage.SetFormInPage(AValue : TForm) ;
|
||||
begin
|
||||
fsFormInPage := AValue ;
|
||||
|
||||
// Adjusting Page Caption and Color as the Form //
|
||||
Caption := fsFormInPage.Caption;
|
||||
//Color := fsFormInPage.Color;
|
||||
|
||||
// Adjusting AForm Border Style and Align //
|
||||
fsFormInPage.BorderStyle := bsNone ;
|
||||
//fsFormInPage.Align := alClient ;
|
||||
|
||||
// Change Form Parent to the Page //
|
||||
fsFormInPage.Parent := Self;
|
||||
//fsFormInPage.FreeNotification(Self); // This cause a SIGSEGV, when Form is Closed from inside
|
||||
|
||||
// Show the Form //
|
||||
fsFormInPage.Visible := True ;
|
||||
|
||||
// Saving the ActiveControl on the Form //
|
||||
fsLastActiveControl := fsFormInPage.ActiveControl;
|
||||
end ;
|
||||
|
||||
procedure TTDIPage.Notification(AComponent : TComponent ; Operation : TOperation
|
||||
) ;
|
||||
begin
|
||||
inherited Notification(AComponent, Operation) ;
|
||||
|
||||
if (fsFormInPage <> nil) and
|
||||
(Operation = opRemove) and
|
||||
(AComponent = fsFormInPage) then
|
||||
fsFormInPage := nil;
|
||||
end ;
|
||||
|
||||
procedure TTDIPage.OnResizeTDIPage(Sender : TObject) ;
|
||||
begin
|
||||
if not Assigned(fsFormInPage) then exit ;
|
||||
|
||||
{ If Form has MaxConstrains and doesn't fit all the Screen, Centralize on
|
||||
TabSheet }
|
||||
if (fsFormInPage.Width < Width) and (fsFormInPage.Height < Height) then
|
||||
begin
|
||||
fsFormInPage.Align := alNone;
|
||||
|
||||
if (fsFormInPage.Width < Width) then
|
||||
fsFormInPage.Left := Trunc( (Width - fsFormInPage.Width) / 2 );
|
||||
|
||||
if (fsFormInPage.Height < Height) then
|
||||
fsFormInPage.Top := Trunc( (Height - fsFormInPage.Height) / 2 );
|
||||
end
|
||||
else
|
||||
fsFormInPage.Align := alClient;
|
||||
end ;
|
||||
|
||||
{ TTDINoteBook }
|
||||
|
||||
constructor TTDINoteBook.Create(TheOwner : TComponent) ;
|
||||
begin
|
||||
inherited Create(TheOwner) ;
|
||||
|
||||
FCloseTabButtom := tbMenu;
|
||||
FBackgroundCorner := coBottomRight;
|
||||
FFixedPages := 0;
|
||||
FRestoreActiveControl := True;
|
||||
FVerifyIfCanChangePage := True;
|
||||
FBackgroundImage := nil;
|
||||
FCloseBitBtn := nil;
|
||||
FCloseMenuItem := nil;
|
||||
FCloseMenuItem2 := nil;
|
||||
FCloseAllTabsMenuItem := nil;
|
||||
FTabsMenuItem := nil;
|
||||
FTDIActions := TTDIActions.Create;
|
||||
|
||||
{ This is ugly, I know... but I didn't find a best solution to restore Last
|
||||
Focused Control of TDIPage }
|
||||
FTimerRestoreLastControl := TTimer.Create(Self);
|
||||
FTimerRestoreLastControl.Enabled := False;
|
||||
FTimerRestoreLastControl.Interval := 10;
|
||||
FTimerRestoreLastControl.OnTimer := @TimerRestoreLastFocus;
|
||||
end ;
|
||||
|
||||
destructor TTDINoteBook.Destroy ;
|
||||
begin
|
||||
if Assigned( FCloseBitBtn ) then
|
||||
FCloseBitBtn.Free ;
|
||||
|
||||
{ // Don't Destroy MenuItens... They will be destroyed by MainMenu //
|
||||
|
||||
if Assigned( FCloseMenuItem ) then
|
||||
FCloseMenuItem.Free ;
|
||||
|
||||
if Assigned( FTabsMenuItem ) then
|
||||
begin
|
||||
FTabsMenuItem.Free ;
|
||||
FCloseMenuItem2.Free;
|
||||
FCloseAllTabsMenuItem.Free;
|
||||
end ;
|
||||
}
|
||||
|
||||
FTDIActions.Free;
|
||||
|
||||
FTimerRestoreLastControl.Free;
|
||||
|
||||
inherited Destroy;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.CreateCloseBitBtn ;
|
||||
begin
|
||||
if FCloseBitBtn <> nil then exit;
|
||||
|
||||
FCloseBitBtn := TBitBtn.Create( Self ) ;
|
||||
with FCloseBitBtn do
|
||||
begin
|
||||
Name := 'CloseBitBtn';
|
||||
Caption := 'X';
|
||||
Visible := False ;
|
||||
Parent := Nil;
|
||||
Height := 22;
|
||||
Width := 22;
|
||||
Layout := blGlyphTop;
|
||||
OnClick := @CloseTabClicked;
|
||||
TabStop := False;
|
||||
AnchorSideTop.Control := Self;
|
||||
AnchorSideRight.Control := Self;
|
||||
AnchorSideRight.Side := asrBottom;
|
||||
Anchors := [akTop, akRight]
|
||||
end ;
|
||||
|
||||
if Self.Owner is TWinControl then
|
||||
FCloseBitBtn.Parent := TWinControl(Self.Owner) ;
|
||||
|
||||
// Seting Image to FCloseBitBtn //;
|
||||
if Assigned( Images ) and (FTDIActions.CloseTab.ImageIndex > -1) then
|
||||
begin
|
||||
Images.GetBitmap( FTDIActions.CloseTab.ImageIndex, FCloseBitBtn.Glyph );
|
||||
FCloseBitBtn.Caption := '';
|
||||
end ;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.CreateCloseMenuItem ;
|
||||
begin
|
||||
if FCloseMenuItem <> nil then exit;
|
||||
|
||||
if not Assigned( FMainMenu ) then
|
||||
raise ETDIError.Create( sMainMenuNotAssigned );
|
||||
|
||||
FCloseMenuItem := TMenuItem.Create( FMainMenu );
|
||||
with FCloseMenuItem do
|
||||
begin
|
||||
Name := 'miTDICloseButtom';
|
||||
if (TDIActions.CloseTab.ImageIndex < 0) or
|
||||
(not Assigned( FMainMenu.Images )) or
|
||||
(TDIActions.CloseTab.ImageIndex >= Images.Count) then
|
||||
Caption := 'X'
|
||||
else
|
||||
begin
|
||||
Caption := '' ;
|
||||
ImageIndex := TDIActions.CloseTab.ImageIndex;
|
||||
end ;
|
||||
|
||||
RightJustify := True ;
|
||||
OnClick := @CloseTabClicked;
|
||||
end ;
|
||||
|
||||
FMainMenu.Items.Add( FCloseMenuItem );
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.CreateTabsMenuItem ;
|
||||
Var
|
||||
NewMenuItem : TMenuItem;
|
||||
begin
|
||||
if FTabsMenuItem <> nil then exit;
|
||||
|
||||
if not Assigned( FMainMenu ) then
|
||||
raise ETDIError.Create( sMainMenuNotAssigned );
|
||||
|
||||
// Creating entry on MainMenu //
|
||||
FTabsMenuItem := TMenuItem.Create( FMainMenu );
|
||||
with FTabsMenuItem do
|
||||
begin
|
||||
Name := 'miTDITabsMenuItem';
|
||||
Caption := TDIActions.TabsMenu.Caption;
|
||||
ImageIndex := TDIActions.TabsMenu.ImageIndex;
|
||||
RightJustify := True ;
|
||||
OnClick := @DropDownTabsMenu;
|
||||
|
||||
end ;
|
||||
FMainMenu.Items.Add( FTabsMenuItem );
|
||||
|
||||
// Creating Sub-Menu options //
|
||||
|
||||
// Creating a Separator //
|
||||
NewMenuItem := TMenuItem.Create( FTabsMenuItem );
|
||||
with NewMenuItem do
|
||||
begin
|
||||
Name := 'miTDISeparator';
|
||||
Caption := '-';
|
||||
end ;
|
||||
FTabsMenuItem.Add(NewMenuItem);
|
||||
|
||||
// Creating Close Tab MenuItem //
|
||||
FCloseMenuItem2 := TMenuItem.Create( FTabsMenuItem );
|
||||
with FCloseMenuItem2 do
|
||||
begin
|
||||
Name := 'miTDICloseTab';
|
||||
Caption := TDIActions.CloseTab.Caption;
|
||||
ImageIndex := TDIActions.CloseTab.ImageIndex;
|
||||
OnClick := @CloseTabClicked;
|
||||
end ;
|
||||
FTabsMenuItem.Add(FCloseMenuItem2);
|
||||
|
||||
// Creating Close All Tabs MenuItem //
|
||||
FCloseAllTabsMenuItem := TMenuItem.Create( FTabsMenuItem );
|
||||
with FCloseAllTabsMenuItem do
|
||||
begin
|
||||
Name := 'miTDICloseAllTabs';
|
||||
Caption := TDIActions.CloseAllTabs.Caption;
|
||||
ImageIndex := TDIActions.CloseAllTabs.ImageIndex;
|
||||
OnClick := @CloseAllTabsClicked;
|
||||
end ;
|
||||
FTabsMenuItem.Add(FCloseAllTabsMenuItem);
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.SetBackgroundImage(AValue : TImage) ;
|
||||
begin
|
||||
if FBackgroundImage = AValue then Exit ;
|
||||
FBackgroundImage := AValue ;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.SetBackgroundCorner(AValue : TTDIBackgroundCorner) ;
|
||||
begin
|
||||
if FBackgroundCorner = AValue then Exit ;
|
||||
FBackgroundCorner := AValue ;
|
||||
|
||||
if Visible then
|
||||
DrawBackgroundImage;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.SetCloseTabButtom(AValue : TTDICloseTabButtom) ;
|
||||
begin
|
||||
if FCloseTabButtom = AValue then Exit ;
|
||||
|
||||
if (AValue = tbButtom) and (not (Owner is TWinControl)) then
|
||||
raise ETDIError.Create( sOwnerIsNotWinControl ) ;
|
||||
|
||||
FCloseTabButtom := AValue ;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.SetMainMenu(AValue : TMainMenu) ;
|
||||
begin
|
||||
if FMainMenu = AValue then Exit ;
|
||||
FMainMenu := AValue ;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.CreateFormInNewPage(AFormClass : TFormClass ;
|
||||
ImageIndex : Integer) ;
|
||||
Var
|
||||
NewForm : TForm ;
|
||||
begin
|
||||
NewForm := AFormClass.Create(nil);
|
||||
|
||||
ShowForInNewPage( NewForm, ImageIndex );
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.ShowForInNewPage(AForm : TForm ; ImageIndex : Integer) ;
|
||||
Var
|
||||
NewPage : TTDIPage ;
|
||||
begin
|
||||
Visible := True;
|
||||
|
||||
// Create a new Page
|
||||
NewPage := TTDIPage.Create(Self);
|
||||
NewPage.ImageIndex := ImageIndex;
|
||||
|
||||
// This will call TTDIPage.SetFormInPage, who does the magic //
|
||||
NewPage.FormInPage := AForm;
|
||||
|
||||
// Activate the new Page
|
||||
ActivePage := NewPage;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.CheckInterface ;
|
||||
begin
|
||||
if ([csDesigning, csDestroying] * ComponentState <> []) then exit ;
|
||||
|
||||
Visible := (PageCount > 0);
|
||||
|
||||
// Checking for Close Buttom visibility //
|
||||
if (FCloseTabButtom <> tbNone) then
|
||||
begin
|
||||
if Visible then
|
||||
ShowCloseButtom
|
||||
else
|
||||
HideCloseButtom;
|
||||
end ;
|
||||
|
||||
// Checking for Tabs Menu visibility //
|
||||
if FTabsMenuItem <> nil then
|
||||
FTabsMenuItem.Visible := Visible ;
|
||||
|
||||
// Drawing Back ground Image //
|
||||
if Visible then
|
||||
DrawBackgroundImage;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.ShowCloseButtom ;
|
||||
begin
|
||||
case FCloseTabButtom of
|
||||
tbButtom :
|
||||
begin
|
||||
if FCloseBitBtn = nil then
|
||||
CreateCloseBitBtn;
|
||||
|
||||
if not FCloseBitBtn.Visible then
|
||||
begin
|
||||
FCloseBitBtn.Visible := True ;
|
||||
FCloseBitBtn.BringToFront;
|
||||
end ;
|
||||
FCloseBitBtn.Enabled := ( ActivePageIndex >= FFixedPages );
|
||||
end ;
|
||||
|
||||
tbMenu :
|
||||
begin
|
||||
if FCloseMenuItem = nil then
|
||||
CreateCloseMenuItem;
|
||||
|
||||
FCloseMenuItem.Visible := True ;
|
||||
FCloseMenuItem.Enabled := ( ActivePageIndex >= FFixedPages );
|
||||
end ;
|
||||
end ;
|
||||
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.HideCloseButtom ;
|
||||
begin
|
||||
if FCloseBitBtn <> nil then
|
||||
FCloseBitBtn.Visible := False;
|
||||
if FCloseMenuItem <> nil then
|
||||
FCloseMenuItem.Visible := False;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.CloseTabClicked(Sender : TObject) ;
|
||||
begin
|
||||
if CanCloseAPage( ActivePageIndex ) then
|
||||
RemovePage( ActivePageIndex );
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.CloseAllTabsClicked(Sender : TObject) ;
|
||||
Var
|
||||
LastPageCount : Integer ;
|
||||
begin
|
||||
if PageCount < 1 then exit ;
|
||||
|
||||
LastPageCount := -1 ;
|
||||
PageIndex := PageCount-1; // Go to Last page
|
||||
// Close while have pages, and Pages still being closed //
|
||||
while (PageCount > FFixedPages) and (LastPageCount <> PageCount) do
|
||||
begin
|
||||
LastPageCount := PageCount ;
|
||||
CloseTabClicked(Sender);
|
||||
Application.ProcessMessages;
|
||||
end;
|
||||
end ;
|
||||
|
||||
function TTDINoteBook.CanCloseAllPages : Boolean ;
|
||||
Var
|
||||
I : Integer ;
|
||||
begin
|
||||
Result := True;
|
||||
if PageCount < 1 then exit ;
|
||||
|
||||
I := 0;
|
||||
while Result and ( I < PageCount ) do
|
||||
begin
|
||||
Result := CanCloseAPage( I );
|
||||
Inc(I)
|
||||
end ;
|
||||
end ;
|
||||
|
||||
function TTDINoteBook.CanCloseAPage(APageIndex : Integer) : Boolean ;
|
||||
begin
|
||||
Result := True;
|
||||
|
||||
if Pages[APageIndex] is TTDIPage then
|
||||
with TTDIPage(Pages[APageIndex]) do
|
||||
begin
|
||||
if Assigned( FormInPage ) then
|
||||
Result := FormInPage.CloseQuery;
|
||||
end ;
|
||||
end ;
|
||||
|
||||
|
||||
procedure TTDINoteBook.SelectTabByMenu(Sender : TObject) ;
|
||||
begin
|
||||
if Sender is TMenuItem then
|
||||
ActivePageIndex := TMenuItem(Sender).Tag;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.DropDownTabsMenu(Sender : TObject) ;
|
||||
Var
|
||||
I : Integer ;
|
||||
NewMenuItem : TMenuItem ;
|
||||
begin
|
||||
// Removing MenuItens until find Separator '-' //
|
||||
NewMenuItem := FTabsMenuItem.Items[0] ;
|
||||
while (NewMenuItem.Caption <> '-') do
|
||||
begin
|
||||
FTabsMenuItem.Remove(NewMenuItem);
|
||||
NewMenuItem.Free ;
|
||||
NewMenuItem := FTabsMenuItem.Items[0] ;
|
||||
end ;
|
||||
|
||||
// Inserting on MenuItens existing Tabs //
|
||||
for I := PageCount-1 downto 0 do
|
||||
begin
|
||||
NewMenuItem := TMenuItem.Create(FTabsMenuItem);
|
||||
NewMenuItem.Caption := Page[I].Caption ;
|
||||
NewMenuItem.ImageIndex := Page[I].ImageIndex ;
|
||||
NewMenuItem.OnClick := @SelectTabByMenu ;
|
||||
NewMenuItem.Tag := I ;
|
||||
NewMenuItem.Checked := (I = PageIndex ) ;
|
||||
|
||||
FTabsMenuItem.Insert(0,NewMenuItem);
|
||||
end ;
|
||||
|
||||
FCloseMenuItem2.Enabled := (PageCount > 0) and
|
||||
(ActivePageIndex >= FFixedPages);
|
||||
FCloseAllTabsMenuItem.Enabled := (PageCount > 0);
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.TimerRestoreLastFocus(Sender : TObject) ;
|
||||
begin
|
||||
FTimerRestoreLastControl.Enabled := False;
|
||||
|
||||
if Assigned( ActivePage ) then
|
||||
if ActivePage is TTDIPage then
|
||||
TTDIPage( ActivePage ).RestoreLastFocusedControl;
|
||||
end ;
|
||||
|
||||
function TTDINoteBook.CanChange : Boolean ;
|
||||
Var
|
||||
AWinControl : TWinControl ;
|
||||
begin
|
||||
Result := True;
|
||||
|
||||
if ([csDesigning, csDestroying] * ComponentState = []) then
|
||||
begin
|
||||
if Assigned( ActivePage ) then
|
||||
begin
|
||||
// Saving Last Active Control in Page //
|
||||
AWinControl := Screen.ActiveControl;
|
||||
|
||||
if ActivePage is TTDIPage then
|
||||
begin
|
||||
if ActivePage.ContainsControl( AWinControl ) then
|
||||
begin
|
||||
TTDIPage( ActivePage ).LastActiveControl := AWinControl;
|
||||
|
||||
if FVerifyIfCanChangePage then
|
||||
begin
|
||||
{ Try to detect if occurs some exception when leaving current
|
||||
control focus. This may occurs in TWinControl.OnExit Validation }
|
||||
Self.SetFocus;
|
||||
|
||||
{ If steel on same ActiveControl, maybe Focus Control was traped on
|
||||
some OnExit Validation }
|
||||
Result := ( AWinControl <> Screen.ActiveControl );
|
||||
end ;
|
||||
end ;
|
||||
end ;
|
||||
end ;
|
||||
end ;
|
||||
|
||||
Result := Result and (inherited CanChange) ;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.DoChange ;
|
||||
begin
|
||||
inherited DoChange;
|
||||
|
||||
if ([csDesigning, csDestroying] * ComponentState <> []) then exit ;
|
||||
|
||||
CheckInterface;
|
||||
|
||||
{
|
||||
// This doesn't work on Win32, Focus Control always go to first control on Page //
|
||||
if FRestoreActiveControl then
|
||||
if (ActivePage is TTDIPage) then
|
||||
TTDIPage( ActivePage ).RestoreLastFocusedControl;
|
||||
}
|
||||
|
||||
// This is a ulgy work around.. but it works :) //
|
||||
FTimerRestoreLastControl.Enabled := True;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.Loaded ;
|
||||
begin
|
||||
inherited Loaded ;
|
||||
|
||||
if ([csDesigning, csDestroying] * ComponentState <> []) then exit ;
|
||||
|
||||
if Assigned( FMainMenu ) then
|
||||
CreateTabsMenuItem;
|
||||
|
||||
CheckInterface;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.Notification(AComponent : TComponent ;
|
||||
Operation : TOperation) ;
|
||||
begin
|
||||
inherited Notification(AComponent, Operation) ;
|
||||
|
||||
if (Operation = opRemove) then
|
||||
begin
|
||||
if (AComponent = FBackgroundImage) then
|
||||
FBackgroundImage := nil ;
|
||||
|
||||
if (AComponent = FMainMenu) then
|
||||
FMainMenu := nil ;
|
||||
|
||||
|
||||
if ([csDesigning, csDestroying] * ComponentState <> []) then exit ;
|
||||
|
||||
if (AComponent is TForm) then
|
||||
if TForm(AComponent).Parent is TTDIPage then
|
||||
RemovePage( TTDIPage(TForm(AComponent).Parent).PageIndex );
|
||||
end ;
|
||||
end ;
|
||||
|
||||
procedure TTDINoteBook.DrawBackgroundImage ;
|
||||
begin
|
||||
if ([csDesigning, csDestroying] * ComponentState <> []) then exit ;
|
||||
|
||||
if not Assigned( FBackgroundImage ) then exit ;
|
||||
|
||||
if not Assigned( ActivePage ) then exit ;
|
||||
|
||||
FBackgroundImage.Parent := ActivePage;
|
||||
FBackgroundImage.Anchors := [];
|
||||
FBackgroundImage.AnchorSideBottom.Control := nil;
|
||||
FBackgroundImage.AnchorSideTop.Control := nil;
|
||||
FBackgroundImage.AnchorSideRight.Control := nil;
|
||||
FBackgroundImage.AnchorSideLeft.Control := nil;
|
||||
|
||||
if FBackgroundCorner in [coBottomRight, coBottomLeft] then
|
||||
begin
|
||||
FBackgroundImage.AnchorSideBottom.Control := ActivePage;
|
||||
FBackgroundImage.AnchorSideBottom.Side := asrBottom;
|
||||
FBackgroundImage.Anchors := FBackgroundImage.Anchors + [akBottom];
|
||||
end
|
||||
else
|
||||
begin
|
||||
FBackgroundImage.AnchorSideTop.Control := ActivePage;
|
||||
FBackgroundImage.AnchorSideTop.Side := asrTop;
|
||||
FBackgroundImage.Anchors := FBackgroundImage.Anchors + [akTop];
|
||||
end ;
|
||||
|
||||
if FBackgroundCorner in [coBottomRight, coTopRight] then
|
||||
begin
|
||||
FBackgroundImage.AnchorSideRight.Control := ActivePage;
|
||||
FBackgroundImage.AnchorSideRight.Side := asrBottom;
|
||||
FBackgroundImage.Anchors := FBackgroundImage.Anchors + [akRight];
|
||||
end
|
||||
else
|
||||
begin
|
||||
FBackgroundImage.AnchorSideLeft.Control := ActivePage;
|
||||
FBackgroundImage.AnchorSideLeft.Side := asrTop;
|
||||
FBackgroundImage.Anchors := FBackgroundImage.Anchors + [akLeft];
|
||||
end ;
|
||||
|
||||
FBackgroundImage.Visible := True ;
|
||||
end ;
|
||||
|
||||
end.
|
||||
|
20
components/tdi/tdiconst.pas
Normal file
20
components/tdi/tdiconst.pas
Normal file
@ -0,0 +1,20 @@
|
||||
unit TDIConst ;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils ;
|
||||
|
||||
resourcestring
|
||||
sOwnerIsNotWinControl = 'TDINoteBook.Owner is not a TWinControl descendant';
|
||||
sMainMenuNotAssigned = 'TTDINoteBook.MainMenu not assigned';
|
||||
sActionTabsMenu = 'Tabs';
|
||||
sActionCloseTab = 'Close Tab';
|
||||
sActionCloseAllTabs = 'Close All Tabs';
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
||||
|
23
components/tdi/tdireg.pas
Normal file
23
components/tdi/tdireg.pas
Normal file
@ -0,0 +1,23 @@
|
||||
unit TDIReg ;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, LResources ;
|
||||
|
||||
procedure Register;
|
||||
|
||||
implementation
|
||||
|
||||
Uses TDIClass ;
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents('TDI', [ TTDINoteBook ]);
|
||||
end ;
|
||||
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user