git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2445 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
559b0a470e
commit
dc2d691bd4
File diff suppressed because it is too large
Load Diff
@ -92,6 +92,7 @@ object fMainForm: TfMainForm
|
||||
Lines.Strings = (
|
||||
'Memo1'
|
||||
)
|
||||
ScrollBars = ssAutoBoth
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
|
@ -6,7 +6,7 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
|
||||
ComCtrls, Buttons, StdCtrls, ExtCtrls, Spin, TDIClass, IpHtml;
|
||||
ComCtrls, Buttons, StdCtrls, ExtCtrls, Spin, TDIClass;
|
||||
|
||||
type
|
||||
|
||||
@ -78,6 +78,10 @@ begin
|
||||
Screen.OnActiveControlChange := @ShowNewControl;
|
||||
|
||||
cbxBackgroundCorner.ItemIndex := Integer(TDINoteBook1.BackgroundCorner);
|
||||
try
|
||||
Memo1.Lines.LoadFromFile( ExtractFilePath(Application.ExeName)+'..'+PathDelim+'read-me.txt' );
|
||||
except
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfMainForm.FormDestroy(Sender : TObject) ;
|
||||
|
@ -1,10 +1,157 @@
|
||||
What is TDI ?
|
||||
Please see:
|
||||
http://en.wikipedia.org/wiki/Tab_%28GUI%29
|
||||
http://wiki.freepascal.org/tdi
|
||||
|
||||
This is a very alfa post...
|
||||
I will write a Page on Wiki, and adjust all files for LGPL License
|
||||
=== Contents ===
|
||||
|
||||
Author:
|
||||
Daniel Simões de Almeida
|
||||
daniel@djsystem.com.br
|
||||
1 About
|
||||
2 Author
|
||||
3 License
|
||||
4 Key Features
|
||||
5 Download
|
||||
6 Dependencies / System Requirements
|
||||
7 Screenshot
|
||||
8 Installation
|
||||
9 How to Use
|
||||
10 Methods and Properties
|
||||
11 Note
|
||||
|
||||
=== 1 - About ===
|
||||
|
||||
A Tabbed GUI Interface
|
||||
|
||||
Lazarus does not have full support for MDI interface yet, and commercial
|
||||
applications need to open several windows at once without ShowModal.
|
||||
|
||||
However, the MDI interface concept has several problems, which may confuse the
|
||||
novice user. A more complete study on the advantages and disadvantages of the
|
||||
MDI can be found at wikipedia:
|
||||
http://en.wikipedia.org/wiki/Multiple_document_interface#
|
||||
Comparison_with_single_document_interface
|
||||
|
||||
The intention of this component is to provide a simple way to create an TDI
|
||||
interface, similar to that described in Wikipedia.
|
||||
http://en.wikipedia.org/wiki/Tabbed_document_interface
|
||||
|
||||
I used TExtendedNotebook as a base component, introducing new methods and
|
||||
properties to provide support for TDI. Very few changes will be needed in your
|
||||
code, and component TTDINotebook will handle the entire process of creation and
|
||||
destruction of the tabs and menus automatically.
|
||||
|
||||
=== 2 - Author ===
|
||||
|
||||
Author: Daniel Simões de Almeida
|
||||
daniel@djsystem.com.br
|
||||
|
||||
=== 3 - License ===
|
||||
|
||||
LGPL
|
||||
http://www.opensource.org/licenses/lgpl-license.php
|
||||
|
||||
=== 4 - Key Features ===
|
||||
|
||||
- Automatically takes care of Creation and Destruction of the tabs,
|
||||
- Automatically takes care of Main Menu Items related to tabs
|
||||
- Automatically Close the tabs when the Internal Form is Closed or Destroyed
|
||||
- Allows you to display a background image in a corner of the Form
|
||||
- Respects the Max Constraint of Internal Forms, centralizing it on the Tab
|
||||
- Respects the Internal Forms OnCloseQuery event when closing a Tab
|
||||
- Allows customization of Labels and Images of the Menu Items Tabs
|
||||
- Allow to close Tabs with Mouse Middle Button
|
||||
- Allows Close All Tabs
|
||||
|
||||
=== 5 - Download ===
|
||||
|
||||
The package can be downloaded from the Lazarus CCR SVN repository.
|
||||
https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/tdi
|
||||
|
||||
You will need a SVN Client
|
||||
|
||||
On Windows you can use TortoiseSVN: http://tortoisesvn.net/downloads.html
|
||||
|
||||
On Linux, use:
|
||||
svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/tdi
|
||||
|
||||
=== 6 - Dependencies / System Requirements ===
|
||||
|
||||
None
|
||||
|
||||
=== 7 - Screenshot ===
|
||||
|
||||
http://wiki.freepascal.org/tdi#Screenshot
|
||||
|
||||
=== 8 - Installation ===
|
||||
|
||||
- Download the package on a directory of your preference
|
||||
- Open Package File: tdi.lpk.
|
||||
- Install the Package and let Lazarus rebuild.
|
||||
|
||||
=== 9 - How to Use ===
|
||||
|
||||
Please open Project tdi\Demo\TDIDemo.lpi
|
||||
I believe studying the sources and observing the Demo working is the best way
|
||||
to explain the component
|
||||
|
||||
=== 10 - Methods and Properties ===
|
||||
|
||||
* procedure ShowFormInPage( AForm: TForm; ImageIndex : Integer = -1 );
|
||||
Show a already created Form in a new Page. If there is an Page that already
|
||||
owns this Form variable, it will bring it to front, rather than create a new
|
||||
Page.
|
||||
|
||||
* procedure CreateFormInNewPage( AFormClass: TFormClass; ImageIndex : Integer = -1 ) ;
|
||||
Create a New AFormClass, in a new Page.
|
||||
( Remember to assign CloseAction := caFree; on OnClose event of this Form)
|
||||
|
||||
* Function CanCloseAPage( APageIndex: Integer): Boolean;
|
||||
This will fire OnCloseQuery of the Internal Form reference to a APageIndex Tab,
|
||||
and Returns True if it can be Closed.
|
||||
|
||||
* Function FindFormInPages( AForm: TForm): Integer ;
|
||||
Search an Page that owns AForm variable, returning the TabIndex if found or -1
|
||||
if doesn't.
|
||||
|
||||
* Function CanCloseAllPages: Boolean;
|
||||
The same as above, but will check All Tabs
|
||||
|
||||
* procedure ScrollPage( ToForward: Boolean );
|
||||
Go to Next ou Prior Page, depending ToForward parameter
|
||||
|
||||
* procedure CheckInterface;
|
||||
Check the TDI Interface, enabling/disabling internal components (This method
|
||||
is called from inside)
|
||||
|
||||
* property BackgroundImage : TImage
|
||||
|
||||
* property BackgroundCorner : TTDIBackgroundCorner
|
||||
TTDIBackgroundCorner = (coTopLeft, coTopRight, coBottomLeft, coBottomRight);
|
||||
|
||||
* property MainMenu : TMainMenu
|
||||
If Assigned, TTDINotebook will use it to Create Menu Items for Tabs operations
|
||||
(see Image1)
|
||||
|
||||
* property CloseTabButtom : TTDICloseTabButtom
|
||||
TTDICloseTabButtom = (tbNone, tbMenu, tbButtom ) ;
|
||||
tbNone - None Close Button is showed
|
||||
tbMenu - Use MainMenu, to draw a Close Button aligned to Right (see Image1)
|
||||
tbButtom - Draw a small BitButtom, on Right Up corner of TTDINotebook
|
||||
|
||||
* property TDIActions : TTDIActions
|
||||
Allow to customize Label and Images of Menu Items for operations:
|
||||
TabsMenu, CloseTab, CloseAllTabs, NextTab, PreviousTab
|
||||
|
||||
* property TDIOptions : TTDIOptions
|
||||
TTDIOption = ( tdiMiddleButtomClosePage, tdiRestoreLastActiveControl,
|
||||
tdiVerifyIfCanChangePage ) ;
|
||||
TTDIOptions = set of TTDIOption ;
|
||||
|
||||
tdiMiddleButtomClosePage - Close Page with Mouse middle button
|
||||
tdiRestoreLastActiveControl - Restore the focus control to the Last focused
|
||||
component on Page, after change to a new Page.
|
||||
tdiVerifyIfCanChangePage - Try to fire OnExit event of current focused control
|
||||
on Page before leave it. If isn't possible to change
|
||||
to another control, doesn't change the Page.
|
||||
|
||||
* property ShortCutClosePage: TShortCut
|
||||
The HotKey to Close a Page, default is Ctrl+F4
|
||||
|
||||
* property FixedPages : Integer
|
||||
Number of initial Pages that cannot be closed.
|
||||
|
@ -19,7 +19,7 @@
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
You can also get a copy of the license accessing the address:
|
||||
Http://www.opensource.org/licenses/gpl-license.php
|
||||
http://www.opensource.org/licenses/lgpl-license.php
|
||||
|
||||
Daniel Simões de Almeida - daniel@djsystem.com.br - www.djsystem.com.br
|
||||
Rua Coronel Aureliano de Camargo, 973 - Tatuí - SP - 18270-170
|
||||
|
@ -19,7 +19,7 @@
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
You can also get a copy of the license accessing the address:
|
||||
Http://www.opensource.org/licenses/gpl-license.php
|
||||
http://www.opensource.org/licenses/lgpl-license.php
|
||||
|
||||
Daniel Simões de Almeida - daniel@djsystem.com.br - www.djsystem.com.br
|
||||
Rua Coronel Aureliano de Camargo, 973 - Tatuí - SP - 18270-170
|
||||
|
@ -19,7 +19,7 @@
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
You can also get a copy of the license accessing the address:
|
||||
Http://www.opensource.org/licenses/gpl-license.php
|
||||
http://www.opensource.org/licenses/lgpl-license.php
|
||||
|
||||
Daniel Simões de Almeida - daniel@djsystem.com.br - www.djsystem.com.br
|
||||
Rua Coronel Aureliano de Camargo, 973 - Tatuí - SP - 18270-170
|
||||
|
Loading…
Reference in New Issue
Block a user