* Advanced demos:

- cleanup, set anchors for Speed, GeneralAbilities and Properties demos. 
 - Set forms BorderStyle to  bsNone

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1070 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
blikblum
2009-12-16 22:50:04 +00:00
parent f0db79ea25
commit 0514629222
9 changed files with 140 additions and 126 deletions

View File

@ -12,7 +12,7 @@ object AlignForm: TAlignForm
Font.Name = 'Arial' Font.Name = 'Arial'
OnCreate = FormCreate OnCreate = FormCreate
OnDestroy = FormDestroy OnDestroy = FormDestroy
LCLVersion = '0.9.27' LCLVersion = '0.9.29'
object Label8: TLabel object Label8: TLabel
Left = 8 Left = 8
Height = 111 Height = 111
@ -77,7 +77,6 @@ object AlignForm: TAlignForm
Top = 2 Top = 2
Width = 554 Width = 554
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
BorderStyle = bsSingle
CheckImageKind = ckDarkTick CheckImageKind = ckDarkTick
ClipboardFormats.Strings = ( ClipboardFormats.Strings = (
'CSV' 'CSV'
@ -96,6 +95,7 @@ object AlignForm: TAlignForm
DefaultNodeHeight = 34 DefaultNodeHeight = 34
DefaultText = 'Node' DefaultText = 'Node'
EditDelay = 100 EditDelay = 100
Header.AutoSizeIndex = 0
Header.Background = clBtnShadow Header.Background = clBtnShadow
Header.Columns = < Header.Columns = <
item item
@ -103,6 +103,7 @@ object AlignForm: TAlignForm
Hint = 'Text is initially centered and has a left-to-right directionality.' Hint = 'Text is initially centered and has a left-to-right directionality.'
ImageIndex = 20 ImageIndex = 20
Options = [coAllowClick, coDraggable, coEnabled, coResizable, coShowDropMark, coVisible, coAutoSpring] Options = [coAllowClick, coDraggable, coEnabled, coResizable, coShowDropMark, coVisible, coAutoSpring]
Position = 0
Spacing = 10 Spacing = 10
Text = 'English text column' Text = 'English text column'
Width = 185 Width = 185
@ -110,7 +111,7 @@ object AlignForm: TAlignForm
item item
Hint = 'Text is initially left aligned and has a left-to-right directionality.' Hint = 'Text is initially left aligned and has a left-to-right directionality.'
ImageIndex = 35 ImageIndex = 35
Options = [coAllowClick, coDraggable, coEnabled, coResizable, coShowDropMark, coVisible, coAutoSpring] Options = [coAllowClick, coDraggable, coEnabled, coResizable, coShowDropMark, coVisible, coAutoSpring, coWrapCaption]
Position = 1 Position = 1
Spacing = 10 Spacing = 10
Text = 'Greek text column' Text = 'Greek text column'
@ -126,6 +127,7 @@ object AlignForm: TAlignForm
Text = 'Hebrew/arabic text column' Text = 'Hebrew/arabic text column'
Width = 209 Width = 209
end> end>
Header.DefaultHeight = 17
Header.Font.Height = -12 Header.Font.Height = -12
Header.Font.Name = 'Arial' Header.Font.Name = 'Arial'
Header.Font.Style = [fsBold] Header.Font.Style = [fsBold]

View File

@ -14,30 +14,35 @@ object GeneralForm: TGeneralForm
ShowHint = True ShowHint = True
LCLVersion = '0.9.29' LCLVersion = '0.9.29'
object Label18: TLabel object Label18: TLabel
Left = 502 AnchorSideTop.Control = RadioGroup2
AnchorSideTop.Side = asrBottom
Left = 499
Height = 14 Height = 14
Top = 384 Top = 374
Width = 105 Width = 105
Anchors = [akRight, akBottom] Anchors = [akTop, akRight]
BorderSpacing.Top = 20
Caption = 'Switch check images:' Caption = 'Switch check images:'
ParentColor = False ParentColor = False
end end
object Label19: TLabel object Label19: TLabel
Left = 506 AnchorSideTop.Control = CheckMarkCombo
AnchorSideTop.Side = asrBottom
Left = 499
Height = 14 Height = 14
Top = 432 Top = 431
Width = 98 Width = 98
Anchors = [akRight, akBottom] Anchors = [akTop, akRight]
BorderSpacing.Top = 20
Caption = 'Switch main column:' Caption = 'Switch main column:'
ParentColor = False ParentColor = False
end end
object Label8: TLabel object Label8: TLabel
Left = 502 Left = 499
Height = 77 Height = 53
Top = 40 Top = 40
Width = 206 Width = 206
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = False
Caption = 'This sample is an introduction to the general look and feel of Virtual Treeview. Note: you can change almost every visual aspect of the control.' Caption = 'This sample is an introduction to the general look and feel of Virtual Treeview. Note: you can change almost every visual aspect of the control.'
ParentColor = False ParentColor = False
WordWrap = True WordWrap = True
@ -49,7 +54,6 @@ object GeneralForm: TGeneralForm
Width = 474 Width = 474
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
AutoExpandDelay = 300 AutoExpandDelay = 300
BorderStyle = bsSingle
ButtonFillMode = fmWindowColor ButtonFillMode = fmWindowColor
CheckImageKind = ckDarkTick CheckImageKind = ckDarkTick
ClipboardFormats.Strings = ( ClipboardFormats.Strings = (
@ -130,11 +134,14 @@ object GeneralForm: TGeneralForm
OnStateChange = VST2StateChange OnStateChange = VST2StateChange
end end
object CheckMarkCombo: TComboBox object CheckMarkCombo: TComboBox
Left = 503 AnchorSideTop.Control = Label18
AnchorSideTop.Side = asrBottom
Left = 499
Height = 21 Height = 21
Top = 401 Top = 390
Width = 200 Width = 205
Anchors = [akRight, akBottom] Anchors = [akTop, akRight]
BorderSpacing.Top = 2
ItemHeight = 13 ItemHeight = 13
Items.Strings = ( Items.Strings = (
'Light check marks' 'Light check marks'
@ -144,8 +151,8 @@ object GeneralForm: TGeneralForm
'Flat tick marks' 'Flat tick marks'
'Windows XP style images' 'Windows XP style images'
'Custom check images' 'Custom check images'
'System check images'
'System flat check images' 'System flat check images'
'System default check images'
) )
OnChange = CheckMarkComboChange OnChange = CheckMarkComboChange
PopupMenu = PopupMenu1 PopupMenu = PopupMenu1
@ -153,11 +160,14 @@ object GeneralForm: TGeneralForm
TabOrder = 1 TabOrder = 1
end end
object MainColumnUpDown: TUpDown object MainColumnUpDown: TUpDown
Left = 507 AnchorSideTop.Control = Label19
AnchorSideTop.Side = asrBottom
Left = 499
Height = 16 Height = 16
Top = 455 Top = 447
Width = 37 Width = 37
Anchors = [akRight, akBottom] Anchors = [akTop, akRight]
BorderSpacing.Top = 2
Min = 0 Min = 0
Max = 2 Max = 2
Increment = 2 Increment = 2
@ -168,10 +178,10 @@ object GeneralForm: TGeneralForm
OnChanging = MainColumnUpDownChanging OnChanging = MainColumnUpDownChanging
end end
object BitBtn1: TBitBtn object BitBtn1: TBitBtn
Left = 504 Left = 499
Height = 30 Height = 30
Hint = 'Pick a font to be used by this tree.' Hint = 'Pick a font to be used by this tree.'
Top = 6 Top = 8
Width = 91 Width = 91
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
Caption = 'Tree font' Caption = 'Tree font'
@ -195,12 +205,15 @@ object GeneralForm: TGeneralForm
TabOrder = 3 TabOrder = 3
end end
object RadioGroup1: TRadioGroup object RadioGroup1: TRadioGroup
Left = 501 AnchorSideTop.Control = ThemeRadioGroup
AnchorSideTop.Side = asrBottom
Left = 499
Height = 77 Height = 77
Top = 209 Top = 190
Width = 205 Width = 205
Anchors = [akRight, akBottom] Anchors = [akTop, akRight]
AutoFill = True AutoFill = True
BorderSpacing.Top = 10
Caption = 'Tree button look: ' Caption = 'Tree button look: '
ChildSizing.LeftRightSpacing = 6 ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6 ChildSizing.TopBottomSpacing = 6
@ -221,12 +234,15 @@ object GeneralForm: TGeneralForm
TabOrder = 4 TabOrder = 4
end end
object RadioGroup2: TRadioGroup object RadioGroup2: TRadioGroup
Left = 501 AnchorSideTop.Control = RadioGroup1
AnchorSideTop.Side = asrBottom
Left = 499
Height = 77 Height = 77
Top = 297 Top = 277
Width = 205 Width = 205
Anchors = [akRight, akBottom] Anchors = [akTop, akRight]
AutoFill = True AutoFill = True
BorderSpacing.Top = 10
Caption = 'Draw selection mode: ' Caption = 'Draw selection mode: '
ChildSizing.LeftRightSpacing = 6 ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6 ChildSizing.TopBottomSpacing = 6
@ -247,12 +263,17 @@ object GeneralForm: TGeneralForm
TabOrder = 5 TabOrder = 5
end end
object ThemeRadioGroup: TRadioGroup object ThemeRadioGroup: TRadioGroup
Left = 501 AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Label8
AnchorSideTop.Side = asrBottom
Left = 499
Height = 77 Height = 77
Top = 125 Top = 103
Width = 205 Width = 205
Anchors = [akRight, akBottom] Anchors = [akTop, akRight]
AutoFill = True AutoFill = True
BorderSpacing.Left = 10
BorderSpacing.Top = 10
Caption = ' Switch XP theme awareness: ' Caption = ' Switch XP theme awareness: '
ChildSizing.LeftRightSpacing = 6 ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6 ChildSizing.TopBottomSpacing = 6
@ -272,9 +293,9 @@ object GeneralForm: TGeneralForm
TabOrder = 6 TabOrder = 6
end end
object SaveButton: TBitBtn object SaveButton: TBitBtn
Left = 611 Left = 613
Height = 30 Height = 30
Top = 6 Top = 8
Width = 91 Width = 91
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
Caption = 'Save as text...' Caption = 'Save as text...'

View File

@ -2,7 +2,6 @@ unit GeneralAbilitiesDemo;
{$MODE Delphi} {$MODE Delphi}
// Virtual Treeview sample form demonstrating following features: // Virtual Treeview sample form demonstrating following features:
// - General use and feel of TVirtualStringTree. // - General use and feel of TVirtualStringTree.
// - Themed/non-themed painting. // - Themed/non-themed painting.
@ -19,14 +18,6 @@ unit GeneralAbilitiesDemo;
interface interface
{$ifdef COMPILER_7_UP}
// For some things to work we need code, which is classified as being unsafe for .NET.
{$warn UNSAFE_TYPE off}
{$warn UNSAFE_CAST off}
{$warn UNSAFE_CODE off}
{$endif COMPILER_7_UP}
uses uses
LCLIntf, LCLType, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, LCLIntf, LCLType, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, VTHeaderPopup, VirtualTrees, ComCtrls, ExtCtrls, Menus, StdCtrls, Buttons, VTHeaderPopup, VirtualTrees, ComCtrls, ExtCtrls, Menus,
@ -95,9 +86,7 @@ var
implementation implementation
uses uses
{$ifdef Windows} Main, States;
ShellAPI,
{$endif} Main, States;
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
@ -124,7 +113,7 @@ var
begin begin
// Determine if we are running on Windows XP. // Determine if we are running on Windows XP.
{$ifdef Windows} {$ifdef LCLWin32}
ThemeRadioGroup.Enabled := (Win32MajorVersion >= 5) and (Win32MinorVersion >= 1); ThemeRadioGroup.Enabled := (Win32MajorVersion >= 5) and (Win32MinorVersion >= 1);
{$else} {$else}
ThemeRadioGroup.Enabled := False; ThemeRadioGroup.Enabled := False;

View File

@ -13,9 +13,11 @@ object MainForm: TMainForm
OnCreate = FormCreate OnCreate = FormCreate
OnShow = FormShow OnShow = FormShow
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '0.9.25' LCLVersion = '0.9.29'
object PageScroller1: TPanel object PageScroller1: TPanel
Left = 0
Height = 77 Height = 77
Top = 0
Width = 980 Width = 980
Align = alTop Align = alTop
ClientHeight = 77 ClientHeight = 77
@ -26,7 +28,9 @@ object MainForm: TMainForm
ShowHint = True ShowHint = True
TabOrder = 0 TabOrder = 0
object MainPanel: TPanel object MainPanel: TPanel
Left = 0
Height = 70 Height = 70
Top = 0
Width = 976 Width = 976
AutoSize = True AutoSize = True
BevelOuter = bvNone BevelOuter = bvNone
@ -39,6 +43,7 @@ object MainForm: TMainForm
Left = 216 Left = 216
Height = 70 Height = 70
Hint = 'The speed breakthrough' Hint = 'The speed breakthrough'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -158,6 +163,7 @@ object MainForm: TMainForm
Left = 285 Left = 285
Height = 70 Height = 70
Hint = 'General abilities and features' Hint = 'General abilities and features'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -277,6 +283,7 @@ object MainForm: TMainForm
Left = 354 Left = 354
Height = 70 Height = 70
Hint = 'Property tree simulation' Hint = 'Property tree simulation'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -452,6 +459,7 @@ object MainForm: TMainForm
Left = 423 Left = 423
Height = 70 Height = 70
Hint = 'Hide and show nodes, sync two trees' Hint = 'Hide and show nodes, sync two trees'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -571,6 +579,7 @@ object MainForm: TMainForm
Left = 492 Left = 492
Height = 70 Height = 70
Hint = 'Tree in grid simulation' Hint = 'Tree in grid simulation'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -690,6 +699,7 @@ object MainForm: TMainForm
Left = 561 Left = 561
Height = 70 Height = 70
Hint = 'A paint tree as directory tree' Hint = 'A paint tree as directory tree'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -809,6 +819,7 @@ object MainForm: TMainForm
Left = 630 Left = 630
Height = 70 Height = 70
Hint = 'Alignment, directionality and internationalization' Hint = 'Alignment, directionality and internationalization'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -980,19 +991,22 @@ object MainForm: TMainForm
OnClick = DemoButtonClick OnClick = DemoButtonClick
end end
object Label1: TLabel object Label1: TLabel
Height = 17 Left = 0
Height = 14
Top = 26 Top = 26
Width = 92 Width = 73
Caption = 'Demo picker' Caption = 'Demo picker'
Font.Height = -11 Font.Height = -11
Font.Name = 'MS Sans Serif' Font.Name = 'MS Sans Serif'
Font.Style = [fsBold] Font.Style = [fsBold]
ParentColor = False ParentColor = False
ParentFont = False
end end
object Label2: TLabel object Label2: TLabel
Left = 0
Height = 17 Height = 17
Top = 42 Top = 42
Width = 244 Width = 197
Caption = 'Which demo do you want to see?' Caption = 'Which demo do you want to see?'
ParentColor = False ParentColor = False
end end
@ -1001,6 +1015,7 @@ object MainForm: TMainForm
Left = 699 Left = 699
Height = 70 Height = 70
Hint = 'Painting like in Windows XP' Hint = 'Painting like in Windows XP'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -1232,6 +1247,7 @@ object MainForm: TMainForm
Left = 768 Left = 768
Height = 70 Height = 70
Hint = 'Multiline nodes' Hint = 'Multiline nodes'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -1562,6 +1578,7 @@ object MainForm: TMainForm
Left = 837 Left = 837
Height = 70 Height = 70
Hint = 'Custom header drawing in advanced mode' Hint = 'Custom header drawing in advanced mode'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -1825,6 +1842,7 @@ object MainForm: TMainForm
Left = 906 Left = 906
Height = 70 Height = 70
Hint = 'Exit' Hint = 'Exit'
Top = 0
Width = 70 Width = 70
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
@ -1942,13 +1960,15 @@ object MainForm: TMainForm
end end
end end
object StatusBar: TStatusBar object StatusBar: TStatusBar
Height = 24 Left = 0
Top = 542 Height = 20
Top = 546
Width = 980 Width = 980
Panels = <> Panels = <>
end end
object ContainerPanel: TPanel object ContainerPanel: TPanel
Height = 465 Left = 0
Height = 469
Top = 77 Top = 77
Width = 980 Width = 980
Align = alClient Align = alClient

View File

@ -1,7 +1,6 @@
unit Main; unit Main;
{$MODE Delphi} {$MODE Delphi}
{$H+}
// Advanced demo for Virtual Treeview showing various effects and features in several forms. // Advanced demo for Virtual Treeview showing various effects and features in several forms.
// This is the main form which serves as container window for the demo forms. // This is the main form which serves as container window for the demo forms.
@ -9,12 +8,6 @@ unit Main;
interface interface
{$ifdef COMPILER_7_UP}
// For some things to work we need code, which is classified as being unsafe for .NET.
{$warn UNSAFE_TYPE off}
{$warn UNSAFE_CAST off}
{$warn UNSAFE_CODE off}
{$endif COMPILER_7_UP}
uses uses
LCLIntf, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, LCLIntf, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
@ -48,7 +41,7 @@ type
var var
MainForm: TMainForm; MainForm: TMainForm;
procedure LoadUnicodeStrings(Name: string; var Strings: array of UTF8String); procedure LoadUnicodeStrings(const Name: string; var Strings: array of UTF8String);
procedure SetStatusbarText(const S: string); procedure SetStatusbarText(const S: string);
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
@ -63,7 +56,7 @@ uses
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
procedure LoadUnicodeStrings(Name: string; var Strings: array of UTF8String); procedure LoadUnicodeStrings(const Name: string; var Strings: array of UTF8String);
// Loads the Unicode strings from the resource. // Loads the Unicode strings from the resource.
@ -158,22 +151,12 @@ begin
if Assigned(NewDemoClass) then if Assigned(NewDemoClass) then
begin begin
//original code:
{
NewDemo := NewDemoClass.Create(Self); NewDemo := NewDemoClass.Create(Self);
NewDemo.Hide; NewDemo.Hide;
NewDemo.BorderStyle := bsNone; NewDemo.BorderStyle := bsNone;
NewDemo.Parent := ContainerPanel; NewDemo.Parent := ContainerPanel;
NewDemo.Align := alClient; NewDemo.Align := alClient;
NewDemo.Show; NewDemo.Show;
}
//workaround
NewDemo := NewDemoClass.Create(Self);
NewDemo.Hide;
//NewDemo.BorderStyle := bsNone;
NewDemo.Align := alClient;
NewDemo.Show;
NewDemo.Parent := ContainerPanel;
end; end;
end; end;
end; end;

View File

@ -10,26 +10,27 @@ object PropertiesForm: TPropertiesForm
Font.Height = -13 Font.Height = -13
Font.Name = 'MS Sans Serif' Font.Name = 'MS Sans Serif'
OnCreate = FormCreate OnCreate = FormCreate
LCLVersion = '0.9.27' LCLVersion = '0.9.29'
object Label9: TLabel object Label9: TLabel
Left = 420 Left = 420
Height = 81 Height = 65
Top = 12 Top = 6
Width = 198 Width = 212
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = False
Caption = 'This tree demonstrates a typical property page as it can be found in the property dialog for Word and other documents.' Caption = 'This tree demonstrates a typical property page as it can be found in the property dialog for Word and other documents.'
ParentColor = False ParentColor = False
WordWrap = True WordWrap = True
end end
object Label10: TLabel object Label10: TLabel
AnchorSideTop.Control = Label9
AnchorSideTop.Side = asrBottom
Left = 420 Left = 420
Height = 93 Height = 49
Top = 100 Top = 81
Width = 198 Width = 212
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = False BorderSpacing.Top = 10
Caption = 'What makes this demonstration special is the sample implementation for node editors. However, neither of them is Unicode aware.' Caption = 'What makes this demonstration special is the sample implementation for node editors.'
ParentColor = False ParentColor = False
WordWrap = True WordWrap = True
end end
@ -39,7 +40,6 @@ object PropertiesForm: TPropertiesForm
Top = 6 Top = 6
Width = 399 Width = 399
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
BorderStyle = bsSingle
Colors.BorderColor = clWindowText Colors.BorderColor = clWindowText
Colors.HotColor = clBlack Colors.HotColor = clBlack
DefaultNodeHeight = 20 DefaultNodeHeight = 20
@ -48,6 +48,7 @@ object PropertiesForm: TPropertiesForm
Header.Columns = < Header.Columns = <
item item
Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible, coAutoSpring] Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible, coAutoSpring]
Position = 0
Text = 'Properties' Text = 'Properties'
Width = 203 Width = 203
end end
@ -55,8 +56,9 @@ object PropertiesForm: TPropertiesForm
Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible, coAutoSpring] Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible, coAutoSpring]
Position = 1 Position = 1
Text = 'Values' Text = 'Values'
Width = 196 Width = 192
end> end>
Header.DefaultHeight = 17
Header.Font.Height = -11 Header.Font.Height = -11
Header.Font.Name = 'MS Sans Serif' Header.Font.Name = 'MS Sans Serif'
Header.Height = 18 Header.Height = 18
@ -91,7 +93,7 @@ object PropertiesForm: TPropertiesForm
Left = 416 Left = 416
Height = 69 Height = 69
Top = 306 Top = 306
Width = 202 Width = 216
Anchors = [akRight, akBottom] Anchors = [akRight, akBottom]
AutoFill = True AutoFill = True
Caption = ' Incremental search direction: ' Caption = ' Incremental search direction: '
@ -104,11 +106,11 @@ object PropertiesForm: TPropertiesForm
ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1 ChildSizing.ControlsPerLine = 1
ClientHeight = 51 ClientHeight = 51
ClientWidth = 198 ClientWidth = 212
ItemIndex = 0 ItemIndex = 0
Items.Strings = ( Items.Strings = (
'forward' 'Forward'
'backward' 'Backward'
) )
OnClick = RadioGroup1Click OnClick = RadioGroup1Click
TabOrder = 1 TabOrder = 1

View File

@ -1,7 +1,6 @@
unit PropertiesDemo; unit PropertiesDemo;
{$MODE Delphi} {$MODE Delphi}
{$H+}
// Virtual Treeview sample form demonstrating following features: // Virtual Treeview sample form demonstrating following features:
// - Property page like string tree with individual node editors. // - Property page like string tree with individual node editors.
@ -11,15 +10,13 @@ unit PropertiesDemo;
interface interface
uses uses
{$ifdef Windows} Messages, {$endif}
LCLIntf, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, LCLIntf, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, VirtualTrees, ExtCtrls, LResources; StdCtrls, VirtualTrees, ExtCtrls, LResources, LMessages;
{$ifdef Windows}
const const
// Helper message to decouple node change handling from edit handling. // Helper message to decouple node change handling from edit handling.
WM_STARTEDITING = WM_USER + 778; WM_STARTEDITING = LM_USER + 778;
{$endif}
type type
TPropertiesForm = class(TForm) TPropertiesForm = class(TForm)
VST3: TVirtualStringTree; VST3: TVirtualStringTree;
@ -47,9 +44,7 @@ type
procedure RadioGroup1Click(Sender: TObject); procedure RadioGroup1Click(Sender: TObject);
procedure VST3StateChange(Sender: TBaseVirtualTree; Enter, Leave: TVirtualTreeStates); procedure VST3StateChange(Sender: TBaseVirtualTree; Enter, Leave: TVirtualTreeStates);
private private
{$ifdef Windows} procedure WMStartEditing(var Message: TLMessage); message WM_STARTEDITING;
procedure WMStartEditing(var Message: TMessage); message WM_STARTEDITING;
{$endif}
end; end;
var var
@ -203,9 +198,7 @@ begin
// to start a new edit operation if the last one is still in progress. So we post us a special message and // to start a new edit operation if the last one is still in progress. So we post us a special message and
// in the message handler we then can start editing the new node. This works because the posted message // in the message handler we then can start editing the new node. This works because the posted message
// is first executed *after* this event and the message, which triggered it is finished. // is first executed *after* this event and the message, which triggered it is finished.
{$ifdef Windows}
PostMessage(Self.Handle, WM_STARTEDITING, Integer(Node), 0); PostMessage(Self.Handle, WM_STARTEDITING, Integer(Node), 0);
{$endif}
end; end;
end; end;
end; end;
@ -256,9 +249,6 @@ var
PropText: string; PropText: string;
begin begin
// Note: This code requires a proper Unicode/WideString comparation routine which I did not want to link here for
// size and clarity reasons. For now strings are (implicitely) converted to ANSI to make the comparation work.
// Search is not case sensitive.
S := Text; S := Text;
SetStatusbarText('Searching for: ' + S); SetStatusbarText('Searching for: ' + S);
@ -298,7 +288,6 @@ procedure TPropertiesForm.VST3StateChange(Sender: TBaseVirtualTree; Enter, Leave
begin begin
if tsIncrementalSearching in Enter then if tsIncrementalSearching in Enter then
// Note: Unicode will be converted to ANSI here, but for demonstration purposes we accept that for now.
SetStatusbarText('Searching for: ' + Sender.SearchBuffer); SetStatusbarText('Searching for: ' + Sender.SearchBuffer);
if tsIncrementalSearching in Leave then if tsIncrementalSearching in Leave then
SetStatusbarText(''); SetStatusbarText('');
@ -309,8 +298,7 @@ end;
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
{$ifdef Windows} procedure TPropertiesForm.WMStartEditing(var Message: TLMessage);
procedure TPropertiesForm.WMStartEditing(var Message: TMessage);
// This message was posted by ourselves from the node change handler above to decouple that change event and our // This message was posted by ourselves from the node change handler above to decouple that change event and our
// intention to start editing a node. This is necessary to avoid interferences between nodes editors potentially created // intention to start editing a node. This is necessary to avoid interferences between nodes editors potentially created
@ -324,7 +312,6 @@ begin
// Note: the test whether a node can really be edited is done in the OnEditing event. // Note: the test whether a node can really be edited is done in the OnEditing event.
VST3.EditNode(Node, 1); VST3.EditNode(Node, 1);
end; end;
{$endif}
//---------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------
initialization initialization

View File

@ -9,7 +9,7 @@ object SpeedForm: TSpeedForm
ClientWidth = 566 ClientWidth = 566
Font.Height = -13 Font.Height = -13
Font.Name = 'MS Sans Serif' Font.Name = 'MS Sans Serif'
LCLVersion = '0.9.27' LCLVersion = '0.9.29'
Visible = True Visible = True
object Label1: TLabel object Label1: TLabel
Left = 7 Left = 7
@ -39,21 +39,23 @@ object SpeedForm: TSpeedForm
end end
object Label4: TLabel object Label4: TLabel
Left = 264 Left = 264
Height = 85 Height = 81
Top = 24 Top = 24
Width = 285 Width = 285
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = False
Caption = 'Test how fast the Virtual Treeview is. You can add and delete nodes as much as you like (provided your system has enough memory). An upper limit of one million nodes for a 128MB system is a good start.' Caption = 'Test how fast the Virtual Treeview is. You can add and delete nodes as much as you like (provided your system has enough memory). An upper limit of one million nodes for a 128MB system is a good start.'
ParentColor = False ParentColor = False
WordWrap = True WordWrap = True
end end
object Label2: TLabel object Label2: TLabel
AnchorSideTop.Control = Label4
AnchorSideTop.Side = asrBottom
Left = 262 Left = 262
Height = 17 Height = 17
Top = 114 Top = 115
Width = 122 Width = 122
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.Top = 10
Caption = 'As an orientation:' Caption = 'As an orientation:'
Font.Height = -13 Font.Height = -13
Font.Name = 'MS Sans Serif' Font.Name = 'MS Sans Serif'
@ -62,23 +64,27 @@ object SpeedForm: TSpeedForm
ParentFont = False ParentFont = False
end end
object Label5: TLabel object Label5: TLabel
AnchorSideTop.Control = Label2
AnchorSideTop.Side = asrBottom
Left = 276 Left = 276
Height = 41 Height = 33
Top = 136 Top = 134
Width = 273 Width = 273
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = False BorderSpacing.Top = 2
Caption = '1.000.000 nodes on Windows XP Pro, 650Mhz Athlon, 256 MB RAM, take ~ 850ms to add.' Caption = '1.000.000 nodes on Windows XP Pro, 650Mhz Athlon, 256 MB RAM, take ~ 850ms to add.'
ParentColor = False ParentColor = False
WordWrap = True WordWrap = True
end end
object Label7: TLabel object Label7: TLabel
AnchorSideTop.Control = Label5
AnchorSideTop.Side = asrBottom
Left = 276 Left = 276
Height = 41 Height = 33
Top = 176 Top = 169
Width = 269 Width = 273
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = False BorderSpacing.Top = 2
Caption = '5.000.000 nodes on Windows XP Pro, 1.8Ghz Pentium M , 1 GB RAM, are added in ~1.6s.' Caption = '5.000.000 nodes on Windows XP Pro, 1.8Ghz Pentium M , 1 GB RAM, are added in ~1.6s.'
ParentColor = False ParentColor = False
WordWrap = True WordWrap = True
@ -1541,12 +1547,12 @@ object SpeedForm: TSpeedForm
1410041410071410041410071410041410071400000000000404040004070004 1410041410071410041410071410041410071400000000000404040004070004
10141014040C04140C070700040C040C0404141007040004071014040000 10141014040C04140C070700040C040C0404141007040004071014040000
} }
BorderStyle = bsSingle
Colors.BorderColor = clWindowText Colors.BorderColor = clWindowText
Colors.HotColor = clBlack Colors.HotColor = clBlack
DefaultText = 'Node' DefaultText = 'Node'
Header.AutoSizeIndex = -1 Header.AutoSizeIndex = -1
Header.Columns = <> Header.Columns = <>
Header.DefaultHeight = 17
Header.Font.Height = -11 Header.Font.Height = -11
Header.Font.Name = 'MS Sans Serif' Header.Font.Name = 'MS Sans Serif'
Header.MainColumn = -1 Header.MainColumn = -1
@ -1565,22 +1571,24 @@ object SpeedForm: TSpeedForm
OnStructureChange = VST1StructureChange OnStructureChange = VST1StructureChange
end end
object GroupBox2: TGroupBox object GroupBox2: TGroupBox
AnchorSideBottom.Control = VST1
AnchorSideBottom.Side = asrBottom
Left = 268 Left = 268
Height = 57 Height = 57
Top = 454 Top = 454
Width = 272 Width = 281
Anchors = [akRight, akBottom] Anchors = [akRight, akBottom]
Caption = ' Background ' Caption = ' Background '
ClientHeight = 39 ClientHeight = 39
ClientWidth = 268 ClientWidth = 277
DragMode = dmAutomatic DragMode = dmAutomatic
TabOrder = 1 TabOrder = 1
object SBCheckBox: TCheckBox object SBCheckBox: TCheckBox
Left = 24 Left = 24
Height = 20 Height = 20
Top = 10 Top = 10
Width = 126 Width = 129
Caption = 'show background' Caption = 'Show Background'
OnClick = SBCheckBoxClick OnClick = SBCheckBoxClick
TabOrder = 0 TabOrder = 0
end end
@ -1596,11 +1604,14 @@ object SpeedForm: TSpeedForm
end end
end end
object GroupBox1: TGroupBox object GroupBox1: TGroupBox
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Control = GroupBox2
Left = 268 Left = 268
Height = 122 Height = 122
Top = 316 Top = 322
Width = 281 Width = 281
Anchors = [akRight, akBottom] Anchors = [akRight, akBottom]
BorderSpacing.Bottom = 10
Caption = ' Add and remove nodes ' Caption = ' Add and remove nodes '
ClientHeight = 104 ClientHeight = 104
ClientWidth = 277 ClientWidth = 277

View File

@ -1,7 +1,6 @@
unit SpeedDemo; unit SpeedDemo;
{$MODE Delphi} {$MODE Delphi}
{$H+}
// Virtual Treeview sample form demonstrating following features: // Virtual Treeview sample form demonstrating following features:
// - Speed. // - Speed.
@ -12,7 +11,7 @@ interface
uses uses
LCLIntf, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, LCLIntf, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, VirtualTrees, ExtDlgs, ComCtrls, {jpeg,} Menus, LResources, Buttons; StdCtrls, VirtualTrees, ExtDlgs, ComCtrls, Menus, LResources, Buttons;
type type
TSpeedForm = class(TForm) TSpeedForm = class(TForm)