⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treedemo.pas

📁 一套及时通讯的原码
💻 PAS
字号:
unit treedemo;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  fcTreeView, Buttons, StdCtrls, fcdbtreeview, ComCtrls,
  shellapi, fcStatusBar, Db, DBTables, Grids, DBGrids, fcImager, fcCombo,
  fcTreeCombo, fcFontCombo, fcDemoRichEdit, ImgList;

type
  TTreeViewDemoForm = class(TForm)
    ImageList1: TImageList;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    fcTreeView1: TfcTreeView;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    fcStatusBar1: TfcStatusBar;
    fcTreeView2: TfcTreeView;
    TabSheet3: TTabSheet;
    fcTreeView3: TfcTreeView;
    Label1: TLabel;
    DataSource1: TDataSource;
    Button1: TButton;
    ImageList2: TImageList;
    DBGrid1: TDBGrid;
    fcDemoRichEdit1: TfcDemoRichEdit;
    fcDemoRichEdit2: TfcDemoRichEdit;
    Query1: TQuery;
    fcDemoRichEdit3: TfcDemoRichEdit;
    procedure CheckBox1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure fcTreeView1CalcNodeAttributes(TreeView: TfcCustomTreeView;
      Node: TfcTreeNode; State: TfcItemStates);
    procedure fcTreeView2MouseMove(TreeView: TfcCustomTreeView;
      Node: TfcTreeNode; Shift: TShiftState; X, Y: Integer);
    procedure Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
    procedure Button1Click(Sender: TObject);
    procedure fcTreeView3ToggleCheckbox(TreeView: TfcCustomTreeView;
      Node: TfcTreeNode);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  TreeViewDemoForm: TTreeViewDemoForm;

implementation

{$R *.DFM}

procedure TTreeViewDemoForm.CheckBox1Click(Sender: TObject);
begin
  with fcTreeView1 do begin
     if tvoExpandButtons3D in Options then
        Options:= Options - [tvoExpandButtons3D]
     else Options:= Options + [tvoExpandButtons3D]
  end
end;

procedure TTreeViewDemoForm.FormShow(Sender: TObject);
begin
   fctreeview1.FullExpand;
   fctreeview2.FullExpand;
end;

procedure TTreeViewDemoForm.CheckBox2Click(Sender: TObject);
begin
  with fcTreeView1 do begin
     if (Sender as TCheckBox).checked then
        Options:= Options + [tvoRowSelect]
     else
        Options:= Options - [tvoRowSelect]
  end

end;

procedure TTreeViewDemoForm.fcTreeView1CalcNodeAttributes(TreeView: TfcCustomTreeView;
  Node: TfcTreeNode; State: TfcItemStates);
begin
    if fcisHot in State then TreeView.Canvas.Font.Style:= TreeView.Canvas.Font.Style + [fsUnderline];
end;

{ Update statusbar to contain URL link address }
procedure TTreeViewDemoForm.fcTreeView2MouseMove(TreeView: TfcCustomTreeView;
  Node: TfcTreeNode; Shift: TShiftState; X, Y: Integer);
begin
   with TreeView do begin
      if (Node<>Nil) and (Node.StringData<>'') and
          (fchtOnItem in GetHitTestInfoAt(x,y)) then
         fcStatusBar1.Panels[0].Text:= Node.StringData
      else
         fcStatusBar1.Panels[0].Text:= '';
   end
end;

procedure TTreeViewDemoForm.Table1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
var CurNode, ChildNode: TfcTreeNode;
    CountryMatch, AmountOrderedMatch, AmountOwedMatch: boolean;
    AmountOwed, AmountOrdered: Double;
begin

  { TreeView handle not available i.e. destroying}
  if not fcTreeView3.HandleAllocated then exit;

  accept:= False;

  CountryMatch:= True;
  AmountOrderedMatch:= True;
  AmountOwedMatch:= True;

  with fcTreeView3 do begin
     curNode:= Items.GetFirstNode;
     repeat
        if (curNode.StringData = 'Country') and (curNode.checked) then begin
           CountryMatch:= False;

           { Search checkboxes for country to see if any countries match current record }
           ChildNode:= curNode.GetFirstChild;
           repeat
              if ChildNode.checked then begin
                 if dataset.fieldbyname('Country').asString = ChildNode.text then
                 begin
                    CountryMatch:= True;
                    break;
                 end;
              end;
              ChildNode:= ChildNode.GetNextSibling;
           until ChildNode = nil;
        end
        else if (curNode.StringData = 'Amount Ordered') and (curNode.checked) then begin
           { Check AmountOrdered to amount matches radio group selected in treeview }
           AmountOrderedMatch:= False;
           ChildNode:= curNode.GetFirstChild;
           repeat
              if ChildNode.checked then begin
                 AmountOrdered:= dataset.fieldbyname('AmountOrdered').asFloat;
                 with dataset.fieldbyname('AmountOrdered') do
                    if ((ChildNode.StringData='') or
                       (AmountOrdered >= strtoint(ChildNode.StringData))) and
                       ((ChildNode.StringData2='') or
                       (AmountOrdered < strtoint(ChildNode.StringData2))) then
                    AmountOrderedMatch:= True;
                 break;
              end;
              ChildNode:= ChildNode.GetNextSibling;
           until ChildNode = nil;
        end
        else if (curNode.StringData = 'Amount Owed') and (curNode.checked) then begin
           { Check AmountOrdered to amount matches radio group selected in treeview }
           AmountOwedMatch:= False;
           ChildNode:= curNode.GetFirstChild;
           repeat
              if ChildNode.checked then begin
                 AmountOwed:= dataset.fieldbyname('AmountOrdered').asFloat -
                              dataset.fieldbyname('AmountPaid').asFloat;
                 if ((ChildNode.StringData='') or
                    (AmountOwed > strtoint(ChildNode.StringData))) and
                    ((ChildNode.StringData2='') or
                    (AmountOwed <= strtoint(ChildNode.StringData2))) then
                    AmountOwedMatch:= True;
                 break;
              end;
              ChildNode:= ChildNode.GetNextSibling;
           until ChildNode = nil;
        end;

        curNode:= curNode.GetNextSibling;
     until curNode=nil;
  end;

  if CountryMatch and AmountOrderedMatch and AmountOwedMatch then accept:= true;
end;

procedure TTreeViewDemoForm.Button1Click(Sender: TObject);
begin
   { Reapply filter by refreshing query locally }
   query1.updatecursorpos;
   query1.resync([rmCenter]);
end;

procedure TTreeViewDemoForm.fcTreeView3ToggleCheckbox(
  TreeView: TfcCustomTreeView; Node: TfcTreeNode);
begin
   if (Node.Level=1) and (Node.checked) then
      Node.parent.checked:= True;
end;

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -