I'm using D7 and TTree. I want to know how do I change the text font color of the selected item when the selected item is unselected.
Reason:
I want the user to click on an item and then right click to get the popup menu. In the popup menu he has got a few options to update the selected item. What I want to is the font color must change to blue when the Item is was updated. So the user can see all the Items he manually updated.
You can the UnSelectShape event for this:
Code: Select all
procedure TForm1.Tree1UnSelectShape(Sender: TTreeNodeShape);
begin
Sender.Font.Color :=clBlue;
end;
Next question.
This question is also to do with the popup menu the user has got the following two options.
1. Update selected item only
2. Update Selected Item and Children.
Now my question is, how can I start updating the selected item and all the children of the selected item.
Like
For x :=selected to AllChildren do
Begin
UpdateItem(Selected.Item[x].Tag) //I use the tag to record the primary key of the record
Selected.Item[x].Format.Color :=clBlue; //Change the color of the item to blue to indicate that the item was updated
End;
This can be accomplished as follows:
Code: Select all
procedure TForm1.Children1Click(Sender: TObject);
procedure IterateChildren(AShape: TTreeNodeShape);
var i: integer;
begin
AShape.Font.Color :=clGreen;
for i := 0 to AShape.Count-1 do
begin
IterateChildren(AShape.Children[i]);
end;
end;
begin
if (Tree1.Selected.Count > 0) then
IterateChildren(Tree1.Selected.Items[0]);
end;
Here a small example code:
Code: Select all
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, TeeTree, ExtCtrls, TeeProcs, Menus;
type
TForm1 =3D class(TForm)
Tree1: TTree;
TreeNodeShape1: TTreeNodeShape;
TreeNodeShape2: TTreeNodeShape;
TreeNodeShape1_TreeNodeShape2: TTreeConnection;
TreeNodeShape3: TTreeNodeShape;
TreeNodeShape1_TreeNodeShape3: TTreeConnection;
TreeNodeShape4: TTreeNodeShape;
TreeNodeShape1_TreeNodeShape4: TTreeConnection;
TreeNodeShape5: TTreeNodeShape;
TreeNodeShape1_TreeNodeShape5: TTreeConnection;
PopupMenu1: TPopupMenu;
Edit1: TMenuItem;
Color1: TMenuItem;
TreeNodeShape6: TTreeNodeShape;
TreeNodeShape5_TreeNodeShape6: TTreeConnection;
TreeNodeShape7: TTreeNodeShape;
TreeNodeShape5_TreeNodeShape7: TTreeConnection;
TreeNodeShape8: TTreeNodeShape;
TreeNodeShape5_TreeNodeShape8: TTreeConnection;
TreeNodeShape9: TTreeNodeShape;
TreeNodeShape5_TreeNodeShape9: TTreeConnection;
Children1: TMenuItem;
TreeNodeShape10: TTreeNodeShape;
TreeNodeShape7_TreeNodeShape10: TTreeConnection;
TreeNodeShape11: TTreeNodeShape;
TreeNodeShape7_TreeNodeShape11: TTreeConnection;
procedure Tree1UnSelectShape(Sender: TTreeNodeShape);
procedure Color1Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Children1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses TreeShEd;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Tree1.SingleSelection :=true;
end;
procedure TForm1.Tree1UnSelectShape(Sender: TTreeNodeShape);
begin
Sender.Font.Color :=clBlue;
end;
procedure TForm1.Color1Click(Sender: TObject);
begin
if (Tree1.Selected.Count > 0) then
Tree1.Selected.Items[0].Font.Style := Tree1.Selected.Items[0].Font.Style + [fsBold];
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
if (Tree1.Selected.Count > 0) then
EditTreeShape(self, Tree1.Selected.Items[0]);
end;
procedure TForm1.Children1Click(Sender: TObject);
procedure IterateChildren(AShape: TTreeNodeShape);
var i: integer;
begin
AShape.Font.Color :=clGreen;
for i := 0 to AShape.Count-1 do
begin
IterateChildren(AShape.Children[i]);
end;
end;
begin
if (Tree1.Selected.Count > 0) then
IterateChildren(Tree1.Selected.Items[0]);
end;
end.