TurboUI Code
Brought to you by:
j-a-s-d
TurboUI http://coderesearchlabs.com/turboui DESCRIPTION ----------- A Turbo Delphi 2006 Application User Interface using SpTBXLib and other optional packages. It also contains integrated the old SlotUI library, a "slot-oriented" User Interface for building KIOSK like applications. USAGE: The Forms ---------------- Inherit the forms of your projects from the TTurboUI forms. That's all. USAGE: The Menus ---------------- The menu items are populated from actions. To load menu items, create an action list to hold actions which will be the main menu items. If a menu item should be a submenu, create an action list with the action list prefix ('al_') by default. That means you must create action lists as many submenu items you have, and set their name to 'al_'+Action.Name. For example, in the Demo you have: alMainMenu: TActionList actFile: TAction actHelp: TAction al_actFile: TActionList actOpen: TAction ExitSeparator: TAction actExit: TAction al_actHelp: TActionList actAbout: TAction And so on. Note that every separator caption must be, by default, '-'. After this, just pass the root action list to the SetSubmenus method. For the demo it will be SetSubmenus(alMainMenu). Yes, it's so easy. USAGE: The Control Factory -------------------------- A Control Factory is provided to build up the controls of your TUI forms offering a set of fluent interfaces to configure the controls you can create with it (or without it). Besides TTurboUIForm offers one instance by default you can create a new control factory via the NewControlFactory() routine taking to parameters: an Owner and a Parent (both are for the generated controls). You can do a New<control-type> or Wrap<control-type> if you want to reuse an already created control (it can be create with or without the factory). Example using the control factory offered by the TTurboUIForm (the code is supposed to be in one of the methods of the TTurboUIForm descendant): ControlFactory .NewLabel.SetTop(20).SetLeft(24).SetCaption('Title').SetFontSize(18) .GetFactory .NewLabel.SetTop(40).SetLeft(32).SetCaption('Subtitle').SetFontSize(12) .GetFactory .NewLabel.SetTop(60).SetLeft(32).SetCaption('Some text').SetFontSize(10); Example creating a new control factory, saving the controls instances (in 3 different ways) and wrapping one of them: with NewControlFactory(AOwner, AParent) do begin FLabel1 := NewLabel.SetTop(20).SetCaption('Title').SetFontSize(18).GetInstance; NewLabel.SetTop(40).SetLeft(32).SetCaption('Subtitle').SetFontSize(12).GetInstance(FLabel2); NewLabel(FLabel3).SetTop(60).SetLeft(32).SetCaption('Some test').SetFontSize(10); WrapLabel(FLabel1).SetLeft(FLabel2.Left - 8); end; USAGE: The Slots ---------------- You can use the slots to build KIOSK like applications just like with the old SlotUI library. Just check the SlotDemo to learn how to use it. FAQ --- Q: Which kind of UI is this? The forms are empty! What happens? A: Turbo Delphi 2006 does not allow installing/using third party components at design time, that's why I build up the UI in runtime. Just look at the Demo, it's so simple. Q: The UI is not initializing. What happens? A: The UI will be automatically initialized in AfterConstruction(). So, if you are going to override the AfterConstruction method remember to call inherited. LICENSE ------- MIT. Check the LICENSE.txt file for more details. Be sure to read and accept the licence of this library and all the licencies of the third-party dependencies before using this library. DEPENDENCIES ------------ Check DEPENDENCIES.html for a full third-party dependcy tree. TOOLS ----- Check TOOLS.html to see a list of the tools involved in the development of this project. HISTORY ------- 2008 oct 26 - first lines around the SlotUI idea 2008 nov 10 - added toolbar 2008 nov 18 - added toolbar item constants 2008 dec 26 - created the slots holder class 2008 dec 28 - added FSlotList 2008 dec 30 - added GetVisibleHeight 2009 feb 07 - added GetSlotByCategory 2009 mar 25 - added BACKBUTTON_CAPTION 2009 apr 05 - added more BACKBUTTON constants 2009 may 23 - added separator 2009 oct 23 - addapted SlotUI to work with standard controls 2009 Oct 26 - first release of TurboUI (demo exe size: 750 kb | demo exe size with upx: 286 kb) 2009 Nov 20 - maximization fix and added TurboUIUtils.pas with some helper functions 2009 Dec 09 - avoid flickering with BeginUpdate/EndUpdate of MainMenu on SetSubmenus() 2010 Apr 03 - updated TurboUIUtils.pas mainly with widestring support for internationalization purposes 2010 May 18 - TurboUI unit prefix changed to tui - added tui*Dialogs - several other fixes 2010 May 27 - chopped off tuiActionsUtils unit from tuiUtils unit, adding more functionality 2010 Jun 06 - added tuiControlFactory and tuiVstDialog 2010 Jun 25 - added Wrap*() to the TtuiControlFactory - a GetFactory() to all wrapped controls - a ControlFactory property to TTurboUIForm by default 2010 Jun 26 - added GUID, Name generation and GetInstance() fluent overload in tuiControlFactory fluent configurations 2010 Jun 27 - added NewMultiDock() and NewSplitter() to tuiUtils - added SetModalResult(), SetDefault() and SetCancel() to the button's fluent configuration 2010 Jul 01 - new tuiDialog, inheriting from tuiForm and incorporating existant tuiDialogsConsts - added SetCursor() to the checkbox's fluent configuration - added SetTabOrder() to the button's fluent configuration - adapted find and replace dialogs to use ControlFactory 2010 Jul 06 - fixed translation bug on ReplaceDialog - updated the default dialog's button size from 80 to 96 2010 Aug 18 - replaced all references to SpTBXLib controls to Ttui<control_name> placed into tuiControls unit - added SetSize() to TTurboUIForm 2010 Aug 19 - added SetCursor(), SetOnClick() and SetOnDblClick() to listbox's fluent configuration - added more references to SpTBXLib controls as Ttui<control_name> in tuiControls unit 2010 Aug 21 - fixed SetCommaText() of listbox's fluent configuration not returning Self - added SetMaxLength(), SetOnClick() and SetOnChange() to edit's fluent configuration - added SetOnChange() to spinedit's fluent configuration - added SetOnClick() to checkbox's fluent configuration - added SetTag() to button's fluent configuration 2010 Aug 23 - added tuiSideBar 2010 Aug 24 - added TopPanel and NewDropDownButton() to tuiSideBar - added tuiDialogs 2010 Aug 25 - added SetButtonsVisibility() to tuiSideBar - added the StatusBarRightText label in the TtuiMainForm - added SetTabStop() to edit's and panel's fluent configuration - added SetCursor() to spinedit's fluent configuration - added NewFactory() to the controls factory - now the panels are skinned by default after the creation via the controls factory - now all the dialogs have an skinned panel by background - now all the controls in the dialogs are created via the controls factory 2010 Aug 26 - added OnlyCheckThisActionInActionList() to tuiActionsUtils - added tuiColorManager 2010 Sep 03 - the button OK now is set as Default in the dialogs - fixed BrowseForFolder not working on Windows 9x/ME (due to the lack of wide API function versions) 2010 Sep 04 - added NewActionList() to tuiActionsUtils - added the parameter AOnExecute to NewActionInActionList() 2010 Sep 06 - now all the dialogs has properties and methods using widestring 2010 Sep 07 - now the tuiItemWithLocationDialog accepts the RETURN key when editing the path without closing - added TtuiItemWithLocationDialog.EnsureItemLocation property 2010 Sep 08 - added SetLocation(), Move() and Grow() to TTurboUIForm - added static functions ColorToRGBText() and RGBTextToColor() and new color constants to TurboUIColorManager - added TtuiMemo - added tuiBar unit - added TtuiInformationBar 2010 Sep 09 - added the left image to the TtuiInformationBar - added TtuiFrame 2010 Sep 11 - renamed TtuiHorizontalBarPanel to TtuiHorizontalBar and TtuiVerticalBarPanel to TtuiVerticalBar - added SetTabOrder(), SetBorders(), SetAnchors(), SetFont*() and SetScrollbarsVisibility() to the the memo's fluent configuration - added SetMultiSelect() to the listbox's fluent configuration 2010 Sep 27 - added SetAlignment() and SetAutoSize() to the label's fluent configuration 2010 Sep 28 - added ComboBox's fluent configuration - added SetAnchors() to all the fluent configurations - added TtuiWaitDialog 2010 Oct 01 - added the internal BrowseForFolderCallback() to the tuiItemWithLocationDialog 2010 Oct 04 - added the Whole Words checkbox to the Replace dialog - added tuiDefines.inc - added tuiTrayIcon.pas - added tuiGUIUtils.pas 2010 Oct 09 - added autosize to imagelist's sizes in TtuiVerticalBar.NewButton() 2010 Oct 10 - now the container panel of the TtuiFrame does not have borders - added SetStyle() to combobox's fluent configuration 2010 Oct 30 - added "out AInstance" overloads to New*() methods of the control's factory 2010 Oct 31 - added padding adjustment when autosizing to imagelist's sizes in TtuiVerticalBar.NewButton() 2010 Nov 01 - added SetFontName() to label's and memo's fluent configurations 2010 Dec 08 - added SetEnabled(), SetBounds() and SetTag() to all/most the control's factory fluent configurations - added checklistbox's fluent configuration 2011 Feb 01 - integrated SlotUI library as tuiSlots, dropping the optional native control set 2011 Apr 07 - fixed the TtuiFrame's ContainerPanel colour change problem 2011 Jun 13 - added MakeResizable to TTurboUIDialog 2011 Jun 16 - added tuiHTMLControls 2011 Aug 05 - added TtuiHtmlPanel 2011 Aug 17 - added RenderFile() to the Html controls Enjoy, Javier Santo Domingo j-a-s-d@coderesearchlabs.com