summaryrefslogtreecommitdiff
path: root/examples/gui/treeviewtest
diff options
context:
space:
mode:
authorGraeme Geldenhuys <graeme@mastermaths.co.za>2011-10-26 11:52:36 +0200
committerGraeme Geldenhuys <graeme@mastermaths.co.za>2011-10-26 11:52:36 +0200
commit964790b057d40d08caad6521b6bbc0071174b145 (patch)
tree206280c66b45372e638c2745150cc8dd3c25abd1 /examples/gui/treeviewtest
parenta395588c4b27366e015189179e29f5fafad79c41 (diff)
downloadfpGUI-964790b057d40d08caad6521b6bbc0071174b145.tar.xz
treeview demo: reworked this demo to show the StateImageList support
The demo adds some checkboxes to the treeview, and shows how you can query the treeview for any checked nodes.
Diffstat (limited to 'examples/gui/treeviewtest')
-rw-r--r--examples/gui/treeviewtest/stateimages.pas130
-rw-r--r--examples/gui/treeviewtest/treeviewtest.lpi26
-rw-r--r--examples/gui/treeviewtest/treeviewtest.lpr74
3 files changed, 217 insertions, 13 deletions
diff --git a/examples/gui/treeviewtest/stateimages.pas b/examples/gui/treeviewtest/stateimages.pas
new file mode 100644
index 00000000..3c3c5ee7
--- /dev/null
+++ b/examples/gui/treeviewtest/stateimages.pas
@@ -0,0 +1,130 @@
+unit stateimages;
+
+interface
+
+procedure InitializeCustomImages;
+
+implementation
+
+uses
+ fpg_main;
+
+Const
+ usr_state0 : Array[0..821] of byte = (
+ 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
+ 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,132,132,132,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,132,132,132,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,132,132,132,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,132,132,132,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,132,132,132,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,132,132,132,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,132,132,132,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,132,132,
+ 132,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,
+ 132,132,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,132,132,132,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,132,132,132,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,132,132,132,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,132,132,132,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,132,132,132,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,132,132,132,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,132,132,132,132,132,132,132,132,132,132,132,132,132,
+ 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
+ 132,132,132,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 255, 0,255,255, 0,255);
+
+Const
+ usr_state1 : Array[0..821] of byte = (
+ 66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0,
+ 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
+ 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,132,132,132,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132,255,255,255,
+ 255,255,255,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,132,132,132,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,132,132,132,255,255,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,
+ 255,255,255,255,132,132,132,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,132,132,132,255,255,255, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,
+ 255,132,132,132,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,132,132,132,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,132,132,
+ 132,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,
+ 132,132,255,255,255, 0, 0, 0,255,255,255,255,255,255,255,255,255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,132,132,132,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,132,132,132,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 0, 0, 0, 0, 0, 0,255,255,255,132,132,132,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,132,132,132,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 0, 0, 0,255,255,255,132,132,132,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,132,132,132,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ 255,255,255,132,132,132,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,132,132,132,132,132,132,132,132,132,132,132,132,132,
+ 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
+ 132,132,132,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,
+ 255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255,
+ 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,255, 0,255,
+ 255, 0,255,255, 0,255);
+
+
+procedure InitializeCustomImages;
+begin
+ fpgImages.AddMaskedBMP(
+ 'usr.state0',
+ @usr_state0,
+ sizeof(usr_state0), 0,0);
+
+ fpgImages.AddMaskedBMP(
+ 'usr.state1',
+ @usr_state1,
+ sizeof(usr_state1), 0,0);
+end;
+
+end.
diff --git a/examples/gui/treeviewtest/treeviewtest.lpi b/examples/gui/treeviewtest/treeviewtest.lpi
index 5f459bb9..6c19a1a9 100644
--- a/examples/gui/treeviewtest/treeviewtest.lpi
+++ b/examples/gui/treeviewtest/treeviewtest.lpi
@@ -1,19 +1,21 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
- <PathDelim Value="/"/>
- <Version Value="6"/>
+ <Version Value="9"/>
<General>
<Flags>
<SaveOnlyProjectUnits Value="True"/>
+ <LRSInOutputDirectory Value="False"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
- <TargetFileExt Value=""/>
</General>
<VersionInfo>
- <ProjectVersion Value=""/>
+ <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)"/>
@@ -30,24 +32,32 @@
<PackageName Value="fpgui_toolkit"/>
</Item1>
</RequiredPackages>
- <Units Count="1">
+ <Units Count="2">
<Unit0>
<Filename Value="treeviewtest.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="treeviewtest"/>
</Unit0>
+ <Unit1>
+ <Filename Value="stateimages.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="stateimages"/>
+ </Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
- <Version Value="8"/>
+ <Version Value="9"/>
<Parsing>
<SyntaxOptions>
<CStyleOperator Value="False"/>
+ <UseAnsiStrings Value="False"/>
</SyntaxOptions>
</Parsing>
<Other>
- <CustomOptions Value="-FUunits
-"/>
+ <CompilerMessages>
+ <UseMsgFile Value="True"/>
+ </CompilerMessages>
+ <CustomOptions Value="-FUunits"/>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
diff --git a/examples/gui/treeviewtest/treeviewtest.lpr b/examples/gui/treeviewtest/treeviewtest.lpr
index bca0a91d..3e1ac6ff 100644
--- a/examples/gui/treeviewtest/treeviewtest.lpr
+++ b/examples/gui/treeviewtest/treeviewtest.lpr
@@ -18,7 +18,8 @@ uses
fpg_label,
fpg_dialogs,
fpg_combobox,
- fpg_utils;
+ fpg_utils,
+ stateimages;
type
@@ -45,8 +46,10 @@ type
Label8: TfpgLabel;
btnCollapseAll: TfpgButton;
btnExpandAll: TfpgButton;
+ btnShowChecked: TfpgButton;
{@VFD_HEAD_END: MainForm}
FImagelist: TfpgImageList;
+ FStateImagelist: TfpgImageList;
FSrcNode: TfpgTreeNode;
FDestnode: TfpgTreeNode;
procedure cbShowImagesChange(Sender: TObject);
@@ -59,6 +62,8 @@ type
procedure btnMoveToClicked(Sender: TObject);
procedure btnCollapseAllClicked(Sender: TObject);
procedure btnExpandAllClicked(Sender: TObject);
+ procedure StateImageClicked(Sender: TObject; ANode: TfpgTreeNode);
+ procedure btnShowCheckedClicked(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@@ -122,8 +127,13 @@ begin
n := tree.RootNode.AppendText('Node 1');
n.ImageIndex := 0;
- n.AppendText('Node 1.1').ImageIndex := 1;
- n.AppendText('Node 1.2').ImageIndex := 1;
+ n.StateImageIndex := 1;
+ n2 := n.AppendText('Node 1.1');
+ n2.ImageIndex := 1;
+ n2.StateImageIndex := 1;
+ n2 := n.AppendText('Node 1.2');
+ n2.ImageIndex := 1;
+ n2.StateImageIndex := 0;
n := tree.RootNode.AppendText('Node 2');
n.ImageIndex := 0;
n.AppendText('Node 2.1').ImageIndex := 1;
@@ -137,7 +147,8 @@ begin
else
n.AppendText(s);
end;
- n.Parent.AppendText('Node 2.3');
+ n2 := n.Parent.AppendText('Node 2.3');
+ n2.StateImageIndex := 0;
tree.RootNode.FirstSubNode.Next.Collapse;
tree.RootNode.AppendText('Node 3').ImageIndex := 0;
tree.Selection := n;
@@ -198,6 +209,31 @@ begin
TreeNodeChanged(nil);
end;
+procedure TMainForm.StateImageClicked(Sender: TObject; ANode: TfpgTreeNode);
+begin
+ case ANode.StateImageIndex of
+ 0: ANode.StateImageIndex := 1;
+ 1: ANode.StateImageIndex := 0;
+ end;
+ tree.Invalidate;
+end;
+
+procedure TMainForm.btnShowCheckedClicked(Sender: TObject);
+var
+ n: TfpgTreeNode;
+ s: string;
+begin
+ s := 'These are all the nodes that have checkboxes and are checked:' + LineEnding;
+ n := tree.RootNode;
+ while n <> nil do
+ begin
+ if n.StateImageIndex = 1 then
+ s += LineEnding + n.Text;
+ n := Tree.NextNode(n);
+ end;
+ ShowMessage(s);
+end;
+
procedure TMainForm.cbShowImagesChange(Sender: TObject);
begin
tree.ShowImages := cbShowImages.Checked;
@@ -216,12 +252,24 @@ begin
FImagelist.Items[1].Image.CreateMaskFromSample(0, 0);
FImagelist.Items[1].Image.UpdateImage;
end;
+
+ InitializeCustomImages;
+ FStateImagelist := TfpgImageList.Create;
+ FStateImagelist.AddImage(fpgImages.GetImage('usr.state0'));
+ FStateImagelist.AddImage(fpgImages.GetImage('usr.state1'));
+
end;
destructor TMainForm.Destroy;
+var
+ i: integer;
begin
tree.ImageList := nil;
+ tree.StateImageList := nil;
FImagelist.Free;
+ for i := FStateImageList.Count-1 downto 0 do
+ FStateImageList[i].Image := nil;
+ FStateImageList.Free;
inherited Destroy;
end;
@@ -247,7 +295,9 @@ begin
ShowImages := True;
TabOrder := 0;
ImageList := FImagelist;
+ StateImageList := FStateImagelist;
OnChange := @TreeNodeChanged;
+ OnStateImageClicked := @StateImageClicked;
end;
cbShowImages := TfpgCheckBox.Create(self);
@@ -406,6 +456,7 @@ begin
begin
Name := 'cbMoveToTypes';
SetPosition(612, 172, 96, 22);
+ ExtraHint := '';
FontDesc := '#List';
Hint := '';
Items.Add('naAdd');
@@ -413,8 +464,8 @@ begin
Items.Add('naAddChild');
Items.Add('naAddChildFirst');
Items.Add('naInsert');
- TabOrder := 14;
FocusItem := 0;
+ TabOrder := 14;
end;
Label6 := TfpgLabel.Create(self);
@@ -473,6 +524,19 @@ begin
OnClick := @btnExpandAllClicked;
end;
+ btnShowChecked := TfpgButton.Create(self);
+ with btnShowChecked do
+ begin
+ Name := 'btnShowChecked';
+ SetPosition(160, 304, 100, 24);
+ Text := 'Show Checked';
+ FontDesc := '#Label1';
+ Hint := '';
+ ImageName := '';
+ TabOrder := 21;
+ OnClick := @btnShowCheckedClicked;
+ end;
+
{@VFD_BODY_END: MainForm}
PopulateTree;