Module

fFindingTemplates

Path

C:\CPRS\CPRS30\Templates\fFindingTemplates.pas

Last Modified

7/15/2014 3:26:44 PM

Units Used in Implementation

Name Comments
uTemplates -

Classes

Name Comments
TfrmFindingTemplates -

Procedures

Name Owner Declaration Scope Comments
btnCancelClick TfrmFindingTemplates procedure btnCancelClick(Sender: TObject); Public/Published -
Find TfrmFindingTemplates procedure Find; Private Private declarations
FormShow TfrmFindingTemplates procedure FormShow(Sender: TObject); Public/Published -

Functions

Name Owner Declaration Scope Comments
FindTemplate - function FindTemplate(SearchString: string; Tree: TTreeView; OwningForm: TForm; StartNode: TTreeNode; IsNext, IgnoreCase, WholeWords: boolean): TTreeNode; Interfaced -

Constants

Name Declaration Scope Comments
DELAY_TIME 1000 Global
Search for 1 second before showing dialog - note some loading may have already
 taken place before this call.
MESSAGE_TIME 0 Global -


Module Source

1     unit fFindingTemplates;
2     
3     interface
4     
5     uses
6       Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7       Dialogs, StdCtrls, ComCtrls, DateUtils;
8     
9     type
10      TfrmFindingTemplates = class(TForm)
11        animSearch: TAnimate;
12        lblFind: TLabel;
13        Label2: TLabel;
14        btnCancel: TButton;
15        procedure FormShow(Sender: TObject);
16        procedure btnCancelClick(Sender: TObject);
17      private
18        FCanceled: boolean;
19        FSearchString: string;
20        FStarted: boolean;
21        FTree: TTreeView;
22        FStartNode: TTreeNode;
23        FCurrentNode :TTreeNode;
24        FIgnoreCase: boolean;
25        FWholeWords: boolean;
26        FFoundNode: TTreeNode;
27        FIsNext: boolean;
28        { Private declarations }
29        procedure Find;
30      public
31      end;
32    
33    function FindTemplate(SearchString: string; Tree: TTreeView; OwningForm: TForm;
34                          StartNode: TTreeNode; IsNext, IgnoreCase, WholeWords: boolean): TTreeNode;
35    
36    implementation
37    
38    uses uTemplates, VAUtils, ORNet;
39    
40    {$R *.dfm}
41    
42    const
43     // search for 1 second before showing dialog - note some loading may have already
44     // taken place before this call.
45      DELAY_TIME = 1000;
46      MESSAGE_TIME = 0;
47    
48    function FindTemplate(SearchString: string; Tree: TTreeView; OwningForm: TForm;
49                          StartNode: TTreeNode; IsNext, IgnoreCase, WholeWords: boolean): TTreeNode;
50    var
51      frmFindingTemplates: TfrmFindingTemplates;
52      msg: string;
53    begin
54      Result := nil;
55      if (SearchString = '') or (not assigned(Tree)) then exit;
56      frmFindingTemplates := TfrmFindingTemplates.Create(OwningForm);
57      try
58        with frmFindingTemplates do
59        begin
60          FSearchString := SearchString;
61          FTree := Tree;
62          FStartNode := StartNode;
63          FIgnoreCase := IgnoreCase;
64          FWholeWords := WholeWords;
65          FIsNext := IsNext;
66          if IsNext then
67            lblFind.Caption := 'Finding Next Template';
68          Find;
69          if assigned(FFoundNode) then
70          begin
71            Result := FFoundNode;
72          end
73          else
74          begin
75            if FCanceled then
76              msg := 'Find Canceled.'
77            else
78              msg := 'Text not Found.';
79            ShowMsg('Search Completed.  ' + msg,'Find Template Failed', smiError);
80          end;
81        end;
82      finally
83        frmFindingTemplates.Free;
84      end;
85    end;
86    
87    procedure TfrmFindingTemplates.btnCancelClick(Sender: TObject);
88    begin
89      FCanceled := True;
90      btnCancel.Enabled := False;
91    end;
92    
93    procedure TfrmFindingTemplates.Find;
94    var
95      Found : boolean;
96      Text: String;
97      WindowList: Pointer;
98      NeedToShow: boolean;
99      StartTime: TDateTime;
100   begin
101     WindowList := nil;
102     NeedToShow := True;
103     StartTime := Now;
104     try
105       if(FIgnoreCase) then
106         FSearchString := UpperCase(FSearchString);
107       FCurrentNode := FStartNode;
108       Found := False;
109       if FIsNext and assigned(FCurrentNode) then
110       begin
111         FCurrentNode.Expand(False);
112         FCurrentNode := FCurrentNode.GetNext;
113       end;
114       while (not FCanceled) and (assigned(FCurrentNode) and (not Found)) do
115       begin
116         Application.ProcessMessages;
117         if not FCanceled then
118         begin
119           Text := FCurrentNode.Text;
120           if(FIgnoreCase) then
121             Text := UpperCase(Text);
122           Found := SearchMatch(FSearchString, Text, FWholeWords);
123           if(not Found) then
124           begin
125             FCurrentNode.Expand(False);
126             FCurrentNode := FCurrentNode.GetNext;
127           end;
128           if (not Found) and assigned(FCurrentNode) and NeedToShow then
129           begin
130             if MilliSecondsBetween(Now, StartTime) > DELAY_TIME then
131             begin
132               WindowList := DisableTaskWindows(0);
133               AppStartedCursorForm := Self;
134               Show;
135               NeedToShow := False;
136             end;
137           end;
138         end;
139       end;
140       if Found then
141         FFoundNode := FCurrentNode;
142     finally
143       if not NeedToShow then
144       begin
145         AppStartedCursorForm := nil;
146         EnableTaskWindows(WindowList);
147         Hide;
148       end;
149     end;
150   end;
151   
152   procedure TfrmFindingTemplates.FormShow(Sender: TObject);
153   begin
154     if not FStarted then
155     begin
156       FStarted := True;
157       animSearch.Active := True;
158     end;
159   end;
160   
161   end.

Module Calls (2 levels)


fFindingTemplates
 └uTemplates
   ├uTIU
   ├uDCSumm
   ├rTemplates
   ├uCore
   ├dShared
   ├fTemplateDialog
   ├uTemplateFields
   ├fTemplateImport
   ├rCore
   ├uConst
   ├uEventHooks
   ├fReminderDialog
   └rODBase

Module Called-By (2 levels)


   fFindingTemplates
          fDrawers┤ 
          fFrame┤ │ 
         dShared┤ │ 
      uReminders┤ │ 
          fNotes┤ │ 
       fConsults┤ │ 
         fDCSumm┤ │ 
 fTemplateEditor┤ │ 
        fSurgery┘ │ 
fTemplateEditor...┘