Ignore:
Timestamp:
Aug 12, 2009, 7:14:16 PM (15 years ago)
Author:
Kevin Toppenberg
Message:

TMG Ver 1.1 Added HTML Support, better demographics editing

Location:
cprs/branches/tmg-cprs/CPRS-Chart
Files:
112 added
35 edited

Legend:

Unmodified
Added
Removed
  • cprs/branches/tmg-cprs/CPRS-Chart/Accessibility_TLB.pas

    r496 r541  
    1313
    1414// PASTLWTR : 1.2
    15 // File generated on 2/18/2009 8:07:41 AM from Type Library described below.
     15// File generated on 8/12/2009 5:54:14 PM from Type Library described below.
    1616
    1717// ************************************************************************  //
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart.cfg

    r494 r541  
    3737-LE"c:\program files\borland\delphi7\Projects\Bpl"
    3838-LN"c:\program files\borland\delphi7\Projects\Bpl"
    39 -U"c:\program files\borland\delphi7\Lib\Debug;c:\program files\borland\delphi7\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff"
    40 -O"c:\program files\borland\delphi7\Lib\Debug;c:\program files\borland\delphi7\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff"
    41 -I"c:\program files\borland\delphi7\Lib\Debug;c:\program files\borland\delphi7\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff"
    42 -R"c:\program files\borland\delphi7\Lib\Debug;c:\program files\borland\delphi7\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff"
     39-U"c:\program files\borland\delphi7\Lib\Debug;c:\program files\borland\delphi7\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\EmbeddedED;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit"
     40-O"c:\program files\borland\delphi7\Lib\Debug;c:\program files\borland\delphi7\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\EmbeddedED;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit"
     41-I"c:\program files\borland\delphi7\Lib\Debug;c:\program files\borland\delphi7\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\EmbeddedED;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit"
     42-R"c:\program files\borland\delphi7\Lib\Debug;c:\program files\borland\delphi7\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\EmbeddedED;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit"
    4343-DMSWINDOWS
    4444-w-UNSAFE_TYPE
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart.dof

    r496 r541  
    9595PackageDLLOutputDir=
    9696PackageDCPOutputDir=
    97 SearchPath=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff
     97SearchPath=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\EmbeddedED;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit
    9898Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;dbrtl;adortl;vcldb;qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;teeqr;ibxpress;visualclx;visualdbclx;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;dbexpress;dbxcds;indy;dclOffice2k;soaprtl;XWB_R60
    9999Conditionals=MSWINDOWS
     
    101101UsePackages=0
    102102[Parameters]
    103 RunParams=s=s1.sequencemanagers.com p=53104 CCOW=disable
     103RunParams=CCOW=disable
    104104HostApplication=
    105105Launcher=
     
    116116MinorVer=0
    117117Release=26
    118 Build=76
     118Build=69
    119119Debug=0
    120120PreRelease=0
     
    127127CompanyName=Department of Veterans Affairs
    128128FileDescription=7/20/08
    129 FileVersion=1.0.26.76
    130 InternalName=1.0.26.76 server required
     129FileVersion=1.0.26.69
     130InternalName=1.0.26.69 server required
    131131LegalCopyright=Unauthorized access or misuse of this system and/or its data is a federal crime. Use of all data shall be in accordance with VA policy on security and privacy.
    132132LegalTrademarks=
     
    134134ProductName=Computerized Patient Record System
    135135ProductVersion=1.0.0.0
    136 Comments=1.0.26.76
     136Comments=1.0.26.69
    137137[HistoryLists\hlDebugSourcePath]
    138138Count=1
     
    146146Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
    147147[HistoryLists\hlSearchPath]
    148 Count=15
    149 Item0=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff
    150 Item1=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics
    151 Item2=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source
    152 Item3=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01
    153 Item4=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib
    154 Item5=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages
    155 Item6=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU
    156 Item7=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu
    157 Item8=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Chart;C:\Vista\cprs\OR_3_270V26_69\CPRS-Chart\DCU;$(DELPHI)\Source\ToolsAPI
    158 Item9=$(DELPHI)\Lib\Debug;C:\Program Files\Borland\Delphi7\Source\Rtl\Sys;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Chart;C:\Vista\cprs\OR_3_270V26_69\CPRS-Chart\DCU;$(DELPHI)\Source\ToolsAPI
    159 Item10=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Chart;C:\Vista\cprs\OR_3_270V26_69\CPRS-Chart\DCU;$(DELPHI)\Source\ToolsAPI;C:\Program Files\Borland\Delphi7\Source\Rtl\Sys
    160 Item11=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Chart;C:\Vista\cprs\OR_3_270V26_69\CPRS-Chart\DCU
    161 Item12=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib
    162 Item13=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib
    163 Item14=C:\Vista\cprs\OR_3_215V26_69\CPRS-Lib
     148Count=18
     149Item0=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\EmbeddedED;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit
     150Item1=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra;P:\vista\tmg-cprs\TMG_Extra\HTMLEdit\EmbeddedED;P:\vista\tmg-cprs\TMG_Extra\HTMLEdit
     151Item2=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra
     152Item3=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics;P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\SkinStuff
     153Item4=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source;P:\Vista\tmg-cprs\TPNGGraphics
     154Item5=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01;P:\Vista\tmg-cprs\TntWare\Delphi Unicode Controls\Source
     155Item6=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib;P:\Vista\tmg-cprs\dklang-package-3.01
     156Item7=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages;P:\Vista\tmg-cprs\CPRS-Lib
     157Item8=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU;P:\Vista\tmg-cprs\Packages
     158Item9=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu;P:\Vista\tmg-cprs\CPRS-Lib\DCU
     159Item10=$(DELPHI)\Lib\Debug;$(DELPHI)\Source\ToolsAPI;P:\Vista\tmg-cprs\CPRS-Chart;P:\Vista\tmg-cprs\CPRS-Chart\dcu
     160Item11=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Chart;C:\Vista\cprs\OR_3_270V26_69\CPRS-Chart\DCU;$(DELPHI)\Source\ToolsAPI
     161Item12=$(DELPHI)\Lib\Debug;C:\Program Files\Borland\Delphi7\Source\Rtl\Sys;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Chart;C:\Vista\cprs\OR_3_270V26_69\CPRS-Chart\DCU;$(DELPHI)\Source\ToolsAPI
     162Item13=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Chart;C:\Vista\cprs\OR_3_270V26_69\CPRS-Chart\DCU;$(DELPHI)\Source\ToolsAPI;C:\Program Files\Borland\Delphi7\Source\Rtl\Sys
     163Item14=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Chart;C:\Vista\cprs\OR_3_270V26_69\CPRS-Chart\DCU
     164Item15=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib;C:\Program Files\Borland\Delphi7\Projects\OR_SRC_CREATION FILE 12 06 06 OR_3_270\OR_SRC_CREATION\CPRS-Lib
     165Item16=$(DELPHI)\Lib\Debug;C:\Vista\cprs\OR_3_270V26_69\CPRS-Lib
     166Item17=C:\Vista\cprs\OR_3_215V26_69\CPRS-Lib
    164167[HistoryLists\hlUnitOutputDirectory]
    165168Count=3
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart.dpr

    r490 r541  
    314314  fPtAdd in 'TMG_Extra\fPtAdd.pas' {frmPtAdd},
    315315  fPtDemoEdit in 'TMG_Extra\fPtDemoEdit.pas' {frmPtDemoEdit},
    316   fWebTab in 'TMG_Extra\fWebTab.pas' {frmWebTab};
     316  fWebTab in 'TMG_Extra\fWebTab.pas' {frmWebTab},
     317  SubfilesU in 'TMG_Extra\SubfilesU.pas',
     318  SelDateTimeU in 'TMG_Extra\SelDateTimeU.pas' {SelDateTimeForm},
     319  SetSelU in 'TMG_Extra\SetSelU.pas' {SetSelForm},
     320  FMErrorU in 'TMG_Extra\FMErrorU.pas' {FMErrorForm},
     321  LookupU in 'TMG_Extra\LookupU.pas' {FieldLookupForm},
     322  PostU in 'TMG_Extra\PostU.pas' {PostForm},
     323  EditTextU in 'TMG_Extra\EditTextU.pas' {EditTextForm};
    317324
    318325{$R *.TLB}
     
    339346    Application.CreateForm(TdmodShared, dmodShared);
    340347    Application.CreateForm(TfrmFrame, frmFrame);
    341     Application.CreateForm(TfrmSearchStop, frmSearchStop);
    342     Application.CreateForm(TfrmImages, frmImages);
    343     Application.CreateForm(TUploadForm, UploadForm);
    344     Application.CreateForm(TUploadProgressForm, UploadProgressForm);
    345     Application.CreateForm(TfrmODAllergy, frmODAllergy);
    346     Application.CreateForm(TfrmDeviceSelect, frmDeviceSelect);
    347     Application.CreateForm(TfrmPtAdd, frmPtAdd);
    348     Application.CreateForm(TfrmPtDemoEdit, frmPtDemoEdit);
    349     //kt Application.CreateForm(TfrmWebTab, frmWebTab);
    350     frmSplash.Free;                               // close & free splash screen
    351     Application.Run;
    352   end;
     348    if frmframe.TMGAbort = False then begin   //kt 3/25/09
     349      Application.CreateForm(TfrmSearchStop, frmSearchStop);
     350      Application.CreateForm(TfrmImages, frmImages);
     351      Application.CreateForm(TUploadForm, UploadForm);
     352      Application.CreateForm(TUploadProgressForm, UploadProgressForm);
     353      Application.CreateForm(TfrmODAllergy, frmODAllergy);
     354      Application.CreateForm(TfrmDeviceSelect, frmDeviceSelect);
     355      Application.CreateForm(TfrmPtAdd, frmPtAdd);
     356      Application.CreateForm(TfrmPtDemoEdit, frmPtDemoEdit);
     357      Application.CreateForm(TSelDateTimeForm, SelDateTimeForm);
     358      Application.CreateForm(TSetSelForm, SetSelForm);
     359      Application.CreateForm(TFMErrorForm, FMErrorForm);
     360      Application.CreateForm(TFieldLookupForm, FieldLookupForm);
     361      Application.CreateForm(TPostForm, PostForm);
     362      Application.CreateForm(TEditTextForm, EditTextForm);
     363      //kt Application.CreateForm(TfrmWebTab, frmWebTab);
     364      frmSplash.Free;                               // close & free splash screen
     365      Application.Run;
     366    end;
     367  end;   //kt 3/25/09
    353368end.
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart.drc

    r496 r541  
    99*/
    1010
    11 #define IdResourceStrings_RSStackESHUTDOWN 64928
    12 #define IdResourceStrings_RSStackETOOMANYREFS 64929
    13 #define IdResourceStrings_RSStackETIMEDOUT 64930
    14 #define IdResourceStrings_RSStackECONNREFUSED 64931
    15 #define IdResourceStrings_RSStackELOOP 64932
    16 #define IdResourceStrings_RSStackENAMETOOLONG 64933
    17 #define IdResourceStrings_RSStackEHOSTDOWN 64934
    18 #define IdResourceStrings_RSStackEHOSTUNREACH 64935
    19 #define IdResourceStrings_RSStackENOTEMPTY 64936
    20 #define IdResourceStrings_RSStackHOST_NOT_FOUND 64937
    21 #define JConsts_sChangeJPGSize 64938
    22 #define JConsts_sJPEGError 64939
    23 #define JConsts_sJPEGImageFile 64940
    24 #define IdResourceStrings_RSStackENOPROTOOPT 64944
    25 #define IdResourceStrings_RSStackEPROTONOSUPPORT 64945
    26 #define IdResourceStrings_RSStackESOCKTNOSUPPORT 64946
    27 #define IdResourceStrings_RSStackEOPNOTSUPP 64947
    28 #define IdResourceStrings_RSStackEPFNOSUPPORT 64948
    29 #define IdResourceStrings_RSStackEAFNOSUPPORT 64949
    30 #define IdResourceStrings_RSStackEADDRINUSE 64950
    31 #define IdResourceStrings_RSStackEADDRNOTAVAIL 64951
    32 #define IdResourceStrings_RSStackENETDOWN 64952
    33 #define IdResourceStrings_RSStackENETUNREACH 64953
    34 #define IdResourceStrings_RSStackENETRESET 64954
    35 #define IdResourceStrings_RSStackECONNABORTED 64955
    36 #define IdResourceStrings_RSStackECONNRESET 64956
    37 #define IdResourceStrings_RSStackENOBUFS 64957
    38 #define IdResourceStrings_RSStackEISCONN 64958
    39 #define IdResourceStrings_RSStackENOTCONN 64959
    40 #define IdResourceStrings_RSWS2LoadError 64960
    41 #define IdResourceStrings_RSInvalidServiceName 64961
    42 #define IdResourceStrings_RSStackError 64962
    43 #define IdResourceStrings_RSStackEINTR 64963
    44 #define IdResourceStrings_RSStackEBADF 64964
    45 #define IdResourceStrings_RSStackEACCES 64965
    46 #define IdResourceStrings_RSStackEFAULT 64966
    47 #define IdResourceStrings_RSStackEINVAL 64967
    48 #define IdResourceStrings_RSStackEMFILE 64968
    49 #define IdResourceStrings_RSStackEWOULDBLOCK 64969
    50 #define IdResourceStrings_RSStackEINPROGRESS 64970
    51 #define IdResourceStrings_RSStackEALREADY 64971
    52 #define IdResourceStrings_RSStackENOTSOCK 64972
    53 #define IdResourceStrings_RSStackEDESTADDRREQ 64973
    54 #define IdResourceStrings_RSStackEMSGSIZE 64974
    55 #define IdResourceStrings_RSStackEPROTOTYPE 64975
    56 #define pnglang_EPNGInvalidFileHeaderText 64976
    57 #define pnglang_EPNGIHDRNotFirstText 64977
    58 #define pnglang_EPNGSizeExceedsText 64978
    59 #define pnglang_EPNGUnknownPalEntryText 64979
    60 #define pnglang_EPNGUnknownCriticalChunkText 64980
    61 #define pnglang_EPNGUnknownCompressionText 64981
    62 #define pnglang_EPNGUnknownInterlaceText 64982
    63 #define pnglang_EPNGCannotAssignChunkText 64983
    64 #define pnglang_EPNGUnexpectedEndText 64984
    65 #define pnglang_EPNGNoImageDataText 64985
    66 #define pnglang_EPNGCannotChangeSizeText 64986
    67 #define pnglang_EPNGOutMemoryText 64987
    68 #define pnglang_EPNGHeaderNotPresentText 64988
    69 #define IdResourceStrings_RSWinsockInitializationError 64989
    70 #define IdResourceStrings_RSSetSizeExceeded 64990
    71 #define IdResourceStrings_RSWS2CallError 64991
    72 #define VDBConsts_SFirstRecord 64992
    73 #define VDBConsts_SPriorRecord 64993
    74 #define VDBConsts_SNextRecord 64994
    75 #define VDBConsts_SLastRecord 64995
    76 #define VDBConsts_SInsertRecord 64996
    77 #define VDBConsts_SDeleteRecord 64997
    78 #define VDBConsts_SEditRecord 64998
    79 #define VDBConsts_SPostEdit 64999
    80 #define VDBConsts_SCancelEdit 65000
    81 #define VDBConsts_SRefreshRecord 65001
    82 #define VDBConsts_SRemoteLogin 65002
    83 #define pnglang_EPngInvalidCRCText 65003
    84 #define pnglang_EPNGInvalidIHDRText 65004
    85 #define pnglang_EPNGMissingMultipleIDATText 65005
    86 #define pnglang_EPNGZLIBErrorText 65006
    87 #define pnglang_EPNGInvalidPaletteText 65007
    88 #define QConsts_SUnknownImageFormat 65008
    89 #define QConsts_SUnableToWrite 65009
    90 #define QConsts_SUndo 65010
    91 #define QConsts_SRedo 65011
    92 #define QConsts_SLine 65012
    93 #define QConsts_SCut 65013
    94 #define QConsts_SCopy 65014
    95 #define QConsts_SPaste 65015
    96 #define QConsts_SClear 65016
    97 #define QConsts_SSelectAll 65017
    98 #define QConsts_SNoAppInLib 65018
    99 #define QConsts_SDuplicateApp 65019
    100 #define DBConsts_SBcdOverflow 65020
    101 #define DBConsts_SInvalidBcdValue 65021
    102 #define DBConsts_SCouldNotParseTimeStamp 65022
    103 #define DBConsts_SInvalidSqlTimeStamp 65023
    104 #define QConsts_SMsgDlgInformation 65024
    105 #define QConsts_SMsgDlgConfirm 65025
    106 #define QConsts_SUnnamed 65026
    107 #define QConsts_SName 65027
    108 #define QConsts_SSize 65028
    109 #define QConsts_SType 65029
    110 #define QConsts_SDate 65030
    111 #define QConsts_SAttributes 65031
    112 #define QConsts_SDuplicateMenus 65032
    113 #define QConsts_SImageIndexError 65033
    114 #define QConsts_SInvalidImageDimensions 65034
    115 #define QConsts_SInvalidImageDimension 65035
    116 #define QConsts_SInvalidMimeSourceStream 65036
    117 #define QConsts_SMimeNotSupportedForIcon 65037
    118 #define QConsts_SOpen 65038
    119 #define QConsts_SSave 65039
    120 #define QConsts_SNotAnMDIForm 65040
    121 #define QConsts_SMDIChildNotVisible 65041
    122 #define QConsts_SControlParentSetToSelf 65042
    123 #define QConsts_SOKButton 65043
    124 #define QConsts_SCancelButton 65044
    125 #define QConsts_SYesButton 65045
    126 #define QConsts_SNoButton 65046
    127 #define QConsts_SHelpButton 65047
    128 #define QConsts_SCloseButton 65048
    129 #define QConsts_SIgnoreButton 65049
    130 #define QConsts_SRetryButton 65050
    131 #define QConsts_SAbortButton 65051
    132 #define QConsts_SAllButton 65052
    133 #define QConsts_SCannotDragForm 65053
    134 #define QConsts_SMsgDlgWarning 65054
    135 #define QConsts_SMsgDlgError 65055
    136 #define QConsts_SmkcAlt 65056
    137 #define QConsts_SInvalidPixelFormat 65057
    138 #define QConsts_SNoCanvasHandle 65058
    139 #define QConsts_SInvalidCanvasState 65059
    140 #define QConsts_SInvalidImageSize 65060
    141 #define QConsts_SInvalidColorDepth 65061
    142 #define QConsts_SCannotFocus 65062
    143 #define QConsts_SParentRequired 65063
    144 #define QConsts_SVisibleChanged 65064
    145 #define QConsts_SMenuIndexError 65065
    146 #define QConsts_SMenuReinserted 65066
    147 #define QConsts_SNoMenuRecursion 65067
    148 #define QConsts_SMenuNotFound 65068
    149 #define QConsts_SMenuSetFormError 65069
    150 #define QConsts_SGroupIndexTooLow 65070
    151 #define QConsts_SNoMDIForm 65071
    152 #define QConsts_SmkcEsc 65072
    153 #define QConsts_SmkcReturn 65073
    154 #define QConsts_SmkcEnter 65074
    155 #define QConsts_SmkcSpace 65075
    156 #define QConsts_SmkcPgUp 65076
    157 #define QConsts_SmkcPgDn 65077
    158 #define QConsts_SmkcEnd 65078
    159 #define QConsts_SmkcHome 65079
    160 #define QConsts_SmkcLeft 65080
    161 #define QConsts_SmkcUp 65081
    162 #define QConsts_SmkcRight 65082
    163 #define QConsts_SmkcDown 65083
    164 #define QConsts_SmkcIns 65084
    165 #define QConsts_SmkcDel 65085
    166 #define QConsts_SmkcShift 65086
    167 #define QConsts_SmkcCtrl 65087
    168 #define DKLang_SDKLangErrMsg_ErrorLoadingTran 65088
    169 #define DKLang_SDKLangErrMsg_InvalidConstName 65089
    170 #define DKLang_SDKLangErrMsg_DuplicateConstName 65090
    171 #define DKLang_SDKLangErrMsg_ConstantNotFound 65091
    172 #define DKLang_SDKLangErrMsg_LangManagerCalledAtDT 65092
    173 #define DKLang_SDKLangErrMsg_StreamVersionTooHigh 65093
    174 #define OleConst_SCannotActivate 65094
    175 #define OleConst_SNoWindowHandle 65095
    176 #define OleConst_SInvalidLicense 65096
    177 #define OleConst_SNotLicensed 65097
    178 #define OleConst_sNoRunningObject 65098
    179 #define QConsts_SInvalidCreateWidget 65099
    180 #define QConsts_STooManyMessageBoxButtons 65100
    181 #define QConsts_SmkcBkSp 65101
    182 #define QConsts_SmkcTab 65102
    183 #define QConsts_SmkcBackTab 65103
    184 #define TeeConst_TeeMsg_CheckPointerSize 65104
    185 #define TeeConst_TeeMsg_FunctionPeriod 65105
    186 #define TeeConst_TeeMsg_PieOther 65106
    187 #define TeeConst_TeeMsg_ValuesX 65107
    188 #define TeeConst_TeeMsg_ValuesY 65108
    189 #define TeeConst_TeeMsg_ValuesPie 65109
    190 #define TeeConst_TeeMsg_ValuesBar 65110
    191 #define TeeConst_TeeMsg_ValuesAngle 65111
    192 #define TeeConst_TeeMsg_ValuesGanttStart 65112
    193 #define TeeConst_TeeMsg_ValuesGanttEnd 65113
    194 #define TeeConst_TeeMsg_ValuesGanttNextTask 65114
    195 #define TeeConst_TeeMsg_ValuesArrowEndX 65115
    196 #define TeeConst_TeeMsg_ValuesArrowEndY 65116
    197 #define TntSystem_SBufferOverflow 65117
    198 #define TntSystem_SInvalidUTF7 65118
    199 #define DKLang_SDKLangErrMsg_DuplicatePropValueID 65119
    200 #define TeeConst_TeeMsg_GanttSample4 65120
    201 #define TeeConst_TeeMsg_GanttSample5 65121
    202 #define TeeConst_TeeMsg_GanttSample6 65122
    203 #define TeeConst_TeeMsg_GanttSample7 65123
    204 #define TeeConst_TeeMsg_GanttSample8 65124
    205 #define TeeConst_TeeMsg_GanttSample9 65125
    206 #define TeeConst_TeeMsg_GanttSample10 65126
    207 #define TeeConst_TeeMsg_DefaultFontSize 65127
    208 #define TeeConst_TeeMsg_FunctionAdd 65128
    209 #define TeeConst_TeeMsg_FunctionSubtract 65129
    210 #define TeeConst_TeeMsg_FunctionMultiply 65130
    211 #define TeeConst_TeeMsg_FunctionDivide 65131
    212 #define TeeConst_TeeMsg_FunctionHigh 65132
    213 #define TeeConst_TeeMsg_FunctionLow 65133
    214 #define TeeConst_TeeMsg_FunctionAverage 65134
    215 #define TeeConst_TeeMsg_DefaultFontName 65135
    216 #define TeeConst_TeeMsg_Rotation 65136
    217 #define TeeConst_TeeMsg_PieSample1 65137
    218 #define TeeConst_TeeMsg_PieSample2 65138
    219 #define TeeConst_TeeMsg_PieSample3 65139
    220 #define TeeConst_TeeMsg_PieSample4 65140
    221 #define TeeConst_TeeMsg_PieSample5 65141
    222 #define TeeConst_TeeMsg_PieSample6 65142
    223 #define TeeConst_TeeMsg_PieSample7 65143
    224 #define TeeConst_TeeMsg_PieSample8 65144
    225 #define TeeConst_TeeMsg_GalleryStandard 65145
    226 #define TeeConst_TeeMsg_GalleryFunctions 65146
    227 #define TeeConst_TeeMsg_GalleryArrow 65147
    228 #define TeeConst_TeeMsg_GalleryGantt 65148
    229 #define TeeConst_TeeMsg_GanttSample1 65149
    230 #define TeeConst_TeeMsg_GanttSample2 65150
    231 #define TeeConst_TeeMsg_GanttSample3 65151
    232 #define TeeConst_TeeMsg_3dPercent 65152
    233 #define TeeConst_TeeMsg_CircularSeries 65153
    234 #define TeeConst_TeeMsg_BarWidthPercent 65154
    235 #define TeeConst_TeeMsg_BarOffsetPercent 65155
    236 #define TeeConst_TeeMsg_DefaultPercentOf 65156
    237 #define TeeConst_TeeMsg_DefPercentFormat 65157
    238 #define TeeConst_TeeMsg_DefValueFormat 65158
    239 #define TeeConst_TeeMsg_AxisTitle 65159
    240 #define TeeConst_TeeMsg_AxisLabels 65160
    241 #define TeeConst_TeeMsg_GalleryLine 65161
    242 #define TeeConst_TeeMsg_GalleryPoint 65162
    243 #define TeeConst_TeeMsg_GalleryArea 65163
    244 #define TeeConst_TeeMsg_GalleryBar 65164
    245 #define TeeConst_TeeMsg_GalleryHorizBar 65165
    246 #define TeeConst_TeeMsg_GalleryPie 65166
    247 #define TeeConst_TeeMsg_GalleryFastLine 65167
    248 #define ComConst_SNoCloseActiveServer2 65168
    249 #define TeeConst_TeeMsg_LegendTopPos 65169
    250 #define TeeConst_TeeMsg_LegendFirstValue 65170
    251 #define TeeConst_TeeMsg_LegendColorWidth 65171
    252 #define TeeConst_TeeMsg_SeriesSetDataSource 65172
    253 #define TeeConst_TeeMsg_SeriesInvDataSource 65173
    254 #define TeeConst_TeeMsg_FillSample 65174
    255 #define TeeConst_TeeMsg_Angle 65175
    256 #define TeeConst_TeeMsg_AxisLogDateTime 65176
    257 #define TeeConst_TeeMsg_AxisLogNotPositive 65177
    258 #define TeeConst_TeeMsg_AxisLabelSep 65178
    259 #define TeeConst_TeeMsg_AxisIncrementNeg 65179
    260 #define TeeConst_TeeMsg_AxisMinMax 65180
    261 #define TeeConst_TeeMsg_AxisMaxMin 65181
    262 #define TeeConst_TeeMsg_AxisLogBase 65182
    263 #define TeeConst_TeeMsg_MaxPointsPerPage 65183
    264 #define ComStrs_sFailSetCalMinMaxRange 65184
    265 #define ComStrs_sFailsetCalSelRange 65185
    266 #define WinHelpViewer_hNoKeyword 65186
    267 #define ComConst_SCreateRegKeyError 65187
    268 #define ComConst_SOleError 65188
    269 #define ComConst_SObjectFactoryMissing 65189
    270 #define ComConst_STypeInfoMissing 65190
    271 #define ComConst_SBadTypeInfo 65191
    272 #define ComConst_SDispIntfMissing 65192
    273 #define ComConst_SNoMethod 65193
    274 #define ComConst_SVarNotObject 65194
    275 #define ComConst_STooManyParams 65195
    276 #define ComConst_SDCOMNotInstalled 65196
    277 #define ComConst_SDAXError 65197
    278 #define ComConst_SAutomationWarning 65198
    279 #define ComConst_SNoCloseActiveServer1 65199
    280 #define ComStrs_sTabFailSet 65200
    281 #define ComStrs_sTabFailSetObject 65201
    282 #define ComStrs_sTabMustBeMultiLine 65202
    283 #define ComStrs_sInvalidIndex 65203
    284 #define ComStrs_sInsertError 65204
    285 #define ComStrs_sInvalidOwner 65205
    286 #define ComStrs_sRichEditInsertError 65206
    287 #define ComStrs_sRichEditLoadFail 65207
    288 #define ComStrs_sRichEditSaveFail 65208
    289 #define ComStrs_sUDAssociated 65209
    290 #define ComStrs_sPageIndexError 65210
    291 #define ComStrs_sInvalidComCtl32 65211
    292 #define ComStrs_sDateTimeMax 65212
    293 #define ComStrs_sDateTimeMin 65213
    294 #define ComStrs_sFailSetCalDateTime 65214
    295 #define ComStrs_sFailSetCalMaxSelRange 65215
    296 #define ExtCtrls_clNameInactiveCaptionText 65216
    297 #define ExtCtrls_clNameInfoBk 65217
    298 #define ExtCtrls_clNameInfoText 65218
    299 #define ExtCtrls_clNameMenu 65219
    300 #define ExtCtrls_clNameMenuText 65220
    301 #define ExtCtrls_clNameNone 65221
    302 #define ExtCtrls_clNameScrollBar 65222
    303 #define ExtCtrls_clName3DDkShadow 65223
    304 #define ExtCtrls_clName3DLight 65224
    305 #define ExtCtrls_clNameWindow 65225
    306 #define ExtCtrls_clNameWindowFrame 65226
    307 #define ExtCtrls_clNameWindowText 65227
    308 #define ComStrs_sTabFailClear 65228
    309 #define ComStrs_sTabFailDelete 65229
    310 #define ComStrs_sTabFailRetrieve 65230
    311 #define ComStrs_sTabFailGetObject 65231
    312 #define ExtCtrls_clNameMedGray 65232
    313 #define ExtCtrls_clNameActiveBorder 65233
    314 #define ExtCtrls_clNameActiveCaption 65234
    315 #define ExtCtrls_clNameAppWorkSpace 65235
    316 #define ExtCtrls_clNameBackground 65236
    317 #define ExtCtrls_clNameBtnFace 65237
    318 #define ExtCtrls_clNameBtnHighlight 65238
    319 #define ExtCtrls_clNameBtnShadow 65239
    320 #define ExtCtrls_clNameBtnText 65240
    321 #define ExtCtrls_clNameCaptionText 65241
    322 #define ExtCtrls_clNameDefault 65242
    323 #define ExtCtrls_clNameGrayText 65243
    324 #define ExtCtrls_clNameHighlight 65244
    325 #define ExtCtrls_clNameHighlightText 65245
    326 #define ExtCtrls_clNameInactiveBorder 65246
    327 #define ExtCtrls_clNameInactiveCaption 65247
    328 #define ExtCtrls_clNameOlive 65248
    329 #define ExtCtrls_clNameNavy 65249
    330 #define ExtCtrls_clNamePurple 65250
    331 #define ExtCtrls_clNameTeal 65251
    332 #define ExtCtrls_clNameGray 65252
    333 #define ExtCtrls_clNameSilver 65253
    334 #define ExtCtrls_clNameRed 65254
    335 #define ExtCtrls_clNameLime 65255
    336 #define ExtCtrls_clNameYellow 65256
    337 #define ExtCtrls_clNameBlue 65257
    338 #define ExtCtrls_clNameFuchsia 65258
    339 #define ExtCtrls_clNameAqua 65259
    340 #define ExtCtrls_clNameWhite 65260
    341 #define ExtCtrls_clNameMoneyGreen 65261
    342 #define ExtCtrls_clNameSkyBlue 65262
    343 #define ExtCtrls_clNameCream 65263
    344 #define Consts_SDockedCtlNeedsName 65264
    345 #define Consts_SDockTreeRemoveError 65265
    346 #define Consts_SDockZoneNotFound 65266
    347 #define Consts_SDockZoneHasNoCtl 65267
    348 #define Consts_SMultiSelectRequired 65268
    349 #define Consts_SSeparator 65269
    350 #define Consts_SErrorSettingCount 65270
    351 #define Consts_SListBoxMustBeVirtual 65271
    352 #define Consts_SNoGetItemEventHandler 65272
    353 #define HelpIntfs_hNoTableOfContents 65273
    354 #define HelpIntfs_hNothingFound 65274
    355 #define HelpIntfs_hNoContext 65275
    356 #define HelpIntfs_hNoTopics 65276
    357 #define ExtCtrls_clNameBlack 65277
    358 #define ExtCtrls_clNameMaroon 65278
    359 #define ExtCtrls_clNameGreen 65279
    360 #define Consts_SmkcAlt 65280
    361 #define Consts_srNone 65281
    362 #define Consts_SOutOfRange 65282
    363 #define Consts_sAllFilter 65283
    364 #define Consts_SInsertLineError 65284
    365 #define Consts_SInvalidClipFmt 65285
    366 #define Consts_SIconToClipboard 65286
    367 #define Consts_SCannotOpenClipboard 65287
    368 #define Consts_SInvalidMemoSize 65288
    369 #define Consts_SInvalidPrinterOp 65289
    370 #define Consts_SNoDefaultPrinter 65290
    371 #define Consts_SDuplicateMenus 65291
    372 #define Consts_SPictureLabel 65292
    373 #define Consts_SPictureDesc 65293
    374 #define Consts_SPreviewLabel 65294
    375 #define Consts_SCannotOpenAVI 65295
    376 #define Consts_SmkcTab 65296
    377 #define Consts_SmkcEsc 65297
    378 #define Consts_SmkcEnter 65298
    379 #define Consts_SmkcSpace 65299
    380 #define Consts_SmkcPgUp 65300
    381 #define Consts_SmkcPgDn 65301
    382 #define Consts_SmkcEnd 65302
    383 #define Consts_SmkcHome 65303
    384 #define Consts_SmkcLeft 65304
    385 #define Consts_SmkcUp 65305
    386 #define Consts_SmkcRight 65306
    387 #define Consts_SmkcDown 65307
    388 #define Consts_SmkcIns 65308
    389 #define Consts_SmkcDel 65309
    390 #define Consts_SmkcShift 65310
    391 #define Consts_SmkcCtrl 65311
    392 #define Consts_SMsgDlgWarning 65312
    393 #define Consts_SMsgDlgError 65313
    394 #define Consts_SMsgDlgInformation 65314
    395 #define Consts_SMsgDlgConfirm 65315
    396 #define Consts_SMsgDlgYes 65316
    397 #define Consts_SMsgDlgNo 65317
    398 #define Consts_SMsgDlgOK 65318
    399 #define Consts_SMsgDlgCancel 65319
    400 #define Consts_SMsgDlgHelp 65320
    401 #define Consts_SMsgDlgAbort 65321
    402 #define Consts_SMsgDlgRetry 65322
    403 #define Consts_SMsgDlgIgnore 65323
    404 #define Consts_SMsgDlgAll 65324
    405 #define Consts_SMsgDlgNoToAll 65325
    406 #define Consts_SMsgDlgYesToAll 65326
    407 #define Consts_SmkcBkSp 65327
    408 #define Consts_SCancelButton 65328
    409 #define Consts_SYesButton 65329
    410 #define Consts_SNoButton 65330
    411 #define Consts_SHelpButton 65331
    412 #define Consts_SCloseButton 65332
    413 #define Consts_SIgnoreButton 65333
    414 #define Consts_SRetryButton 65334
    415 #define Consts_SAbortButton 65335
    416 #define Consts_SAllButton 65336
    417 #define Consts_SCannotDragForm 65337
    418 #define Consts_SVMetafiles 65338
    419 #define Consts_SVEnhMetafiles 65339
    420 #define Consts_SVIcons 65340
    421 #define Consts_SVBitmaps 65341
    422 #define Consts_SMaskErr 65342
    423 #define Consts_SMaskEditErr 65343
     11#define pnglang_EPNGIHDRNotFirstText 64928
     12#define pnglang_EPNGSizeExceedsText 64929
     13#define pnglang_EPNGUnknownPalEntryText 64930
     14#define pnglang_EPNGUnknownCriticalChunkText 64931
     15#define pnglang_EPNGUnknownCompressionText 64932
     16#define pnglang_EPNGUnknownInterlaceText 64933
     17#define pnglang_EPNGCannotAssignChunkText 64934
     18#define pnglang_EPNGUnexpectedEndText 64935
     19#define pnglang_EPNGNoImageDataText 64936
     20#define pnglang_EPNGCannotChangeSizeText 64937
     21#define pnglang_EPNGOutMemoryText 64938
     22#define pnglang_EPNGHeaderNotPresentText 64939
     23#define JConsts_sChangeJPGSize 64940
     24#define JConsts_sJPEGError 64941
     25#define JConsts_sJPEGImageFile 64942
     26#define IdResourceStrings_RSStackESHUTDOWN 64944
     27#define IdResourceStrings_RSStackETOOMANYREFS 64945
     28#define IdResourceStrings_RSStackETIMEDOUT 64946
     29#define IdResourceStrings_RSStackECONNREFUSED 64947
     30#define IdResourceStrings_RSStackELOOP 64948
     31#define IdResourceStrings_RSStackENAMETOOLONG 64949
     32#define IdResourceStrings_RSStackEHOSTDOWN 64950
     33#define IdResourceStrings_RSStackEHOSTUNREACH 64951
     34#define IdResourceStrings_RSStackENOTEMPTY 64952
     35#define IdResourceStrings_RSStackHOST_NOT_FOUND 64953
     36#define pnglang_EPngInvalidCRCText 64954
     37#define pnglang_EPNGInvalidIHDRText 64955
     38#define pnglang_EPNGMissingMultipleIDATText 64956
     39#define pnglang_EPNGZLIBErrorText 64957
     40#define pnglang_EPNGInvalidPaletteText 64958
     41#define pnglang_EPNGInvalidFileHeaderText 64959
     42#define IdResourceStrings_RSStackENOPROTOOPT 64960
     43#define IdResourceStrings_RSStackEPROTONOSUPPORT 64961
     44#define IdResourceStrings_RSStackESOCKTNOSUPPORT 64962
     45#define IdResourceStrings_RSStackEOPNOTSUPP 64963
     46#define IdResourceStrings_RSStackEPFNOSUPPORT 64964
     47#define IdResourceStrings_RSStackEAFNOSUPPORT 64965
     48#define IdResourceStrings_RSStackEADDRINUSE 64966
     49#define IdResourceStrings_RSStackEADDRNOTAVAIL 64967
     50#define IdResourceStrings_RSStackENETDOWN 64968
     51#define IdResourceStrings_RSStackENETUNREACH 64969
     52#define IdResourceStrings_RSStackENETRESET 64970
     53#define IdResourceStrings_RSStackECONNABORTED 64971
     54#define IdResourceStrings_RSStackECONNRESET 64972
     55#define IdResourceStrings_RSStackENOBUFS 64973
     56#define IdResourceStrings_RSStackEISCONN 64974
     57#define IdResourceStrings_RSStackENOTCONN 64975
     58#define IdResourceStrings_RSWS2LoadError 64976
     59#define IdResourceStrings_RSInvalidServiceName 64977
     60#define IdResourceStrings_RSStackError 64978
     61#define IdResourceStrings_RSStackEINTR 64979
     62#define IdResourceStrings_RSStackEBADF 64980
     63#define IdResourceStrings_RSStackEACCES 64981
     64#define IdResourceStrings_RSStackEFAULT 64982
     65#define IdResourceStrings_RSStackEINVAL 64983
     66#define IdResourceStrings_RSStackEMFILE 64984
     67#define IdResourceStrings_RSStackEWOULDBLOCK 64985
     68#define IdResourceStrings_RSStackEINPROGRESS 64986
     69#define IdResourceStrings_RSStackEALREADY 64987
     70#define IdResourceStrings_RSStackENOTSOCK 64988
     71#define IdResourceStrings_RSStackEDESTADDRREQ 64989
     72#define IdResourceStrings_RSStackEMSGSIZE 64990
     73#define IdResourceStrings_RSStackEPROTOTYPE 64991
     74#define DBConsts_SCouldNotParseTimeStamp 64992
     75#define DBConsts_SInvalidSqlTimeStamp 64993
     76#define VDBConsts_SFirstRecord 64994
     77#define VDBConsts_SPriorRecord 64995
     78#define VDBConsts_SNextRecord 64996
     79#define VDBConsts_SLastRecord 64997
     80#define VDBConsts_SInsertRecord 64998
     81#define VDBConsts_SDeleteRecord 64999
     82#define VDBConsts_SEditRecord 65000
     83#define VDBConsts_SPostEdit 65001
     84#define VDBConsts_SCancelEdit 65002
     85#define VDBConsts_SRefreshRecord 65003
     86#define VDBConsts_SRemoteLogin 65004
     87#define IdResourceStrings_RSWinsockInitializationError 65005
     88#define IdResourceStrings_RSSetSizeExceeded 65006
     89#define IdResourceStrings_RSWS2CallError 65007
     90#define QConsts_SOpen 65008
     91#define QConsts_SSave 65009
     92#define QConsts_SUnknownImageFormat 65010
     93#define QConsts_SUnableToWrite 65011
     94#define QConsts_SUndo 65012
     95#define QConsts_SRedo 65013
     96#define QConsts_SLine 65014
     97#define QConsts_SCut 65015
     98#define QConsts_SCopy 65016
     99#define QConsts_SPaste 65017
     100#define QConsts_SClear 65018
     101#define QConsts_SSelectAll 65019
     102#define QConsts_SNoAppInLib 65020
     103#define QConsts_SDuplicateApp 65021
     104#define DBConsts_SBcdOverflow 65022
     105#define DBConsts_SInvalidBcdValue 65023
     106#define QConsts_SMsgDlgWarning 65024
     107#define QConsts_SMsgDlgError 65025
     108#define QConsts_SMsgDlgInformation 65026
     109#define QConsts_SMsgDlgConfirm 65027
     110#define QConsts_SUnnamed 65028
     111#define QConsts_SName 65029
     112#define QConsts_SSize 65030
     113#define QConsts_SType 65031
     114#define QConsts_SDate 65032
     115#define QConsts_SAttributes 65033
     116#define QConsts_SDuplicateMenus 65034
     117#define QConsts_SImageIndexError 65035
     118#define QConsts_SInvalidImageDimensions 65036
     119#define QConsts_SInvalidImageDimension 65037
     120#define QConsts_SInvalidMimeSourceStream 65038
     121#define QConsts_SMimeNotSupportedForIcon 65039
     122#define QConsts_SGroupIndexTooLow 65040
     123#define QConsts_SNoMDIForm 65041
     124#define QConsts_SNotAnMDIForm 65042
     125#define QConsts_SMDIChildNotVisible 65043
     126#define QConsts_SControlParentSetToSelf 65044
     127#define QConsts_SOKButton 65045
     128#define QConsts_SCancelButton 65046
     129#define QConsts_SYesButton 65047
     130#define QConsts_SNoButton 65048
     131#define QConsts_SHelpButton 65049
     132#define QConsts_SCloseButton 65050
     133#define QConsts_SIgnoreButton 65051
     134#define QConsts_SRetryButton 65052
     135#define QConsts_SAbortButton 65053
     136#define QConsts_SAllButton 65054
     137#define QConsts_SCannotDragForm 65055
     138#define QConsts_SmkcShift 65056
     139#define QConsts_SmkcCtrl 65057
     140#define QConsts_SmkcAlt 65058
     141#define QConsts_SInvalidPixelFormat 65059
     142#define QConsts_SNoCanvasHandle 65060
     143#define QConsts_SInvalidCanvasState 65061
     144#define QConsts_SInvalidImageSize 65062
     145#define QConsts_SInvalidColorDepth 65063
     146#define QConsts_SCannotFocus 65064
     147#define QConsts_SParentRequired 65065
     148#define QConsts_SVisibleChanged 65066
     149#define QConsts_SMenuIndexError 65067
     150#define QConsts_SMenuReinserted 65068
     151#define QConsts_SNoMenuRecursion 65069
     152#define QConsts_SMenuNotFound 65070
     153#define QConsts_SMenuSetFormError 65071
     154#define QConsts_SmkcTab 65072
     155#define QConsts_SmkcBackTab 65073
     156#define QConsts_SmkcEsc 65074
     157#define QConsts_SmkcReturn 65075
     158#define QConsts_SmkcEnter 65076
     159#define QConsts_SmkcSpace 65077
     160#define QConsts_SmkcPgUp 65078
     161#define QConsts_SmkcPgDn 65079
     162#define QConsts_SmkcEnd 65080
     163#define QConsts_SmkcHome 65081
     164#define QConsts_SmkcLeft 65082
     165#define QConsts_SmkcUp 65083
     166#define QConsts_SmkcRight 65084
     167#define QConsts_SmkcDown 65085
     168#define QConsts_SmkcIns 65086
     169#define QConsts_SmkcDel 65087
     170#define TntSystem_SInvalidUTF7 65088
     171#define DKLang_SDKLangErrMsg_DuplicatePropValueID 65089
     172#define DKLang_SDKLangErrMsg_ErrorLoadingTran 65090
     173#define DKLang_SDKLangErrMsg_InvalidConstName 65091
     174#define DKLang_SDKLangErrMsg_DuplicateConstName 65092
     175#define DKLang_SDKLangErrMsg_ConstantNotFound 65093
     176#define DKLang_SDKLangErrMsg_LangManagerCalledAtDT 65094
     177#define DKLang_SDKLangErrMsg_StreamVersionTooHigh 65095
     178#define OleConst_SCannotActivate 65096
     179#define OleConst_SNoWindowHandle 65097
     180#define OleConst_SInvalidLicense 65098
     181#define OleConst_SNotLicensed 65099
     182#define OleConst_sNoRunningObject 65100
     183#define QConsts_SInvalidCreateWidget 65101
     184#define QConsts_STooManyMessageBoxButtons 65102
     185#define QConsts_SmkcBkSp 65103
     186#define TeeConst_TeeMsg_FunctionAverage 65104
     187#define TeeConst_TeeMsg_DefaultFontName 65105
     188#define TeeConst_TeeMsg_CheckPointerSize 65106
     189#define TeeConst_TeeMsg_FunctionPeriod 65107
     190#define TeeConst_TeeMsg_PieOther 65108
     191#define TeeConst_TeeMsg_ValuesX 65109
     192#define TeeConst_TeeMsg_ValuesY 65110
     193#define TeeConst_TeeMsg_ValuesPie 65111
     194#define TeeConst_TeeMsg_ValuesBar 65112
     195#define TeeConst_TeeMsg_ValuesAngle 65113
     196#define TeeConst_TeeMsg_ValuesGanttStart 65114
     197#define TeeConst_TeeMsg_ValuesGanttEnd 65115
     198#define TeeConst_TeeMsg_ValuesGanttNextTask 65116
     199#define TeeConst_TeeMsg_ValuesArrowEndX 65117
     200#define TeeConst_TeeMsg_ValuesArrowEndY 65118
     201#define TntSystem_SBufferOverflow 65119
     202#define TeeConst_TeeMsg_GanttSample2 65120
     203#define TeeConst_TeeMsg_GanttSample3 65121
     204#define TeeConst_TeeMsg_GanttSample4 65122
     205#define TeeConst_TeeMsg_GanttSample5 65123
     206#define TeeConst_TeeMsg_GanttSample6 65124
     207#define TeeConst_TeeMsg_GanttSample7 65125
     208#define TeeConst_TeeMsg_GanttSample8 65126
     209#define TeeConst_TeeMsg_GanttSample9 65127
     210#define TeeConst_TeeMsg_GanttSample10 65128
     211#define TeeConst_TeeMsg_DefaultFontSize 65129
     212#define TeeConst_TeeMsg_FunctionAdd 65130
     213#define TeeConst_TeeMsg_FunctionSubtract 65131
     214#define TeeConst_TeeMsg_FunctionMultiply 65132
     215#define TeeConst_TeeMsg_FunctionDivide 65133
     216#define TeeConst_TeeMsg_FunctionHigh 65134
     217#define TeeConst_TeeMsg_FunctionLow 65135
     218#define TeeConst_TeeMsg_GalleryPie 65136
     219#define TeeConst_TeeMsg_GalleryFastLine 65137
     220#define TeeConst_TeeMsg_Rotation 65138
     221#define TeeConst_TeeMsg_PieSample1 65139
     222#define TeeConst_TeeMsg_PieSample2 65140
     223#define TeeConst_TeeMsg_PieSample3 65141
     224#define TeeConst_TeeMsg_PieSample4 65142
     225#define TeeConst_TeeMsg_PieSample5 65143
     226#define TeeConst_TeeMsg_PieSample6 65144
     227#define TeeConst_TeeMsg_PieSample7 65145
     228#define TeeConst_TeeMsg_PieSample8 65146
     229#define TeeConst_TeeMsg_GalleryStandard 65147
     230#define TeeConst_TeeMsg_GalleryFunctions 65148
     231#define TeeConst_TeeMsg_GalleryArrow 65149
     232#define TeeConst_TeeMsg_GalleryGantt 65150
     233#define TeeConst_TeeMsg_GanttSample1 65151
     234#define TeeConst_TeeMsg_AxisLogBase 65152
     235#define TeeConst_TeeMsg_MaxPointsPerPage 65153
     236#define TeeConst_TeeMsg_3dPercent 65154
     237#define TeeConst_TeeMsg_CircularSeries 65155
     238#define TeeConst_TeeMsg_BarWidthPercent 65156
     239#define TeeConst_TeeMsg_BarOffsetPercent 65157
     240#define TeeConst_TeeMsg_DefaultPercentOf 65158
     241#define TeeConst_TeeMsg_DefPercentFormat 65159
     242#define TeeConst_TeeMsg_DefValueFormat 65160
     243#define TeeConst_TeeMsg_AxisTitle 65161
     244#define TeeConst_TeeMsg_AxisLabels 65162
     245#define TeeConst_TeeMsg_GalleryLine 65163
     246#define TeeConst_TeeMsg_GalleryPoint 65164
     247#define TeeConst_TeeMsg_GalleryArea 65165
     248#define TeeConst_TeeMsg_GalleryBar 65166
     249#define TeeConst_TeeMsg_GalleryHorizBar 65167
     250#define ComConst_SAutomationWarning 65168
     251#define ComConst_SNoCloseActiveServer1 65169
     252#define ComConst_SNoCloseActiveServer2 65170
     253#define TeeConst_TeeMsg_LegendTopPos 65171
     254#define TeeConst_TeeMsg_LegendFirstValue 65172
     255#define TeeConst_TeeMsg_LegendColorWidth 65173
     256#define TeeConst_TeeMsg_SeriesSetDataSource 65174
     257#define TeeConst_TeeMsg_SeriesInvDataSource 65175
     258#define TeeConst_TeeMsg_FillSample 65176
     259#define TeeConst_TeeMsg_Angle 65177
     260#define TeeConst_TeeMsg_AxisLogDateTime 65178
     261#define TeeConst_TeeMsg_AxisLogNotPositive 65179
     262#define TeeConst_TeeMsg_AxisLabelSep 65180
     263#define TeeConst_TeeMsg_AxisIncrementNeg 65181
     264#define TeeConst_TeeMsg_AxisMinMax 65182
     265#define TeeConst_TeeMsg_AxisMaxMin 65183
     266#define ComStrs_sFailSetCalDateTime 65184
     267#define ComStrs_sFailSetCalMaxSelRange 65185
     268#define ComStrs_sFailSetCalMinMaxRange 65186
     269#define ComStrs_sFailsetCalSelRange 65187
     270#define WinHelpViewer_hNoKeyword 65188
     271#define ComConst_SCreateRegKeyError 65189
     272#define ComConst_SOleError 65190
     273#define ComConst_SObjectFactoryMissing 65191
     274#define ComConst_STypeInfoMissing 65192
     275#define ComConst_SBadTypeInfo 65193
     276#define ComConst_SDispIntfMissing 65194
     277#define ComConst_SNoMethod 65195
     278#define ComConst_SVarNotObject 65196
     279#define ComConst_STooManyParams 65197
     280#define ComConst_SDCOMNotInstalled 65198
     281#define ComConst_SDAXError 65199
     282#define ComStrs_sTabFailGetObject 65200
     283#define ComStrs_sTabFailSet 65201
     284#define ComStrs_sTabFailSetObject 65202
     285#define ComStrs_sTabMustBeMultiLine 65203
     286#define ComStrs_sInvalidIndex 65204
     287#define ComStrs_sInsertError 65205
     288#define ComStrs_sInvalidOwner 65206
     289#define ComStrs_sRichEditInsertError 65207
     290#define ComStrs_sRichEditLoadFail 65208
     291#define ComStrs_sRichEditSaveFail 65209
     292#define ComStrs_sUDAssociated 65210
     293#define ComStrs_sPageIndexError 65211
     294#define ComStrs_sInvalidComCtl32 65212
     295#define ComStrs_sDateTimeMax 65213
     296#define ComStrs_sDateTimeMin 65214
     297#define ComStrs_sNeedAllowNone 65215
     298#define ExtCtrls_clNameInactiveCaption 65216
     299#define ExtCtrls_clNameInactiveCaptionText 65217
     300#define ExtCtrls_clNameInfoBk 65218
     301#define ExtCtrls_clNameInfoText 65219
     302#define ExtCtrls_clNameMenu 65220
     303#define ExtCtrls_clNameMenuText 65221
     304#define ExtCtrls_clNameNone 65222
     305#define ExtCtrls_clNameScrollBar 65223
     306#define ExtCtrls_clName3DDkShadow 65224
     307#define ExtCtrls_clName3DLight 65225
     308#define ExtCtrls_clNameWindow 65226
     309#define ExtCtrls_clNameWindowFrame 65227
     310#define ExtCtrls_clNameWindowText 65228
     311#define ComStrs_sTabFailClear 65229
     312#define ComStrs_sTabFailDelete 65230
     313#define ComStrs_sTabFailRetrieve 65231
     314#define ExtCtrls_clNameCream 65232
     315#define ExtCtrls_clNameMedGray 65233
     316#define ExtCtrls_clNameActiveBorder 65234
     317#define ExtCtrls_clNameActiveCaption 65235
     318#define ExtCtrls_clNameAppWorkSpace 65236
     319#define ExtCtrls_clNameBackground 65237
     320#define ExtCtrls_clNameBtnFace 65238
     321#define ExtCtrls_clNameBtnHighlight 65239
     322#define ExtCtrls_clNameBtnShadow 65240
     323#define ExtCtrls_clNameBtnText 65241
     324#define ExtCtrls_clNameCaptionText 65242
     325#define ExtCtrls_clNameDefault 65243
     326#define ExtCtrls_clNameGrayText 65244
     327#define ExtCtrls_clNameHighlight 65245
     328#define ExtCtrls_clNameHighlightText 65246
     329#define ExtCtrls_clNameInactiveBorder 65247
     330#define ExtCtrls_clNameGreen 65248
     331#define ExtCtrls_clNameOlive 65249
     332#define ExtCtrls_clNameNavy 65250
     333#define ExtCtrls_clNamePurple 65251
     334#define ExtCtrls_clNameTeal 65252
     335#define ExtCtrls_clNameGray 65253
     336#define ExtCtrls_clNameSilver 65254
     337#define ExtCtrls_clNameRed 65255
     338#define ExtCtrls_clNameLime 65256
     339#define ExtCtrls_clNameYellow 65257
     340#define ExtCtrls_clNameBlue 65258
     341#define ExtCtrls_clNameFuchsia 65259
     342#define ExtCtrls_clNameAqua 65260
     343#define ExtCtrls_clNameWhite 65261
     344#define ExtCtrls_clNameMoneyGreen 65262
     345#define ExtCtrls_clNameSkyBlue 65263
     346#define Consts_SCannotOpenAVI 65264
     347#define Consts_SDockedCtlNeedsName 65265
     348#define Consts_SDockTreeRemoveError 65266
     349#define Consts_SDockZoneNotFound 65267
     350#define Consts_SDockZoneHasNoCtl 65268
     351#define Consts_SMultiSelectRequired 65269
     352#define Consts_SSeparator 65270
     353#define Consts_SErrorSettingCount 65271
     354#define Consts_SListBoxMustBeVirtual 65272
     355#define Consts_SNoGetItemEventHandler 65273
     356#define HelpIntfs_hNoTableOfContents 65274
     357#define HelpIntfs_hNothingFound 65275
     358#define HelpIntfs_hNoContext 65276
     359#define HelpIntfs_hNoTopics 65277
     360#define ExtCtrls_clNameBlack 65278
     361#define ExtCtrls_clNameMaroon 65279
     362#define Consts_SmkcCtrl 65280
     363#define Consts_SmkcAlt 65281
     364#define Consts_srNone 65282
     365#define Consts_SOutOfRange 65283
     366#define Consts_sAllFilter 65284
     367#define Consts_SInsertLineError 65285
     368#define Consts_SInvalidClipFmt 65286
     369#define Consts_SIconToClipboard 65287
     370#define Consts_SCannotOpenClipboard 65288
     371#define Consts_SInvalidMemoSize 65289
     372#define Consts_SInvalidPrinterOp 65290
     373#define Consts_SNoDefaultPrinter 65291
     374#define Consts_SDuplicateMenus 65292
     375#define Consts_SPictureLabel 65293
     376#define Consts_SPictureDesc 65294
     377#define Consts_SPreviewLabel 65295
     378#define Consts_SmkcBkSp 65296
     379#define Consts_SmkcTab 65297
     380#define Consts_SmkcEsc 65298
     381#define Consts_SmkcEnter 65299
     382#define Consts_SmkcSpace 65300
     383#define Consts_SmkcPgUp 65301
     384#define Consts_SmkcPgDn 65302
     385#define Consts_SmkcEnd 65303
     386#define Consts_SmkcHome 65304
     387#define Consts_SmkcLeft 65305
     388#define Consts_SmkcUp 65306
     389#define Consts_SmkcRight 65307
     390#define Consts_SmkcDown 65308
     391#define Consts_SmkcIns 65309
     392#define Consts_SmkcDel 65310
     393#define Consts_SmkcShift 65311
     394#define Consts_SMaskEditErr 65312
     395#define Consts_SMsgDlgWarning 65313
     396#define Consts_SMsgDlgError 65314
     397#define Consts_SMsgDlgInformation 65315
     398#define Consts_SMsgDlgConfirm 65316
     399#define Consts_SMsgDlgYes 65317
     400#define Consts_SMsgDlgNo 65318
     401#define Consts_SMsgDlgOK 65319
     402#define Consts_SMsgDlgCancel 65320
     403#define Consts_SMsgDlgHelp 65321
     404#define Consts_SMsgDlgAbort 65322
     405#define Consts_SMsgDlgRetry 65323
     406#define Consts_SMsgDlgIgnore 65324
     407#define Consts_SMsgDlgAll 65325
     408#define Consts_SMsgDlgNoToAll 65326
     409#define Consts_SMsgDlgYesToAll 65327
     410#define Consts_SOKButton 65328
     411#define Consts_SCancelButton 65329
     412#define Consts_SYesButton 65330
     413#define Consts_SNoButton 65331
     414#define Consts_SHelpButton 65332
     415#define Consts_SCloseButton 65333
     416#define Consts_SIgnoreButton 65334
     417#define Consts_SRetryButton 65335
     418#define Consts_SAbortButton 65336
     419#define Consts_SAllButton 65337
     420#define Consts_SCannotDragForm 65338
     421#define Consts_SVMetafiles 65339
     422#define Consts_SVEnhMetafiles 65340
     423#define Consts_SVIcons 65341
     424#define Consts_SVBitmaps 65342
     425#define Consts_SMaskErr 65343
    424426#define Consts_SVisibleChanged 65344
    425427#define Consts_SCannotShowModal 65345
     
    432434#define Consts_SNotPrinting 65352
    433435#define Consts_SPrinting 65353
    434 #define Consts_SInvalidPrinter 65354
    435 #define Consts_SDeviceOnPort 65355
    436 #define Consts_SGroupIndexTooLow 65356
    437 #define Consts_SNoMDIForm 65357
    438 #define Consts_SControlParentSetToSelf 65358
    439 #define Consts_SOKButton 65359
     436#define Consts_SPrinterIndexError 65354
     437#define Consts_SInvalidPrinter 65355
     438#define Consts_SDeviceOnPort 65356
     439#define Consts_SGroupIndexTooLow 65357
     440#define Consts_SNoMDIForm 65358
     441#define Consts_SControlParentSetToSelf 65359
    440442#define Consts_SUnknownExtension 65360
    441443#define Consts_SUnknownClipboardFormat 65361
     
    616618STRINGTABLE
    617619BEGIN
     620        pnglang_EPNGIHDRNotFirstText,   "This \"Portable Network Graphics\" image is not supported or it might be invalid.\r\n(IHDR chunk is not the first)"
     621        pnglang_EPNGSizeExceedsText,    "This \"Portable Network Graphics\" image is not supported because either it's width or height exceeds the maximum size, which is 65535 pixels length."
     622        pnglang_EPNGUnknownPalEntryText,        "There is no such palette entry."
     623        pnglang_EPNGUnknownCriticalChunkText,   "This \"Portable Network Graphics\" image contains an unknown critical part which could not be decoded."
     624        pnglang_EPNGUnknownCompressionText,     "This \"Portable Network Graphics\" image is encoded with an unknown compression scheme which could not be decoded."
     625        pnglang_EPNGUnknownInterlaceText,       "This \"Portable Network Graphics\" image uses an unknown interlace scheme which could not be decoded."
     626        pnglang_EPNGCannotAssignChunkText,      "The chunks must be compatible to be assigned."
     627        pnglang_EPNGUnexpectedEndText,  "This \"Portable Network Graphics\" image is invalid because the decoder found an unexpected end of the file."
     628        pnglang_EPNGNoImageDataText,    "This \"Portable Network Graphics\" image contains no data."
     629        pnglang_EPNGCannotChangeSizeText,       "The \"Portable Network Graphics\" image can not be resize by changing width and height properties. Try assigning the image from a bitmap."
     630        pnglang_EPNGOutMemoryText,      "Some operation could not be performed because the system is out of resources. Close some windows and try again."
     631        pnglang_EPNGHeaderNotPresentText,       "This operation is not valid because the current image contains no valid header."
     632        JConsts_sChangeJPGSize, "Cannot change the size of a JPEG image"
     633        JConsts_sJPEGError,     "JPEG error #%d"
     634        JConsts_sJPEGImageFile, "JPEG Image File"
    618635        IdResourceStrings_RSStackESHUTDOWN,     "Cannot send or receive after socket is closed."
    619636        IdResourceStrings_RSStackETOOMANYREFS,  "Too many references, cannot splice."
     
    626643        IdResourceStrings_RSStackENOTEMPTY,     "Directory not empty"
    627644        IdResourceStrings_RSStackHOST_NOT_FOUND,        "Host not found."
    628         JConsts_sChangeJPGSize, "Cannot change the size of a JPEG image"
    629         JConsts_sJPEGError,     "JPEG error #%d"
    630         JConsts_sJPEGImageFile, "JPEG Image File"
     645        pnglang_EPngInvalidCRCText,     "This \"Portable Network Graphics\" image is not valid because it contains invalid pieces of data (crc error)"
     646        pnglang_EPNGInvalidIHDRText,    "The \"Portable Network Graphics\" image could not be loaded because one of its main piece of data (ihdr) might be corrupted"
     647        pnglang_EPNGMissingMultipleIDATText,    "This \"Portable Network Graphics\" image is invalid because it has missing image parts."
     648        pnglang_EPNGZLIBErrorText,      "Could not decompress the image because it contains invalid compressed data.\r\n Description: "
     649        pnglang_EPNGInvalidPaletteText, "The \"Portable Network Graphics\" image contains an invalid palette."
     650        pnglang_EPNGInvalidFileHeaderText,      "The file being readed is not a valid \"Portable Network Graphics\" image because it contains an invalid header. This file may be corruped, try obtaining it again."
    631651        IdResourceStrings_RSStackENOPROTOOPT,   "Bad protocol option."
    632652        IdResourceStrings_RSStackEPROTONOSUPPORT,       "Protocol not supported."
     
    661681        IdResourceStrings_RSStackEMSGSIZE,      "Message too long."
    662682        IdResourceStrings_RSStackEPROTOTYPE,    "Protocol wrong type for socket."
    663         pnglang_EPNGInvalidFileHeaderText,      "The file being readed is not a valid \"Portable Network Graphics\" image because it contains an invalid header. This file may be corruped, try obtaining it again."
    664         pnglang_EPNGIHDRNotFirstText,   "This \"Portable Network Graphics\" image is not supported or it might be invalid.\r\n(IHDR chunk is not the first)"
    665         pnglang_EPNGSizeExceedsText,    "This \"Portable Network Graphics\" image is not supported because either it's width or height exceeds the maximum size, which is 65535 pixels length."
    666         pnglang_EPNGUnknownPalEntryText,        "There is no such palette entry."
    667         pnglang_EPNGUnknownCriticalChunkText,   "This \"Portable Network Graphics\" image contains an unknown critical part which could not be decoded."
    668         pnglang_EPNGUnknownCompressionText,     "This \"Portable Network Graphics\" image is encoded with an unknown compression scheme which could not be decoded."
    669         pnglang_EPNGUnknownInterlaceText,       "This \"Portable Network Graphics\" image uses an unknown interlace scheme which could not be decoded."
    670         pnglang_EPNGCannotAssignChunkText,      "The chunks must be compatible to be assigned."
    671         pnglang_EPNGUnexpectedEndText,  "This \"Portable Network Graphics\" image is invalid because the decoder found an unexpected end of the file."
    672         pnglang_EPNGNoImageDataText,    "This \"Portable Network Graphics\" image contains no data."
    673         pnglang_EPNGCannotChangeSizeText,       "The \"Portable Network Graphics\" image can not be resize by changing width and height properties. Try assigning the image from a bitmap."
    674         pnglang_EPNGOutMemoryText,      "Some operation could not be performed because the system is out of resources. Close some windows and try again."
    675         pnglang_EPNGHeaderNotPresentText,       "This operation is not valid because the current image contains no valid header."
    676         IdResourceStrings_RSWinsockInitializationError, "Winsock Initialization Error."
    677         IdResourceStrings_RSSetSizeExceeded,    "Set Size Exceeded."
    678         IdResourceStrings_RSWS2CallError,       "Error on call Winsock2 library function %s"
     683        DBConsts_SCouldNotParseTimeStamp,       "Could not parse SQL TimeStamp string"
     684        DBConsts_SInvalidSqlTimeStamp,  "Invalid SQL date/time values"
    679685        VDBConsts_SFirstRecord, "First record"
    680686        VDBConsts_SPriorRecord, "Prior record"
     
    688694        VDBConsts_SRefreshRecord,       "Refresh data"
    689695        VDBConsts_SRemoteLogin, "Remote Login"
    690         pnglang_EPngInvalidCRCText,     "This \"Portable Network Graphics\" image is not valid because it contains invalid pieces of data (crc error)"
    691         pnglang_EPNGInvalidIHDRText,    "The \"Portable Network Graphics\" image could not be loaded because one of its main piece of data (ihdr) might be corrupted"
    692         pnglang_EPNGMissingMultipleIDATText,    "This \"Portable Network Graphics\" image is invalid because it has missing image parts."
    693         pnglang_EPNGZLIBErrorText,      "Could not decompress the image because it contains invalid compressed data.\r\n Description: "
    694         pnglang_EPNGInvalidPaletteText, "The \"Portable Network Graphics\" image contains an invalid palette."
     696        IdResourceStrings_RSWinsockInitializationError, "Winsock Initialization Error."
     697        IdResourceStrings_RSSetSizeExceeded,    "Set Size Exceeded."
     698        IdResourceStrings_RSWS2CallError,       "Error on call Winsock2 library function %s"
     699        QConsts_SOpen,  "Open"
     700        QConsts_SSave,  "Save"
    695701        QConsts_SUnknownImageFormat,    "Image format not recognized"
    696702        QConsts_SUnableToWrite, "Unable to write bitmap"
     
    707713        DBConsts_SBcdOverflow,  "BCD overflow"
    708714        DBConsts_SInvalidBcdValue,      "%s is not a valid BCD value"
    709         DBConsts_SCouldNotParseTimeStamp,       "Could not parse SQL TimeStamp string"
    710         DBConsts_SInvalidSqlTimeStamp,  "Invalid SQL date/time values"
     715        QConsts_SMsgDlgWarning, "Warning"
     716        QConsts_SMsgDlgError,   "Error"
    711717        QConsts_SMsgDlgInformation,     "Information"
    712718        QConsts_SMsgDlgConfirm, "Confirm"
     
    723729        QConsts_SInvalidMimeSourceStream,       "MimeSource format must have an associated data stream"
    724730        QConsts_SMimeNotSupportedForIcon,       "Mime format not supported for TIcon"
    725         QConsts_SOpen,  "Open"
    726         QConsts_SSave,  "Save"
     731        QConsts_SGroupIndexTooLow,      "GroupIndex cannot be less than a previous menu item's GroupIndex"
     732        QConsts_SNoMDIForm,     "Cannot create form. No MDI forms are currently active"
    727733        QConsts_SNotAnMDIForm,  "Invalid MDIParent for class %s"
    728734        QConsts_SMDIChildNotVisible,    "Cannot hide an MDI Child Form"
     
    739745        QConsts_SAllButton,     "&All"
    740746        QConsts_SCannotDragForm,        "Cannot drag a form"
    741         QConsts_SMsgDlgWarning, "Warning"
    742         QConsts_SMsgDlgError,   "Error"
     747        QConsts_SmkcShift,      "Shift+"
     748        QConsts_SmkcCtrl,       "Ctrl+"
    743749        QConsts_SmkcAlt,        "Alt+"
    744750        QConsts_SInvalidPixelFormat,    "Invalid pixel format"
     
    755761        QConsts_SMenuNotFound,  "Sub-menu is not in menu"
    756762        QConsts_SMenuSetFormError,      "TMenu.SetForm: argument must be TCustomForm"
    757         QConsts_SGroupIndexTooLow,      "GroupIndex cannot be less than a previous menu item's GroupIndex"
    758         QConsts_SNoMDIForm,     "Cannot create form. No MDI forms are currently active"
     763        QConsts_SmkcTab,        "Tab"
     764        QConsts_SmkcBackTab,    "BackTab"
    759765        QConsts_SmkcEsc,        "Esc"
    760766        QConsts_SmkcReturn,     "Return"
     
    771777        QConsts_SmkcIns,        "Ins"
    772778        QConsts_SmkcDel,        "Del"
    773         QConsts_SmkcShift,      "Shift+"
    774         QConsts_SmkcCtrl,       "Ctrl+"
     779        TntSystem_SInvalidUTF7, "Invalid UTF7"
     780        DKLang_SDKLangErrMsg_DuplicatePropValueID,      "Duplicate property value translation ID (%d)"
    775781        DKLang_SDKLangErrMsg_ErrorLoadingTran,  "Loading translations failed.\r\nLine %d: %s"
    776782        DKLang_SDKLangErrMsg_InvalidConstName,  "Invalid constant name (\"%s\")"
     
    787793        QConsts_STooManyMessageBoxButtons,      "Too many buttons specified for message box"
    788794        QConsts_SmkcBkSp,       "Backspace"
    789         QConsts_SmkcTab,        "Tab"
    790         QConsts_SmkcBackTab,    "BackTab"
     795        TeeConst_TeeMsg_FunctionAverage,        "Average"
     796        TeeConst_TeeMsg_DefaultFontName,        "Arial"
    791797        TeeConst_TeeMsg_CheckPointerSize,       "Pointer size must be greater than zero"
    792798        TeeConst_TeeMsg_FunctionPeriod, "Function Period should be >= 0"
     
    803809        TeeConst_TeeMsg_ValuesArrowEndY,        "EndY"
    804810        TntSystem_SBufferOverflow,      "Buffer overflow"
    805         TntSystem_SInvalidUTF7, "Invalid UTF7"
    806         DKLang_SDKLangErrMsg_DuplicatePropValueID,      "Duplicate property value translation ID (%d)"
     811        TeeConst_TeeMsg_GanttSample2,   "Prototyping"
     812        TeeConst_TeeMsg_GanttSample3,   "Development"
    807813        TeeConst_TeeMsg_GanttSample4,   "Sales"
    808814        TeeConst_TeeMsg_GanttSample5,   "Marketing"
     
    819825        TeeConst_TeeMsg_FunctionHigh,   "High"
    820826        TeeConst_TeeMsg_FunctionLow,    "Low"
    821         TeeConst_TeeMsg_FunctionAverage,        "Average"
    822         TeeConst_TeeMsg_DefaultFontName,        "Arial"
     827        TeeConst_TeeMsg_GalleryPie,     "Pie"
     828        TeeConst_TeeMsg_GalleryFastLine,        "Fast Line"
    823829        TeeConst_TeeMsg_Rotation,       "Rotation"
    824830        TeeConst_TeeMsg_PieSample1,     "Cars"
     
    835841        TeeConst_TeeMsg_GalleryGantt,   "Gantt"
    836842        TeeConst_TeeMsg_GanttSample1,   "Design"
    837         TeeConst_TeeMsg_GanttSample2,   "Prototyping"
    838         TeeConst_TeeMsg_GanttSample3,   "Development"
     843        TeeConst_TeeMsg_AxisLogBase,    "Axis Logarithmic Base should be >= 2"
     844        TeeConst_TeeMsg_MaxPointsPerPage,       "MaxPointsPerPage must be >= 0"
    839845        TeeConst_TeeMsg_3dPercent,      "3D effect percent must be between %d and %d"
    840846        TeeConst_TeeMsg_CircularSeries, "Circular Series dependences are not allowed"
     
    851857        TeeConst_TeeMsg_GalleryBar,     "Bar"
    852858        TeeConst_TeeMsg_GalleryHorizBar,        "Horiz. Bar"
    853         TeeConst_TeeMsg_GalleryPie,     "Pie"
    854         TeeConst_TeeMsg_GalleryFastLine,        "Fast Line"
     859        ComConst_SAutomationWarning,    "COM Server Warning"
     860        ComConst_SNoCloseActiveServer1, "There are still active COM objects in this application.  One or more clients may have references to these objects, so manually closing "
    855861        ComConst_SNoCloseActiveServer2, "this application may cause those client application(s) to fail.\r\n\r\nAre you sure you want to close this application?"
    856862        TeeConst_TeeMsg_LegendTopPos,   "Top Legend Position must be between 0 and 100 %"
     
    867873        TeeConst_TeeMsg_AxisMinMax,     "Axis Minimum Value must be <= Maximum"
    868874        TeeConst_TeeMsg_AxisMaxMin,     "Axis Maximum Value must be >= Minimum"
    869         TeeConst_TeeMsg_AxisLogBase,    "Axis Logarithmic Base should be >= 2"
    870         TeeConst_TeeMsg_MaxPointsPerPage,       "MaxPointsPerPage must be >= 0"
     875        ComStrs_sFailSetCalDateTime,    "Failed to set calendar date or time"
     876        ComStrs_sFailSetCalMaxSelRange, "Failed to set maximum selection range"
    871877        ComStrs_sFailSetCalMinMaxRange, "Failed to set calendar min/max range"
    872878        ComStrs_sFailsetCalSelRange,    "Failed to set calendar selected range"
     
    883889        ComConst_SDCOMNotInstalled,     "DCOM not installed"
    884890        ComConst_SDAXError,     "DAX Error"
    885         ComConst_SAutomationWarning,    "COM Server Warning"
    886         ComConst_SNoCloseActiveServer1, "There are still active COM objects in this application.  One or more clients may have references to these objects, so manually closing "
     891        ComStrs_sTabFailGetObject,      "Failed to get object at index %d"
    887892        ComStrs_sTabFailSet,    "Failed to set tab \"%s\" at index %d"
    888893        ComStrs_sTabFailSetObject,      "Failed to set object at index %d"
     
    899904        ComStrs_sDateTimeMax,   "Date exceeds maximum of %s"
    900905        ComStrs_sDateTimeMin,   "Date is less than minimum of %s"
    901         ComStrs_sFailSetCalDateTime,    "Failed to set calendar date or time"
    902         ComStrs_sFailSetCalMaxSelRange, "Failed to set maximum selection range"
     906        ComStrs_sNeedAllowNone, "You must be in ShowCheckbox mode to set to this date"
     907        ExtCtrls_clNameInactiveCaption, "Inactive Caption"
    903908        ExtCtrls_clNameInactiveCaptionText,     "Inactive Caption Text"
    904909        ExtCtrls_clNameInfoBk,  "Info Background"
     
    916921        ComStrs_sTabFailDelete, "Failed to delete tab at index %d"
    917922        ComStrs_sTabFailRetrieve,       "Failed to retrieve tab at index %d"
    918         ComStrs_sTabFailGetObject,      "Failed to get object at index %d"
     923        ExtCtrls_clNameCream,   "Cream"
    919924        ExtCtrls_clNameMedGray, "Medium Gray"
    920925        ExtCtrls_clNameActiveBorder,    "Active Border"
     
    932937        ExtCtrls_clNameHighlightText,   "Highlight Text"
    933938        ExtCtrls_clNameInactiveBorder,  "Inactive Border"
    934         ExtCtrls_clNameInactiveCaption, "Inactive Caption"
     939        ExtCtrls_clNameGreen,   "Green"
    935940        ExtCtrls_clNameOlive,   "Olive"
    936941        ExtCtrls_clNameNavy,    "Navy"
     
    948953        ExtCtrls_clNameMoneyGreen,      "Money Green"
    949954        ExtCtrls_clNameSkyBlue, "Sky Blue"
    950         ExtCtrls_clNameCream,   "Cream"
     955        Consts_SCannotOpenAVI,  "Cannot open AVI"
    951956        Consts_SDockedCtlNeedsName,     "Docked control must have a name"
    952957        Consts_SDockTreeRemoveError,    "Error removing control from dock tree"
     
    964969        ExtCtrls_clNameBlack,   "Black"
    965970        ExtCtrls_clNameMaroon,  "Maroon"
    966         ExtCtrls_clNameGreen,   "Green"
     971        Consts_SmkcCtrl,        "Ctrl+"
    967972        Consts_SmkcAlt, "Alt+"
    968973        Consts_srNone,  "(None)"
     
    980985        Consts_SPictureDesc,    " (%dx%d)"
    981986        Consts_SPreviewLabel,   "Preview"
    982         Consts_SCannotOpenAVI,  "Cannot open AVI"
     987        Consts_SmkcBkSp,        "BkSp"
    983988        Consts_SmkcTab, "Tab"
    984989        Consts_SmkcEsc, "Esc"
     
    9961001        Consts_SmkcDel, "Del"
    9971002        Consts_SmkcShift,       "Shift+"
    998         Consts_SmkcCtrl,        "Ctrl+"
     1003        Consts_SMaskEditErr,    "Invalid input value.  Use escape key to abandon changes"
    9991004        Consts_SMsgDlgWarning,  "Warning"
    10001005        Consts_SMsgDlgError,    "Error"
     
    10121017        Consts_SMsgDlgNoToAll,  "N&o to All"
    10131018        Consts_SMsgDlgYesToAll, "Yes to &All"
    1014         Consts_SmkcBkSp,        "BkSp"
     1019        Consts_SOKButton,       "OK"
    10151020        Consts_SCancelButton,   "Cancel"
    10161021        Consts_SYesButton,      "&Yes"
     
    10281033        Consts_SVBitmaps,       "Bitmaps"
    10291034        Consts_SMaskErr,        "Invalid input value"
    1030         Consts_SMaskEditErr,    "Invalid input value.  Use escape key to abandon changes"
    10311035        Consts_SVisibleChanged, "Cannot change Visible in OnShow or OnHide"
    10321036        Consts_SCannotShowModal,        "Cannot make a visible window modal"
     
    10391043        Consts_SNotPrinting,    "Printer is not currently printing"
    10401044        Consts_SPrinting,       "Printing in progress"
     1045        Consts_SPrinterIndexError,      "Printer index out of range"
    10411046        Consts_SInvalidPrinter, "Printer selected is not valid"
    10421047        Consts_SDeviceOnPort,   "%s on %s"
     
    10441049        Consts_SNoMDIForm,      "Cannot create form. No MDI forms are currently active"
    10451050        Consts_SControlParentSetToSelf, "A control cannot have itself as its parent"
    1046         Consts_SOKButton,       "OK"
    10471051        Consts_SUnknownExtension,       "Unknown picture file extension (.%s)"
    10481052        Consts_SUnknownClipboardFormat, "Unsupported clipboard format"
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart.dsk

    r498 r541  
    11[Closed Files]
    2 File_0=SourceModule,'C:\PROGRA~1\VISTA\BDK32\Source\TRPCB.pas',0,1,654,1,663,0,0
    3 File_1=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Encounter\rPCE.pas',0,1,879,15,887,0,0
    4 File_2=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Encounter\fPCEBase.pas',0,1,312,1,321,0,0
    5 File_3=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Encounter\fVisitType.pas',0,1,31,39,16,0,0
    6 File_4=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Consults\fEditProc.pas',0,1,1,1,1,0,0
    7 File_5=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Consults\fEditConsult.pas',0,1,1,1,1,0,0
    8 File_6=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Encounter\fEncVitals.pas',0,1,1,1,1,0,0
    9 File_7=SourceModule,'c:\program files\borland\delphi7\source\rtl\Win\Windows.pas',0,1,28836,1,28850,0,0
    10 File_8=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\fDCSumm.pas',0,1,932,1,954,0,0
    11 File_9=SourceModule,'c:\program files\borland\delphi7\source\rtl\Win\Messages.pas',0,1,28,1,13,0,0
     2File_0=SourceModule,'P:\vista\CPRS-1.0.23.15\CPRS-Chart\fNotes.pas',0,1,1592,1,1601,0,0
     3File_1=SourceModule,'c:\program files\borland\delphi7\source\vcl\Forms.pas',0,1,6867,19,6878,0,0
     4File_2=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\fReminderDialog.pas',0,1,1177,15,1199,0,0
     5File_3=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplates.pas',0,1,1924,78,1955,0,0
     6File_4=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas',0,1,1713,1,1713,0,0
     7File_5=SourceModule,'c:\program files\borland\delphi7\source\rtl\common\classes.pas',0,1,10956,1,10969,0,0
     8File_6=SourceModule,'c:\program files\borland\delphi7\source\vcl\grids.pas',0,1,3918,1,3930,0,0
     9File_7=SourceModule,'c:\program files\borland\delphi7\source\vcl\Controls.pas',0,1,6228,1,6245,0,0
     10File_8=SourceModule,'P:\vista\CPRS-1.0.23.15\CPRS-Chart\fFrame.pas',0,1,2774,1,2791,0,0
     11File_9=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\fSplash.pas',0,1,1,85,11,0,0
    1212
    1313[Modules]
    14 Module0=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptionsOther.pas
    15 Module1=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptions.pas
    16 Module2=P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas
    17 Module3=c:\program files\borland\delphi7\source\rtl\Sys\variants.pas
    18 Module4=P:\vista\tmg-cprs\CPRS-Chart\fPtSel.pas
    19 Module5=P:\Vista\tmg-cprs\CPRS-Chart\fFrame.pas
    20 Module6=P:\vista\tmg-cprs\CPRS-Chart\CPRSChart.dpr
    21 Count=7
     14Module0=C:\PROGRA~1\VISTA\BDK32\Source\wsockc.pas
     15Module1=P:\vista\tmg-cprs\CPRS-Chart\fPtSel.pas
     16Module2=P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\TMGHTML2.pas
     17Module3=P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\EmbeddedED\EmbeddedED.pas
     18Module4=P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas
     19Module5=c:\program files\borland\delphi7\source\rtl\Sys\system.pas
     20Module6=P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas
     21Module7=P:\vista\CPRS-1.0.23.15\CPRS-Chart\fDrawers.pas
     22Module8=P:\vista\tmg-cprs\CPRS-Chart\uReminders.pas
     23Module9=P:\vista\tmg-cprs\CPRS-Chart\fDrawers.pas
     24Module10=P:\vista\tmg-cprs\CPRS-Chart\fNotePrt.pas
     25Module11=P:\vista\tmg-cprs\CPRSChart.ini
     26Module12=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptionsOther.pas
     27Module13=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptions.pas
     28Module14=P:\vista\tmg-cprs\CPRS-Chart\rHTMLTools.pas
     29Module15=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptionsNotes.pas
     30Count=16
    2231EditWindowCount=1
    2332TypeLibWindowCount=1
    2433
     34[C:\PROGRA~1\VISTA\BDK32\Source\wsockc.pas]
     35ModuleType=SourceModule
     36FormState=0
     37FormOnTop=0
     38
     39[P:\vista\tmg-cprs\CPRS-Chart\fPtSel.pas]
     40ModuleType=SourceModule
     41FormState=0
     42FormOnTop=0
     43
     44[P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\TMGHTML2.pas]
     45ModuleType=SourceModule
     46FormState=0
     47FormOnTop=0
     48
     49[P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\EmbeddedED\EmbeddedED.pas]
     50ModuleType=SourceModule
     51FormState=0
     52FormOnTop=0
     53
     54[P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas]
     55ModuleType=SourceModule
     56FormState=0
     57FormOnTop=0
     58
     59[c:\program files\borland\delphi7\source\rtl\Sys\system.pas]
     60ModuleType=SourceModule
     61FormState=0
     62FormOnTop=0
     63
     64[P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas]
     65ModuleType=SourceModule
     66FormState=0
     67FormOnTop=0
     68
     69[P:\vista\CPRS-1.0.23.15\CPRS-Chart\fDrawers.pas]
     70ModuleType=SourceModule
     71FormState=0
     72FormOnTop=0
     73
     74[P:\vista\tmg-cprs\CPRS-Chart\uReminders.pas]
     75ModuleType=SourceModule
     76FormState=0
     77FormOnTop=0
     78
     79[P:\vista\tmg-cprs\CPRS-Chart\fDrawers.pas]
     80ModuleType=SourceModule
     81FormState=0
     82FormOnTop=0
     83
     84[P:\vista\tmg-cprs\CPRS-Chart\fNotePrt.pas]
     85ModuleType=SourceModule
     86FormState=0
     87FormOnTop=0
     88
     89[P:\vista\tmg-cprs\CPRSChart.ini]
     90ModuleType=SourceModule
     91FormState=0
     92FormOnTop=0
     93
    2594[P:\vista\tmg-cprs\CPRS-Chart\Options\fOptionsOther.pas]
    2695ModuleType=SourceModule
     
    3099[P:\vista\tmg-cprs\CPRS-Chart\Options\fOptions.pas]
    31100ModuleType=SourceModule
    32 FormState=1
    33 FormOnTop=0
    34 
    35 [P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas]
    36 ModuleType=SourceModule
    37 FormState=0
    38 FormOnTop=1
    39 
    40 [c:\program files\borland\delphi7\source\rtl\Sys\variants.pas]
    41 ModuleType=SourceModule
    42 FormState=0
    43 FormOnTop=0
    44 
    45 [P:\vista\tmg-cprs\CPRS-Chart\fPtSel.pas]
    46 ModuleType=SourceModule
    47 FormState=0
    48 FormOnTop=1
    49 
    50 [P:\Vista\tmg-cprs\CPRS-Chart\fFrame.pas]
    51 ModuleType=SourceModule
     101FormState=0
     102FormOnTop=0
     103
     104[P:\vista\tmg-cprs\CPRS-Chart\rHTMLTools.pas]
     105ModuleType=SourceModule
     106FormState=0
     107FormOnTop=0
     108
     109[P:\vista\tmg-cprs\CPRS-Chart\Options\fOptionsNotes.pas]
     110ModuleType=SourceModule
     111FormState=0
     112FormOnTop=0
     113
     114[C:\Program Files\Borland\Delphi7\Projects\ProjectGroup1.bpg]
    52115FormState=0
    53116FormOnTop=0
    54117
    55118[P:\vista\tmg-cprs\CPRS-Chart\CPRSChart.dpr]
    56 ModuleType=SourceModule
    57 FormState=0
    58 FormOnTop=0
    59 
    60 [C:\Program Files\Borland\Delphi7\Projects\ProjectGroup1.bpg]
    61119FormState=0
    62120FormOnTop=0
     
    70128FormOnTop=0
    71129
     130[P:\vista\tmg-cprs\CPRS-Chart\dShared.pas]
     131FormState=0
     132FormOnTop=0
     133
    72134[P:\vista\tmg-cprs\CPRS-Chart\fHSplit.pas]
    73135FormState=0
     
    78140FormOnTop=0
    79141
    80 [P:\vista\tmg-cprs\CPRS-Chart\Encounter\mVisitRelated.pas]
    81 FormState=0
    82 FormOnTop=0
    83 
    84 [P:\vista\tmg-cprs\CPRS-Chart\dShared.pas]
    85 FormState=0
    86 FormOnTop=0
    87 
    88142[EditWindow0]
    89 ViewCount=7
    90 CurrentView=5
     143ViewCount=16
     144CurrentView=9
    91145View0=0
    92146View1=1
     
    96150View5=5
    97151View6=6
     152View7=7
     153View8=8
     154View9=9
     155View10=10
     156View11=11
     157View12=12
     158View13=13
     159View14=14
     160View15=15
    98161CodeExplorer=CodeExplorer@EditWindow0
    99162MessageView=MessageView@EditWindow0
     
    101164Visible=1
    102165State=0
    103 Left=81
    104 Top=156
    105 Width=780
    106 Height=588
    107 MaxLeft=-1
    108 MaxTop=-1
    109 ClientWidth=772
    110 ClientHeight=554
     166Left=-729
     167Top=284
     168Width=663
     169Height=502
     170MaxLeft=-4
     171MaxTop=104
     172ClientWidth=655
     173ClientHeight=468
    111174LeftPanelSize=0
    112 LeftPanelClients=CodeExplorer@EditWindow0
    113 LeftPanelData=00000400010000000C000000436F64654578706C6F726572000000000000000000000000000000000001000000000000000000000000FFFFFFFF
     175LeftPanelClients=DockSite0
     176LeftPanelData=000004000100000009000000446F636B5369746530000000000000000000000000000000000001000000000000000000000000FFFFFFFF
    114177RightPanelSize=0
    115178BottomPanelSize=0
    116179BottomPanelClients=MessageView@EditWindow0
    117 BottomPanelData=00000400010000000B0000004D65737361676556696577040300000000000002BB000000000000000100000000000000000000000001000000000103000000000000010000000001030000000000000100000000C702000000000000010000000004030000000000000100000000040300000B0000004D65737361676556696577FFFFFFFF
     180BottomPanelData=00000400010000000B0000004D657373616765566965778F020000000000000257000000000000000100000000000000000000000001000000002303000000000000010000000023030000000000000100000000230300000000000001000000008F0200000B0000004D65737361676556696577FFFFFFFF
    118181
    119182[View0]
    120 Module=P:\vista\tmg-cprs\CPRS-Chart\CPRSChart.dpr
    121 CursorX=1
    122 CursorY=12
     183Module=P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas
     184CursorX=1
     185CursorY=4515
     186TopLine=4502
     187LeftCol=1
     188
     189[View1]
     190Module=P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas
     191CursorX=1
     192CursorY=3764
     193TopLine=3752
     194LeftCol=1
     195
     196[View2]
     197Module=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptionsNotes.pas
     198CursorX=13
     199CursorY=313
     200TopLine=311
     201LeftCol=1
     202
     203[View3]
     204Module=P:\vista\tmg-cprs\CPRS-Chart\fDrawers.pas
     205CursorX=1
     206CursorY=207
     207TopLine=189
     208LeftCol=1
     209
     210[View4]
     211Module=P:\vista\tmg-cprs\CPRS-Chart\uReminders.pas
     212CursorX=3
     213CursorY=9
    123214TopLine=1
    124215LeftCol=1
    125216
    126 [View1]
    127 Module=P:\Vista\tmg-cprs\CPRS-Chart\fFrame.pas
    128 CursorX=15
    129 CursorY=19
    130 TopLine=11
    131 LeftCol=1
    132 
    133 [View2]
     217[View5]
     218Module=c:\program files\borland\delphi7\source\rtl\Sys\system.pas
     219CursorX=1
     220CursorY=11844
     221TopLine=11822
     222LeftCol=1
     223
     224[View6]
     225Module=P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\EmbeddedED\EmbeddedED.pas
     226CursorX=1
     227CursorY=2023
     228TopLine=2010
     229LeftCol=1
     230
     231[View7]
     232Module=P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\TMGHTML2.pas
     233CursorX=1
     234CursorY=189
     235TopLine=178
     236LeftCol=1
     237
     238[View8]
    134239Module=P:\vista\tmg-cprs\CPRS-Chart\fPtSel.pas
    135 CursorX=5
    136 CursorY=39
    137 TopLine=31
    138 LeftCol=1
    139 
    140 [View3]
    141 Module=P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas
    142 CursorX=43
    143 CursorY=299
    144 TopLine=292
    145 LeftCol=1
    146 
    147 [View4]
    148 Module=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptions.pas
    149 CursorX=1
    150 CursorY=390
    151 TopLine=385
    152 LeftCol=1
    153 
    154 [View5]
    155 Module=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptionsOther.pas
    156240CursorX=1
    157241CursorY=1
     
    159243LeftCol=1
    160244
    161 [View6]
    162 Module=c:\program files\borland\delphi7\source\rtl\Sys\variants.pas
    163 CursorX=1
    164 CursorY=609
    165 TopLine=595
     245[View9]
     246Module=C:\PROGRA~1\VISTA\BDK32\Source\wsockc.pas
     247CursorX=1
     248CursorY=1479
     249TopLine=1468
     250LeftCol=1
     251
     252[View10]
     253Module=P:\vista\CPRS-1.0.23.15\CPRS-Chart\fDrawers.pas
     254CursorX=1
     255CursorY=1614
     256TopLine=1605
     257LeftCol=1
     258
     259[View11]
     260Module=P:\vista\tmg-cprs\CPRS-Chart\rHTMLTools.pas
     261CursorX=41
     262CursorY=562
     263TopLine=551
     264LeftCol=1
     265
     266[View12]
     267Module=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptions.pas
     268CursorX=1
     269CursorY=736
     270TopLine=731
     271LeftCol=1
     272
     273[View13]
     274Module=P:\vista\tmg-cprs\CPRS-Chart\Options\fOptionsOther.pas
     275CursorX=29
     276CursorY=349
     277TopLine=343
     278LeftCol=1
     279
     280[View14]
     281Module=P:\vista\tmg-cprs\CPRSChart.ini
     282CursorX=9
     283CursorY=18
     284TopLine=1
     285LeftCol=1
     286
     287[View15]
     288Module=P:\vista\tmg-cprs\CPRS-Chart\fNotePrt.pas
     289CursorX=19
     290CursorY=242
     291TopLine=231
    166292LeftCol=1
    167293
     
    181307
    182308[Watches]
    183 Count=10
    184 Watch0='Control',256,0,18,1,0,'Watches'
    185 Watch1='TabIndex',256,0,18,1,0,'Watches'
    186 Watch2='FCount',256,0,18,1,0,'Watches'
    187 Watch3='pageControl',16,0,18,1,0,'Watches'
    188 Watch4='ALabel',256,0,18,1,0,'Watches'
    189 Watch5='colorIndex',256,0,18,1,0,'Watches'
    190 Watch6='GetCapture',256,0,18,1,0,'Watches'
    191 Watch7='FOnException',8,0,18,1,0,'Watches'
    192 Watch8='E',16,0,18,1,0,'Watches'
    193 Watch9='actiontype',256,0,18,1,0,'Watches'
     309Count=4
     310Watch0='CachedWPField',256,0,18,1,0,'Watches'
     311Watch1='DataForGrid.indexof',256,0,18,1,0,'Watches'
     312Watch2='E',256,0,18,1,0,'Watches'
     313Watch3='MarkForDelete',256,0,18,1,0,'Watches'
    194314
    195315[WatchWindow]
     
    197317WatchShowColumnHeaders=1
    198318Create=1
    199 Visible=0
    200 State=0
    201 Left=26
    202 Top=330
    203 Width=885
    204 Height=260
    205 MaxLeft=-1
    206 MaxTop=-1
    207 ClientWidth=877
    208 ClientHeight=234
     319Visible=1
     320State=0
     321Left=0
     322Top=0
     323Width=207
     324Height=621
     325MaxLeft=-1
     326MaxTop=-1
     327ClientWidth=207
     328ClientHeight=621
    209329TBDockHeight=234
    210330LRDockWidth=421
     
    212332
    213333[Breakpoints]
    214 Count=0
     334Count=7
     335Breakpoint0='P:\vista\tmg-cprs\CPRS-Chart\rCover.pas',315,'',0,1,'',1,0,0,'',1,'','',''
     336Breakpoint1='P:\vista\tmg-cprs\TMG_Extra\HTMLEdit\TMGHTML2.pas',688,'',0,1,'',1,0,0,'',1,'','',''
     337Breakpoint2='P:\vista\tmg-cprs\TMG_Extra\HTMLEdit\EmbeddedED\EmbeddedED.pas',1516,'',0,1,'',1,0,0,'',1,'','',''
     338Breakpoint3='P:\vista\tmg-cprs\TMG_Extra\HTMLEdit\EmbeddedED\EmbeddedED.pas',1540,'',0,1,'',1,0,0,'',1,'','',''
     339Breakpoint4='P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas',1710,'',0,1,'',1,0,0,'',1,'','',''
     340Breakpoint5='P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas',1787,'',0,1,'',1,0,0,'',1,'','',''
     341Breakpoint6='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4512,'',0,1,'',1,0,0,'',1,'','',''
    215342
    216343[AddressBreakpoints]
     
    221348Visible=1
    222349State=2
    223 Left=1064
    224 Top=175
    225 Width=123
     350Left=170
     351Top=3
     352Width=854
    226353Height=112
    227354MaxLeft=-4
    228355MaxTop=-4
    229 MaxWidth=1032
     356MaxWidth=808
    230357MaxHeight=112
    231 ClientWidth=1024
     358ClientWidth=800
    232359ClientHeight=78
    233360
     
    268395Visible=0
    269396State=0
    270 Left=287
    271 Top=137
     397Left=220
     398Top=110
    272399Width=800
    273400Height=561
     
    300427Left=0
    301428Top=0
    302 Width=242
    303 Height=484
    304 MaxLeft=-1
    305 MaxTop=-1
    306 ClientWidth=242
    307 ClientHeight=484
     429Width=326
     430Height=427
     431MaxLeft=-1
     432MaxTop=-1
     433ClientWidth=326
     434ClientHeight=427
    308435TBDockHeight=527
    309436LRDockWidth=250
     
    311438SplitPos=128
    312439ArrangeBy=Name
    313 SelectedItem=Position
    314 ExpandedItems=Anchors
     440SelectedItem=Top
     441ExpandedItems=Anchors,Options
    315442HiddenCategories=Legacy
    316443
     
    339466[CallStackWindow]
    340467Create=1
    341 Visible=1
    342 State=0
    343 Left=-764
    344 Top=199
    345 Width=477
    346 Height=481
    347 MaxLeft=-1
    348 MaxTop=-1
    349 ClientWidth=469
    350 ClientHeight=455
     468Visible=0
     469State=0
     470Left=592
     471Top=324
     472Width=420
     473Height=412
     474MaxLeft=-1
     475MaxTop=-1
     476ClientWidth=412
     477ClientHeight=386
    351478TBDockHeight=355
    352479LRDockWidth=233
     
    379506Left=0
    380507Top=0
    381 Width=242
    382 Height=484
    383 MaxLeft=-1
    384 MaxTop=-1
    385 ClientWidth=242
    386 ClientHeight=484
     508Width=326
     509Height=427
     510MaxLeft=-1
     511MaxTop=-1
     512ClientWidth=326
     513ClientHeight=427
    387514TBDockHeight=527
    388515LRDockWidth=250
     
    499626[CodeExplorer@EditWindow0]
    500627Create=1
     628Visible=1
     629State=0
     630Left=0
     631Top=0
     632Width=207
     633Height=621
     634MaxLeft=-1
     635MaxTop=-1
     636ClientWidth=207
     637ClientHeight=621
     638TBDockHeight=305
     639LRDockWidth=140
     640Dockable=1
     641
     642[MessageView@EditWindow0]
     643Create=1
     644Visible=0
     645State=0
     646Left=12
     647Top=0
     648Width=643
     649Height=87
     650MaxLeft=-1
     651MaxTop=-1
     652ClientWidth=643
     653ClientHeight=87
     654TBDockHeight=87
     655LRDockWidth=443
     656Dockable=1
     657
     658[DockHosts]
     659DockHostCount=2
     660
     661[DockSite0]
     662DockSiteType=1
     663Create=1
    501664Visible=0
    502665State=0
    503666Left=0
    504667Top=12
    505 Width=140
    506 Height=351
    507 MaxLeft=-1
    508 MaxTop=-1
    509 ClientWidth=140
    510 ClientHeight=351
    511 TBDockHeight=305
    512 LRDockWidth=140
    513 Dockable=1
    514 
    515 [MessageView@EditWindow0]
    516 Create=1
    517 Visible=0
    518 State=0
    519 Left=12
    520 Top=0
    521 Width=760
    522 Height=187
    523 MaxLeft=-1
    524 MaxTop=-1
    525 ClientWidth=760
    526 ClientHeight=187
    527 TBDockHeight=187
    528 LRDockWidth=443
    529 Dockable=1
    530 
    531 [DockHosts]
    532 DockHostCount=1
    533 
    534 [DockSite0]
     668Width=215
     669Height=650
     670MaxLeft=-1
     671MaxTop=-1
     672ClientWidth=215
     673ClientHeight=650
     674TBDockHeight=94
     675LRDockWidth=215
     676Dockable=1
     677TabPosition=0
     678ActiveTab=Watch List
     679TabDockClients=CodeExplorer@EditWindow0,WatchWindow
     680
     681[DockSite1]
    535682DockSiteType=1
    536683Create=1
    537684Visible=1
    538685State=0
    539 Left=-278
    540 Top=186
    541 Width=258
    542 Height=539
    543 MaxLeft=-1
    544 MaxTop=-1
    545 ClientWidth=250
    546 ClientHeight=513
     686Left=-794
     687Top=291
     688Width=342
     689Height=482
     690MaxLeft=-1
     691MaxTop=-1
     692ClientWidth=334
     693ClientHeight=456
    547694TBDockHeight=539
    548695LRDockWidth=258
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart_TLB.pas

    r496 r541  
    1313
    1414// PASTLWTR : 1.2
    15 // File generated on 2/18/2009 8:07:41 AM from Type Library described below.
     15// File generated on 8/12/2009 5:54:14 PM from Type Library described below.
    1616
    1717// ************************************************************************  //
  • cprs/branches/tmg-cprs/CPRS-Chart/Consults/fConsult513Prt.pas

    r453 r541  
    195195        begin
    196196          FReportText.Lines.Assign(GetFormattedSF513(FConsult, ChartCopy));
    197           PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg);
     197          PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg, Application); //kt 8/09, Added ',Application'
    198198          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    199199        end;
  • cprs/branches/tmg-cprs/CPRS-Chart/Consults/fPreReq.pas

    r453 r541  
    167167                end;
    168168              until LastLine >= memReport.Lines.Count - 1;
    169             PrintWindowsReport(memPrintReport, PAGE_BREAK, Self.Caption, ErrMsg);
     169            PrintWindowsReport(memPrintReport, PAGE_BREAK, Self.Caption, ErrMsg, Application); //kt 8/09, Added ',Application'
    170170          end;
    171171      finally
  • cprs/branches/tmg-cprs/CPRS-Chart/Options/fOptions.dfm

    r498 r541  
    8787      Height = 323
    8888      HelpContext = 9999
    89       ActivePage = tsCoverSheet
     89      ActivePage = tsNotes
    9090      Align = alClient
    9191      TabOrder = 0
     
    17701770          Width = 281
    17711771          Height = 241
     1772          Enabled = False
    17721773          Font.Charset = DEFAULT_CHARSET
    17731774          Font.Color = clWindowText
     
    17891790          Caption = 'Load last selected skin when starting program'
    17901791          Checked = True
     1792          Enabled = False
    17911793          State = cbChecked
    17921794          TabOrder = 1
     
    17981800          Height = 25
    17991801          Caption = '&More skins...'
     1802          Enabled = False
    18001803          TabOrder = 2
    18011804          OnClick = btnMoreSkinsClick
     
    18071810          Height = 25
    18081811          Caption = '&Disable skin'
     1812          Enabled = False
    18091813          ModalResult = 7
    18101814          TabOrder = 3
     
    18171821          Height = 25
    18181822          Caption = '&Apply skin'
     1823          Enabled = False
    18191824          TabOrder = 4
    18201825          OnClick = btnApplySkinClick
  • cprs/branches/tmg-cprs/CPRS-Chart/Options/fOptionsNotes.dfm

    r453 r541  
    66  BorderStyle = bsSingle
    77  Caption = 'Notes'
    8   ClientHeight = 150
    9   ClientWidth = 399
     8  ClientHeight = 226
     9  ClientWidth = 398
    1010  Color = clBtnFace
    1111  Font.Charset = DEFAULT_CHARSET
     
    1717  OldCreateOrder = False
    1818  Position = poScreenCenter
     19  OnCreate = FormCreate
    1920  OnShow = FormShow
    2021  PixelsPerInch = 96
     
    4041    Height = 13
    4142    Caption = 'of notes (sec):'
     43  end
     44  object lblHTMLViewSize: TLabel
     45    Left = 8
     46    Top = 144
     47    Width = 159
     48    Height = 13
     49    Caption = 'Formatted Text (HTML) View Size'
    4250  end
    4351  object txtAutoSave: TCaptionEdit
     
    113121  object pnlBottom: TPanel
    114122    Left = 0
    115     Top = 117
    116     Width = 399
     123    Top = 193
     124    Width = 398
    117125    Height = 33
    118126    HelpContext = 9110
     
    124132      Left = 0
    125133      Top = 0
    126       Width = 399
     134      Width = 398
    127135      Height = 2
    128136      Align = alTop
     
    152160    end
    153161  end
     162  object cboHTMLViewSize: TComboBox
     163    Left = 8
     164    Top = 162
     165    Width = 153
     166    Height = 21
     167    ItemHeight = 13
     168    TabOrder = 6
     169    Text = '<View Size>'
     170    OnChange = cboHTMLViewSizeChange
     171    Items.Strings = (
     172      'Smallest'
     173      'Small'
     174      'Medium'
     175      'Large'
     176      'Largest')
     177  end
     178  object cbDefaultHTMLMode: TCheckBox
     179    Left = 8
     180    Top = 120
     181    Width = 225
     182    Height = 17
     183    Caption = 'Start notes in Formatted (HTML) Mode'
     184    TabOrder = 7
     185    OnClick = cbDefaultHTMLModeClick
     186  end
    154187  object DKLanguageController1: TDKLanguageController
    155     Left = 192
    156     Top = 80
     188    Left = 352
     189    Top = 88
    157190    LangData = {
    158191      0F0066726D4F7074696F6E734E6F746573010200000001000000070043617074
    159       696F6E02000000080048656C7046696C65010C0000000C006C626C4175746F53
     192      696F6E02000000080048656C7046696C65010F0000000C006C626C4175746F53
    160193      61766531010100000003000000070043617074696F6E000B006C626C436F7369
    161194      676E6572010100000004000000070043617074696F6E000C006C626C4175746F
     
    167200      6F74746F6D0000090062766C426F74746F6D0000050062746E4F4B0101000000
    168201      09000000070043617074696F6E00090062746E43616E63656C01010000000A00
    169       0000070043617074696F6E00}
     202      0000070043617074696F6E000F006C626C48544D4C5669657753697A65010100
     203      00000B000000070043617074696F6E000F0063626F48544D4C5669657753697A
     204      6501020000000D00000005004974656D730C0000000400546578740011006362
     205      44656661756C7448544D4C4D6F646501010000000E000000070043617074696F
     206      6E00}
    170207  end
    171208end
  • cprs/branches/tmg-cprs/CPRS-Chart/Options/fOptionsNotes.pas

    r453 r541  
    44interface
    55
     6{ //kt 8/09  The following objects were addeded to the *FORM* of this unit
     7
     8  object lblHTMLViewSize: TLabel
     9    Left = 8
     10    Top = 144
     11    Width = 159
     12    Height = 13
     13    Caption = 'Formatted Text (HTML) View Size'
     14  end
     15  object cboHTMLViewSize: TComboBox
     16  Left = 8
     17  Top = 162
     18  Width = 153
     19  Height = 21
     20  ItemHeight = 13
     21  TabOrder = 6
     22  Text = '<View Size>'
     23  OnClick = cboHTMLViewSizeClick
     24  Items.Strings = (
     25    'Smallest'
     26    'Small'
     27    'Medium'
     28    'Large'
     29    'Largest')
     30  end
     31  object cbDefaultHTMLMode: TCheckBox
     32    Left = 8
     33    Top = 112
     34    Width = 225
     35    Height = 17
     36    Caption = 'Start notes in Formatted (HTML) Mode'
     37    TabOrder = 7
     38    OnClick = cbDefaultHTMLModeClick
     39}
     40
     41
    642uses
    743  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
     44  IniFiles,    //kt for IniFile
    845  StdCtrls, ExtCtrls, ORCtrls, ORFn, ComCtrls, DKLang;
    946
     
    2259    btnCancel: TButton;
    2360    lblAutoSave2: TLabel;
    24     DKLanguageController1: TDKLanguageController;
     61    cboHTMLViewSize: TComboBox;   //kt 8/09
     62    lblHTMLViewSize: TLabel;      //kt 8/09
     63    cbDefaultHTMLMode: TCheckBox; //kt 8/09
     64    DKLanguageController1: TDKLanguageController; //kt
    2565    procedure FormShow(Sender: TObject);
    2666    procedure btnOKClick(Sender: TObject);
     
    3272      Direction, InsertAt: Integer);
    3373    procedure cboCosignerExit(Sender: TObject);
     74    procedure FormCreate(Sender: TObject);              //kt 8/09
     75    procedure cbDefaultHTMLModeClick(Sender: TObject);  //kt 8/09
     76    procedure cboHTMLViewSizeChange(Sender: TObject);   //kt 8/09
    3477  private
    3578    { Private declarations }
     
    4083var
    4184  frmOptionsNotes: TfrmOptionsNotes;
     85  OptionsNotesIniFile : TIniFile;  //kt 8/09
     86  DefaultEditHTMLMode : boolean;   //kt 8/09
     87  FHTMLEditTextSize   : integer;   //kt 8/09
    4288
    4389procedure DialogOptionsNotes(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
     90procedure SetDefaultEditHTMLMode(Value : boolean);  //kt 8/09
     91procedure Loaded;                                   //kt 8/09
    4492
    4593implementation
     
    4896
    4997uses
     98  uCore,    //kt 8/09
     99  Registry, //kt 8/09
    50100  rOptions, uOptions, rCore, rTIU, rDCSumm;
     101
     102const
     103  DEFAULT_HTML_EDIT_MODE = 'Edit-in-HTML default mode';       //kt 8/09
     104  DEFAULT_HTML_TEXT_SIZE = 'Edit-in-HTML default text size';  //kt 8/09
     105
     106procedure SetRegHTMLViewSize(Size : integer); forward;        //kt 8/09
    51107
    52108procedure DialogOptionsNotes(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
     
    102158  chkAskSubject.Checked := rpcGetSubject;
    103159  if chkAskSubject.Checked then chkAskSubject.Tag := 1;
     160  cbDefaultHTMLMode.Checked := DefaultEditHTMLMode; //kt
    104161end;
    105162
     
    207264end;
    208265
     266
     267procedure SetRegHTMLViewSize(Size : integer);
     268//kt added entire function 8/09
     269//NOTE: The only way to affect the view size of the HTML renderer (IE) is to
     270//      change a system-wide setting in the registry.  Then CPRS has to be
     271//      restarted for changes to take effect.
     272var
     273  FontSizeData : array[0..3] of byte;
     274  ZoomReg      : TRegistry;
     275begin
     276  if (Size < 0) or (Size > 255) then exit;
     277  ZoomReg := TRegistry.Create;
     278  FontSizeData[0] := Lo(Size); FontSizeData[1] := 0; FontSizeData[2] := 0; FontSizeData[3] := 0;
     279  try
     280    ZoomReg.Rootkey := HKEY_CURRENT_USER;
     281    if ZoomReg.OpenKey('\Software\Microsoft\Internet Explorer\International\Scripts\3', False) then begin
     282      ZoomReg.WriteBinaryData('IEFontSize',FontSizeData,SizeOf(FontSizeData));
     283    end;
     284  finally
     285    ZoomReg.Free;
     286  end;
     287end;
     288
     289procedure SetDefaultEditHTMLMode(Value : boolean);
     290//kt added entire function 8/09
     291begin
     292  if Value <> DefaultEditHTMLMode then begin
     293    OptionsNotesIniFile.WriteBool(User.Name,DEFAULT_HTML_EDIT_MODE,Value);
     294    DefaultEditHTMLMode := Value;
     295  end;
     296end;
     297
     298procedure TfrmOptionsNotes.cbDefaultHTMLModeClick(Sender: TObject);
     299//kt added entire function 8/09
     300begin
     301  SetDefaultEditHTMLMode(cbDefaultHTMLMode.Checked);
     302end;
     303
     304procedure TfrmOptionsNotes.cboHTMLViewSizeChange(Sender: TObject);
     305//kt added entire function 8/09
     306begin
     307  SetRegHTMLViewSize(cboHTMLViewSize.ItemIndex);
     308  OptionsNotesIniFile.WriteInteger(User.Name,DEFAULT_HTML_TEXT_SIZE,cboHTMLViewSize.ItemIndex);
     309  MessageDlg('Formated text size change will take '+#10+#13+
     310             'effect next time CPRS is restarted.',mtInformation,[mbOK],0);
     311end;
     312
     313procedure Loaded;
     314//kt added entire function 8/09
     315begin
     316  //Code was put in global access space because object is not instantiated until
     317  //after user shows options (which could be never)
     318  OptionsNotesIniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.INI'));  //kt
     319  DefaultEditHTMLMode := OptionsNotesIniFile.ReadBool(User.Name,DEFAULT_HTML_EDIT_MODE,false);
     320  FHTMLEditTextSize := OptionsNotesIniFile.ReadInteger(User.Name,DEFAULT_HTML_TEXT_SIZE,2);
     321  SetRegHTMLViewSize(FHTMLEditTextSize);
     322end;
     323
     324procedure TfrmOptionsNotes.FormCreate(Sender: TObject);
     325//kt added entire function 8/09
     326//NOTE: form is not created until first time needed.
     327begin
     328  //NOTE: FHTMLEditTextSize is set in Loaded function (has to be called after sign on (so User.Name is available)
     329  if (FHTMLEditTextSize > -1) and (FHTMLEditTextSize < cboHTMLViewSize.Items.Count) then begin
     330    cboHTMLViewSize.ItemIndex := FHTMLEditTextSize;
     331    cboHTMLViewSize.Text := cboHTMLViewSize.Items[FHTMLEditTextSize];
     332    SetRegHTMLViewSize(cboHTMLViewSize.ItemIndex);
     333  end;
     334end;
     335
     336initialization
     337
     338finalization
     339  OptionsNotesIniFile.Free;  //kt 8/09
     340
    209341end.
  • cprs/branches/tmg-cprs/CPRS-Chart/Options/fOptionsOther.dfm

    r498 r541  
    88  BorderStyle = bsDialog
    99  Caption = 'Other Parameters'
    10   ClientHeight = 436
     10  ClientHeight = 463
    1111  ClientWidth = 391
    1212  Color = clBtnFace
     
    2626  object lblMedsTab: TLabel
    2727    Left = 7
    28     Top = 168
     28    Top = 184
    2929    Width = 170
    3030    Height = 13
     
    4444  object Bevel1: TBevel
    4545    Left = 1
    46     Top = 150
     46    Top = 174
    4747    Width = 392
    4848    Height = 3
     
    5050  object lblEncAppts: TLabel
    5151    Left = 8
    52     Top = 269
     52    Top = 285
    5353    Width = 207
    5454    Height = 13
     
    6161  object Bevel2: TBevel
    6262    Left = 1
    63     Top = 256
     63    Top = 272
    6464    Width = 392
    6565    Height = 2
     
    7272    Caption = 'Select Tab Positioning'
    7373  end
    74   object Label2: TLabel
    75     Left = 8
    76     Top = 104
     74  object lblTabColors: TLabel
     75    Left = 8
     76    Top = 128
    7777    Width = 83
    7878    Height = 13
    7979    Caption = 'Adjust Tab Colors'
    8080  end
    81   object Label3: TLabel
     81  object lblEditTabColor: TLabel
    8282    Left = 232
    83     Top = 104
     83    Top = 128
    8484    Width = 138
    8585    Height = 13
     
    8888  object pnlBottom: TPanel
    8989    Left = 0
    90     Top = 403
     90    Top = 430
    9191    Width = 391
    9292    Height = 33
     
    129129  object stStart: TStaticText
    130130    Left = 7
    131     Top = 191
     131    Top = 207
    132132    Width = 55
    133133    Height = 17
     
    137137  object stStop: TStaticText
    138138    Left = 199
    139     Top = 191
     139    Top = 207
    140140    Width = 55
    141141    Height = 17
     
    145145  object dtStart: TORDateBox
    146146    Left = 7
    147     Top = 210
     147    Top = 226
    148148    Width = 178
    149149    Height = 21
     
    157157  object dtStop: TORDateBox
    158158    Left = 200
    159     Top = 209
     159    Top = 225
    160160    Width = 186
    161161    Height = 21
     
    216216  object stStartEncAppts: TStaticText
    217217    Left = 9
    218     Top = 296
     218    Top = 312
    219219    Width = 55
    220220    Height = 17
     
    224224  object txtTodayMinus: TStaticText
    225225    Left = 38
    226     Top = 321
     226    Top = 337
    227227    Width = 64
    228228    Height = 17
     
    235235  object txtEncStart: TCaptionEdit
    236236    Left = 110
    237     Top = 318
     237    Top = 334
    238238    Width = 50
    239239    Height = 21
     
    248248  object txtDaysMinus: TStaticText
    249249    Left = 178
    250     Top = 322
     250    Top = 338
    251251    Width = 26
    252252    Height = 17
     
    259259    Tag = 30
    260260    Left = 160
    261     Top = 318
     261    Top = 334
    262262    Width = 15
    263263    Height = 21
     
    271271  object txtDaysPlus: TStaticText
    272272    Left = 180
    273     Top = 374
     273    Top = 390
    274274    Width = 26
    275275    Height = 17
     
    282282    Tag = 30
    283283    Left = 162
    284     Top = 369
     284    Top = 385
    285285    Width = 15
    286286    Height = 21
     
    294294  object txtEncStop: TCaptionEdit
    295295    Left = 112
    296     Top = 369
     296    Top = 385
    297297    Width = 50
    298298    Height = 21
     
    307307  object txtTodayPlus: TStaticText
    308308    Left = 46
    309     Top = 372
     309    Top = 388
    310310    Width = 56
    311311    Height = 17
     
    318318  object stStopEncAppts: TStaticText
    319319    Left = 10
    320     Top = 348
     320    Top = 364
    321321    Width = 55
    322322    Height = 17
     
    326326  object btnEncDefaults: TButton
    327327    Left = 248
    328     Top = 287
     328    Top = 303
    329329    Width = 75
    330330    Height = 22
     
    358358  object pnlShowColor: TPanel
    359359    Left = 232
    360     Top = 120
     360    Top = 144
    361361    Width = 145
    362362    Height = 22
     
    367367  object cboTabColors: TComboBox
    368368    Left = 8
    369     Top = 120
     369    Top = 144
    370370    Width = 217
    371371    Height = 21
     
    378378      ' ')
    379379  end
     380  object cbEnableTabColors: TCheckBox
     381    Left = 9
     382    Top = 110
     383    Width = 169
     384    Height = 17
     385    Caption = 'Enable Custom Tab Colors'
     386    Checked = True
     387    Enabled = False
     388    State = cbChecked
     389    TabOrder = 26
     390    Visible = False
     391    OnClick = cbEnableTabColorsClick
     392  end
    380393  object DKLanguageController1: TDKLanguageController
    381394    Left = 152
     
    383396    LangData = {
    384397      0F0066726D4F7074696F6E734F74686572010300000002000000070043617074
    385       696F6E03000000080048656C7046696C6501000000040048696E740122000000
     398      696F6E03000000080048656C7046696C6501000000040048696E740123000000
    386399      0A006C626C4D656473546162010200000005000000070043617074696F6E0400
    387400      0000040048696E740006006C626C546162010100000006000000070043617074
     
    409422      43617074696F6E001300546162506F736974696F6E436F6D626F426F78010200
    410423      00001C00000005004974656D731B0000000400546578740006004C6162656C31
    411       01010000001D000000070043617074696F6E0006004C6162656C320101000000
    412       1E000000070043617074696F6E000C00706E6C53686F77436F6C6F7200000B00
    413       436F6C6F724469616C6F67000006004C6162656C3301010000001F0000000700
    414       43617074696F6E000C0063626F546162436F6C6F72730000}
     424      01010000001D000000070043617074696F6E000C006C626C546162436F6C6F72
     425      7301010000001E000000070043617074696F6E000C00706E6C53686F77436F6C
     426      6F7200000B00436F6C6F724469616C6F6700000F006C626C4564697454616243
     427      6F6C6F7201010000001F000000070043617074696F6E000C0063626F54616243
     428      6F6C6F7273000011006362456E61626C65546162436F6C6F7273010100000020
     429      000000070043617074696F6E00}
    415430  end
    416431  object ColorDialog: TColorDialog
  • cprs/branches/tmg-cprs/CPRS-Chart/Options/fOptionsOther.pas

    r473 r541  
    4141    TabPositionComboBox: TComboBox;
    4242    Label1: TLabel;
    43     Label2: TLabel;
     43    lblTabColors: TLabel;
    4444    pnlShowColor: TPanel;
    4545    ColorDialog: TColorDialog;
    46     Label3: TLabel;
     46    lblEditTabColor: TLabel;
    4747    cboTabColors: TComboBox;
     48    cbEnableTabColors: TCheckBox;
    4849    procedure FormShow(Sender: TObject);
    4950    procedure btnOKClick(Sender: TObject);
     
    6061    procedure cboTabColorsChange(Sender: TObject);
    6162    procedure pnlShowColorClick(Sender: TObject);
     63    procedure cbEnableTabColorsClick(Sender: TObject);
    6264  private
    6365    { Private declarations }
     
    121123  values, tab: string;
    122124begin
    123   cboTabColors.Items.Assign(uTabColorsList);  //kt added8808
    124   cboTabColors.ItemIndex := 0;      //kt
    125   cboTab.Items.Assign(rpcGetOtherTabs);   //kt
    126  cboTabColorsChange(nil);   //kt
     125  cboTabColors.Items.Assign(frmFrame.tabPage.Tabs);  //kt 8/09
     126  //cboTabColors.Items.Assign(uTabColorsList);       //kt added8808
     127  cboTabColors.ItemIndex := 0;                       //kt
     128  cboTab.Items.Assign(rpcGetOtherTabs);              //kt
     129  cboTabColorsChange(nil);                           //kt
     130  cbEnableTabColors.Checked := uTabColorsEnabled;    //kt 8/09
    127131//if (cboTab.Items.IndexOf('Surgery') > -1) and (not ShowSurgeryTab) then  <-- original line.  //kt 8/8/2007
    128132  if (cboTab.Items.IndexOf(DKLangConstW('fOptionsOther_Surgery')) > -1) and (not ShowSurgeryTab) then //kt added 8/8/2007
     
    344348end;
    345349
     350procedure TfrmOptionsOther.cbEnableTabColorsClick(Sender: TObject);
     351//kt added
     352begin
     353  uTabColorsEnabled := cbEnableTabColors.Checked;
     354  cboTabColors.Enabled    := uTabColorsEnabled;
     355  lblEditTabColor.Enabled := uTabColorsEnabled;
     356  lblTabColors.Enabled    := uTabColorsEnabled;
     357  pnlShowColor.Enabled    := uTabColorsEnabled;
     358end;
     359
    346360end.
  • cprs/branches/tmg-cprs/CPRS-Chart/TMG_Extra/fPtDemoEdit.dfm

    r498 r541  
    11object frmPtDemoEdit: TfrmPtDemoEdit
    2   Left = 322
    3   Top = 116
     2  Left = 279
     3  Top = 142
    44  Width = 684
    55  Height = 498
     
    5858    Width = 676
    5959    Height = 424
    60     ActivePage = DemoTabSheet
     60    ActivePage = Advanced
    6161    Align = alTop
    6262    Anchors = [akLeft, akTop, akRight, akBottom]
    6363    TabOrder = 3
     64    OnChange = PageControlChange
     65    OnChanging = PageControlChanging
    6466    object DemoTabSheet: TTabSheet
    6567      Caption = 'Demographics'
     
    581583      end
    582584    end
     585    object Advanced: TTabSheet
     586      Caption = 'Advanced'
     587      ImageIndex = 1
     588      object gridPatientDemo: TStringGrid
     589        Left = 0
     590        Top = 0
     591        Width = 665
     592        Height = 393
     593        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing]
     594        TabOrder = 0
     595        OnSelectCell = gridPatientDemoSelectCell
     596        OnSetEditText = gridPatientDemoSetEditText
     597      end
     598    end
    583599  end
    584600  object DKLanguageController1: TDKLanguageController
     
    587603    LangData = {
    588604      0D0066726D507444656D6F45646974010100000001000000070043617074696F
    589       6E013900000005004F4B42746E010100000002000000070043617074696F6E00
     605      6E013B00000005004F4B42746E010100000002000000070043617074696F6E00
    590606      090043616E63656C42746E010100000003000000070043617074696F6E000800
    591607      4170706C7942746E010100000004000000070043617074696F6E000B00506167
     
    634650      617074696F6E0006004C6162656C3201010000002B000000070043617074696F
    635651      6E0006004C6162656C3301010000002C000000070043617074696F6E00090045
    636       4D61696C456469740000}
     652      4D61696C4564697400000800416476616E63656401010000002D000000070043
     653      617074696F6E000F006772696450617469656E7444656D6F0000}
    637654  end
    638655end
  • cprs/branches/tmg-cprs/CPRS-Chart/TMG_Extra/fPtDemoEdit.pas

    r498 r541  
    66uses
    77  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    8   Dialogs, ComCtrls, StdCtrls, ExtCtrls, DKLang;
     8  Dialogs, ComCtrls, StdCtrls, ExtCtrls, DKLang, Grids;
    99
    1010type
    1111  BoolUC = (bucFalse, bucTrue, bucUnchanged);
    12  
     12
     13  tFileEntry = record
     14    Field     : string;
     15    FileNum   : string;
     16    FieldName : String;
     17    IENS      : string;
     18    oldValue,newValue : string;
     19  end;
     20
     21  TGridInfo = class;  //forward declaration
     22  TGridDataLoader = procedure (GridInfo: TGridInfo) of object;
     23  TGridInfo = class (TObject)
     24  public
     25    Grid      : TStringGrid;  //doesn't own object
     26    FileNum   : string;
     27    IENS      : string;
     28    BasicMode : Boolean;
     29    Data      : TStringList;  //doesn't own object
     30    Message   : string;  //optional text.
     31    DataLoadProc : TGridDataLoader;
     32    ApplyBtn  : TButton;
     33    RevertBtn : TButton;
     34  end;
     35
    1336  TPatientInfo = class(TObject)
    1437  public
     
    5881
    5982    Modified : boolean;
    60      
     83
    6184    constructor Create;
    6285    destructor Destroy; override;
     
    126149    DKLanguageController1: TDKLanguageController;
    127150    EMailEdit: TEdit;
     151    Advanced: TTabSheet;
     152    gridPatientDemo: TStringGrid;
    128153    procedure AliasComboBoxChange(Sender: TObject);
    129154    procedure FormCreate(Sender: TObject);
     
    162187    procedure DOBEditChange(Sender: TObject);
    163188    procedure SSNumEditChange(Sender: TObject);
     189    procedure PageControlChange(Sender: TObject);
     190    procedure gridPatientDemoSelectCell(Sender: TObject; ACol,
     191      ARow: Integer; var CanSelect: Boolean);
     192    procedure gridPatientDemoSetEditText(Sender: TObject; ACol,
     193      ARow: Integer; const Value: String);
     194    procedure PageControlChanging(Sender: TObject;
     195      var AllowChange: Boolean);
    164196  private
    165197    { Private declarations }
     
    167199    FServerPatientInfo : TPatientInfo;
    168200    FCurAliasEdit : integer;
     201    CurrentAnyFileData : TStringList;
    169202    ProgAliasChangeOccuring : boolean;
     203    CurrentPatientData : TStringList;
    170204    ProgNameChangeOccuring : boolean;
    171205    ProgPhoneChangeOccuring : boolean;
     206    FLastSelectedRow,FLastSelectedCol : integer;
    172207    ProgAddressChangeOccuring : boolean;
     208    DataForGrid : TStringList;
    173209    MaxAliasIEN : integer;
     210    Data : TStringList;
    174211    ChangesMade : boolean;
     212    BasicTemplate : TStringList;
     213    FLoadingGrid: boolean;
     214    CachedWPField : TStringList;
    175215    procedure GetPtInfo(PatientInfo : TPatientInfo);
    176216    procedure PostChangedInfo(PatientInfo : TPatientInfo);
    177217    procedure ShowAliasInfo(Patient : TPatientInfo);
     218    procedure GetPatientInfo(GridInfo: TGridInfo);
    178219    procedure ShowPtInfo(Patient : TPatientInfo);
    179220    function CombinedName : string;
     221    procedure AddGridInfo(Grid: TStringGrid;
     222                                  Data : TStringList;
     223                                  BasicMode : boolean;
     224                                  DataLoader : TGridDataLoader;
     225                                  FileNum : string);
    180226    procedure NameParts(CombinedName: string; var LName, FName, MName : string);
     227    function ExtractNum (S : String; StartPos : integer) : string;
    181228    procedure SetModified(value : boolean);
    182229    procedure SetAliasEnabled(value : boolean);
     230    function PostChanges(Grid : TStringGrid) : TModalResult;
     231    procedure CompileChanges(Grid : TStringGrid; CurrentUserData,Changes : TStringList);
     232    procedure RegisterGridInfo(GridInfo : TGridInfo);
    183233  public
    184234    { Public declarations }
     235    function GetInfoForGrid(Grid : TStringGrid) : TGridInfo;
     236    procedure LoadAnyGrid(Grid : TStringGrid; BasicMode: boolean; FileNum : string;
     237                                  IENS : string;
     238                                  CurrentData : TStringList);
     239    procedure LoadAnyGridFromInfo(GridInfo : TGridInfo);
     240    function IsWPField(FileNum,FieldNum : string) : boolean;
     241    function IsSubFile(FieldDef: string ; var SubFileNum : string) : boolean;
     242    function GetInfoIndexForGrid(Grid : TStringGrid) : integer;
     243    function PostVisibleGrid: TModalResult;
     244    function GetLineInfo(Grid : TStringGrid; CurrentUserData : TStringList; ARow: integer) : tFileEntry;
     245    procedure GetOneRecord(FileNum, IENS : string; Data, BlankFileInfo: TStringList);
     246    //procedure GridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
     247    function GetUserLine(CurrentUserData : TStringList; Grid : TStringGrid; ARow: integer) : integer;
     248    function FindInStrings(fieldNum : string; Strings : TStringList; var fileNum : string) : integer;
    185249  end;
    186250
     
    188252  frmPtDemoEdit: TfrmPtDemoEdit;
    189253
     254Const
     255  DEF_GRID_ROW_HEIGHT = 17; 
     256  CLICK_FOR_SUBS = '<CLICK for Sub-Entries>';
     257  COMPUTED_FIELD = '<Computed Field --> CAN''T EDIT>';
     258  CLICK_TO_EDIT = '<CLICK to Edit Text>';
     259  HIDDEN_FIELD = '<Hidden>';
     260
    190261implementation
    191262
     
    193264
    194265uses
    195   IniFiles,Trpcb,ORNet,uCore, mfunstr, strutils;
     266  IniFiles,Trpcb,ORNet,uCore, mfunstr, subfilesU, strutils, LookupU, SetSelU,
     267  SelDateTimeU, PostU, EditTextU, FMErrorU;
    196268
    197269const
     
    218290begin
    219291  AliasInfo := TStringList.Create;
     292 
    220293  Clear;
    221294end;
     
    250323  DOB:= '';
    251324  SSNum:= '';
     325  EMail:= '';
    252326  ClearAliasInfo; 
    253327  AddressLine1:= '';
     
    300374  DOB:=Source.DOB;
    301375  SSNum:=Source.SSNum;
     376  EMail:=Source.EMail;
    302377 
    303378  ClearAliasInfo;
     
    424499  CompStrs(DOB, OldInfo.DOB);
    425500  CompStrs(SSNum, OldInfo.SSNum);
     501  CompStrs(EMail, OldInfo.EMail);
    426502 
    427503  CompStrs(AddressLine1, OldInfo.AddressLine1);
     
    554630    Sex:= tempINI.ReadString('DATA','SEX','');
    555631    SSNum:= tempINI.ReadString('DATA','SS_NUM','');
     632    EMail:= tempINI.ReadString('DATA','EMAIL','');
    556633    AddressLine1:= tempINI.ReadString('DATA','ADDRESS_LINE_1','');
    557634    AddressLine2:= tempINI.ReadString('DATA','ADDRESS_LINE_2','');
     
    621698    CheckPost('SEX',Sex);
    622699    CheckPost('SS_NUM',SSNum);
     700    CheckPost('EMAIL',EMail);
    623701    CheckPost('ADDRESS_LINE_1',AddressLine1);
    624702    CheckPost('ADDRESS_LINE_2',AddressLine2);
     
    690768    DOBEdit.Text := DOB;
    691769    SSNumEdit.Text := SSNum;
     770    EMailEdit.Text := EMail;
    692771    if Sex='MALE' then SexComboBox.ItemIndex := 0 else SexComboBox.ItemIndex := 1;
    693772    AliasComboBox.Items.Clear;
     
    748827    end; 
    749828    ShowAliasInfo(FCurPatientInfo);
    750   end; 
     829  end;
    751830end;
    752831
     
    756835  FCurPatientInfo := TPatientInfo.Create;
    757836  FServerPatientInfo := TPatientInfo.Create;
     837  DataForGrid := TStringList.Create;  //will own GridInfo objects.
    758838  ProgAliasChangeOccuring  := false;
    759839  ProgNameChangeOccuring := false;
     
    762842  MaxAliasIEN := 0;
    763843  ChangesMade := false;
     844  CurrentPatientData := TStringList.Create;
     845  AddGridInfo(GridPatientDemo,CurrentPatientData,false,GetPatientInfo,'2');
     846
    764847end;
    765848
    766849procedure TfrmPtDemoEdit.FormDestroy(Sender: TObject);
    767850begin
     851  DataForGrid.Free;
    768852  FCurPatientInfo.Destroy;
    769853  FServerPatientInfo.Destroy;
     854  CurrentPatientData.Free;
    770855end;
    771856
     
    887972procedure TfrmPtDemoEdit.FormShow(Sender: TObject);
    888973begin
     974  PageControl.ActivePageIndex := 0;
    889975  GetPtInfo(FServerPatientInfo);
    890976  FCurPatientInfo.Assign(FServerPatientInfo);
    891   ShowPtInfo(FCurPatientInfo); 
     977  ShowPtInfo(FCurPatientInfo);
    892978end;
    893979
     
    11781264var TempPatientInfo : tPatientInfo;
    11791265begin
     1266if pagecontrol.ActivePageIndex = 0 then begin
    11801267  TempPatientInfo := tPatientInfo.Create;
    11811268  TempPatientInfo.Assign(FCurPatientInfo);
     
    11841271  TempPatientInfo.Destroy;
    11851272  SetModified(false);
    1186 end;
     1273end else begin
     1274  PostVisibleGrid;
     1275  SetModified(false);
     1276end;
     1277end;
     1278function TfrmPtDemoEdit.PostVisibleGrid: TModalResult;
     1279  begin
     1280    result := PostChanges(gridPatientDemo);
     1281  end;
     1282
     1283function TfrmPtDemoEdit.PostChanges(Grid : TStringGrid) : TModalResult;
     1284  //Results:  mrNone -- no post done (not needed)
     1285  //          mrCancel -- user pressed cancel on confirmation screen.
     1286  //          mrNo -- signals posting error.
     1287  var Changes : TStringList;
     1288      PostResult : TModalResult;
     1289      CurrentData : TStringList;
     1290      GridInfo : TGridInfo;
     1291      IENS : string; 
     1292  begin
     1293    Result := mrNone;  //default to No changes
     1294    GridInfo := GetInfoForGrid(Grid);
     1295    if GridInfo=nil then exit;
     1296    CurrentData := GridInfo.Data;
     1297    if CurrentData=nil then exit;
     1298    if CurrentData.Count = 0 then exit;
     1299    IENS := Patient.DFN;
     1300    if IENS='' then exit;
     1301    Changes := TStringList.Create;
     1302    CompileChanges(Grid,CurrentData,Changes);
     1303    if Changes.Count>0 then begin
     1304      PostForm.PrepForm(Changes);
     1305      PostResult := PostForm.ShowModal;
     1306      if PostResult = mrOK then begin
     1307        //if DisuserChanged(Changes) then begin  //looks for change in file 200, field 4
     1308        //  InitializeUsersTreeView;
     1309        //end else begin
     1310          if Pos('+',IENS)>0 then begin
     1311            GridInfo.IENS := PostForm.GetNewIENS(IENS);
     1312          end;
     1313          if assigned(GridInfo.DataLoadProc) then begin
     1314            GridInfo.DataLoadProc(GridInfo);
     1315          end;
     1316          {
     1317          if CurrentData = CurrentUserData then begin
     1318            LoadUserData(IENS,CurrentData);  //reload record from server.
     1319          end else if CurrentData = CurrentSettingsData then begin
     1320            GetSettingsInfo(GridInfo.FileNum, GridInfo.IENS, CurrentData);
     1321          end else if CurrentData = CurrentPatientData then begin
     1322            GetPatientInfo(GridInfo.IENS, CurrentData);           
     1323          end else if CurrentData = CurrentAnyFileData then begin
     1324            GetAnyFileInfo(GridInfo.FileNum, GridInfo.IENS, CurrentData);
     1325          end; 
     1326          }
     1327        //end; 
     1328      end else if PostResult = mrNo then begin  //mrNo is signal of post Error
     1329        // show error...
     1330      end;
     1331      Result := PostResult;
     1332    end else begin
     1333      Result := mrNone; 
     1334    end;
     1335    Changes.Free;
     1336  end;
     1337
     1338  procedure TfrmPtDemoEdit.CompileChanges(Grid : TStringGrid; CurrentUserData,Changes : TStringList);
     1339  //Output format:
     1340  // FileNum^IENS^FieldNum^FieldName^newValue^oldValue
     1341
     1342  var row : integer;
     1343      Entry : tFileEntry;
     1344      oneEntry : string;
     1345  begin
     1346    for row := 1 to Grid.RowCount-1 do begin
     1347      Entry := GetLineInfo(Grid,CurrentUserData, row);
     1348      if Entry.oldValue <> Entry.newValue then begin
     1349        if (Entry.newValue <> CLICK_FOR_SUBS) and
     1350          (Entry.newValue <> COMPUTED_FIELD) and
     1351          (Entry.newValue <> CLICK_TO_EDIT) then begin   
     1352          oneEntry := Entry.FileNum + '^' + Entry.IENS + '^' + Entry.Field + '^' + Entry.FieldName;
     1353          oneEntry := oneEntry + '^' + Entry.newValue + '^' + Entry.oldValue;
     1354          Changes.Add(oneEntry);
     1355        end; 
     1356      end;
     1357    end;
     1358  end;
    11871359
    11881360procedure TfrmPtDemoEdit.SetModified(value : boolean);
     
    12191391    case MessageDlg('Apply Changes?',mtConfirmation,mbYesNoCancel,0) of
    12201392      mrYes : begin
    1221                 ApplyBtnClick(Sender);   
    1222                 frmPtDemoEdit.ModalResult := mrOK;  //closes form                                       
     1393                ApplyBtnClick(Sender);
     1394                frmPtDemoEdit.ModalResult := mrOK;  //closes form
    12231395              end;
    12241396      mrNo : begin
     
    12491421
    12501422
    1251 
     1423procedure TfrmPtDemoEdit.PageControlChange(Sender: TObject);
     1424var
     1425   GridInfo : TGridInfo;
     1426   IEN : longInt;
     1427   ModalResult : TModalResult;
     1428
     1429begin
     1430    if pagecontrol.ActivePageIndex = 0 then begin
     1431       GetPtInfo(FServerPatientInfo);
     1432       FCurPatientInfo.Assign(FServerPatientInfo);
     1433       ShowPtInfo(FCurPatientInfo);
     1434    end else begin
     1435       IEN := strtoint(patient.dfn);  //get info from selected patient
     1436       if IEN = 0 then exit;
     1437       GridInfo := GetInfoForGrid(gridPatientDemo);
     1438       if GridInfo = nil then exit;
     1439       GridInfo.IENS := IntToStr(IEN)+',';
     1440       GetPatientInfo(GridInfo);
     1441    end;
     1442
     1443end;
     1444
     1445procedure TfrmPtDemoEdit.GetPatientInfo(GridInfo: TGridInfo);
     1446
     1447var cmd,RPCResult : string;
     1448    IENS : String;
     1449    grid : TStringGrid;
     1450begin
     1451//    IENS := Patient.DFN;
     1452    IENS := GridInfo.IENS;
     1453//    Data := GridInfo.Data;
     1454    grid := GridInfo.Grid;
     1455    grid.Cells[0,1] := '';
     1456    grid.Cells[1,1] := '';
     1457    grid.Cells[2,1] := '';
     1458    grid.RowCount :=2;
     1459    grid.Cursor := crHourGlass;
     1460    if IENS <> '0,' then begin
     1461      RPCBrokerV.remoteprocedure := 'TMG CHANNEL';
     1462      RPCBrokerV.param[0].ptype := list;
     1463      cmd := 'GET ONE RECORD^2^' + IENS;
     1464      RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd;
     1465      RPCBrokerV.Call;
     1466      RPCResult := RPCBrokerV.Results[0];    //returns:  error: -1;  success=1
     1467      //Results[1]='FileNum^IENS^FieldNum^ExtValue^FieldName^DDInfo...
     1468      //Results[2]='FileNum^IENS^FieldNum^ExtValue^FieldName^DDInfo...
     1469      if piece(RPCResult,'^',1)='-1' then begin
     1470        messagedlg(RPCBrokerV.Results[1],mtError,mbOKCancel,0);
     1471        //FMErrorForm.Memo.Lines.Assign(RPCBrokerV.Results);
     1472      end else begin
     1473        GridInfo.Data.Assign(RPCBrokerV.results);
     1474        //LoadAnyGrid(grid,false,'2',IENS,Data);
     1475        LoadAnyGridFromInfo(GridInfo);
     1476      end;
     1477    end;
     1478  gridPatientDemo.Cursor := crDefault;
     1479end;
     1480
     1481procedure TfrmPtDemoEdit.LoadAnyGrid(Grid : TStringGrid;  //the TStringGrid to load
     1482                                     BasicMode: boolean;
     1483                                     FileNum : string;
     1484                                     IENS : string;
     1485                                     CurrentData : TStringList);
     1486  var
     1487    GridInfo : TGridInfo;
     1488  begin
     1489    GridInfo := TGridInfo.Create;
     1490    //This stores load information into a GridInfo
     1491    GridInfo.Grid := Grid;
     1492    GridInfo.BasicMode := BasicMode;
     1493    GridInfo.FileNum := FileNum;
     1494    GridInfo.IENS := IENS;
     1495    GridInfo.Data := CurrentData;
     1496    LoadAnyGridFromInfo(GridInfo);
     1497    GridInfo.Free;
     1498  end;
     1499
     1500procedure TfrmPtDemoEdit.LoadAnyGridFromInfo(GridInfo : TGridInfo);
     1501  //This assumes that GridInfo already has loaded info.
     1502  var
     1503    Grid : TStringGrid;  //the TStringGrid to load
     1504    BasicMode: boolean;
     1505    FileNum : string;
     1506    IENS : string;
     1507    CurrentData : TStringList;
     1508
     1509    procedure LoadOneLine (Grid : TStringGrid; oneEntry : string; GridRow : integer);
     1510    var
     1511      tempFile,IENS : string;
     1512      fieldNum,fieldName,fieldDef : string;
     1513      subFileNum : string;
     1514      value : string;
     1515    begin
     1516      tempFile := Piece(oneEntry,'^',1);
     1517      if tempFile = FileNum then begin //handle subfiles later...
     1518        IENS := Piece(oneEntry,'^',2);
     1519        fieldNum := Piece(oneEntry,'^',3);
     1520        value := Piece(oneEntry,'^',4);
     1521        fieldName := Piece(oneEntry,'^',5);
     1522        fieldDef := Piece(oneEntry,'^',6);
     1523        Grid.RowCount := GridRow + 1;
     1524        Grid.Cells[0,GridRow] := fieldNum;
     1525        Grid.Cells[1,GridRow] := fieldName;
     1526        if Pos('W',fieldDef)>0 then begin
     1527          Grid.Cells[2,GridRow] := CLICK_TO_EDIT;
     1528        end else if IsSubFile(fieldDef, subFileNum) then begin
     1529          if IsWPField(FileNum,fieldNum) then begin
     1530            Grid.Cells[2,GridRow] := CLICK_TO_EDIT;
     1531          end else begin
     1532            Grid.Cells[2,GridRow] := CLICK_FOR_SUBS;
     1533          end;
     1534        end else if Pos('C',fieldDef)>0 then begin
     1535          Grid.Cells[2,GridRow] := COMPUTED_FIELD;
     1536        end else begin
     1537          Grid.Cells[2,GridRow] := value;
     1538        end;
     1539        Grid.RowHeights[GridRow] := DEF_GRID_ROW_HEIGHT;
     1540      end;
     1541    end;
     1542
     1543    function getOneLine(CurrentData : TStringList; oneFileNum,oneFieldNum : string) : string;
     1544    var i : integer;
     1545        FileNum,FieldNum : string;
     1546    begin
     1547      result := '';
     1548      // FileNum^IENS^FieldNum^FieldName^newValue^oldValue
     1549      for i := 1 to CurrentData.Count - 1 do begin
     1550        FileNum := piece(CurrentData.Strings[i],'^',1);
     1551        if FileNum <> oneFileNum then continue;
     1552        FieldNum := piece(CurrentData.Strings[i],'^',3);
     1553        if FieldNum <> oneFieldNum then continue;
     1554        result := CurrentData.Strings[i];
     1555        break;
     1556      end;
     1557    end;
     1558
     1559  var i : integer;
     1560      oneEntry  : string;
     1561      oneFileNum,oneFieldNum : string;
     1562      gridRow : integer;
     1563
     1564  begin
     1565    FLoadingGrid := true;
     1566    if GridInfo=nil then exit;
     1567    Grid := GridInfo.Grid;
     1568    BasicMode := GridInfo.BasicMode;
     1569    FileNum := GridInfo.FileNum;
     1570    IENS := GridInfo.IENS;
     1571    CurrentData := GridInfo.Data;
     1572
     1573    Grid.Cells[0,1] := '';
     1574    Grid.Cells[1,1] := '';
     1575    Grid.Cells[2,1] := '';
     1576    Grid.RowCount :=2;
     1577    Grid.ColWidths[0] := 50;
     1578    Grid.ColWidths[1] := 200;
     1579    Grid.ColWidths[2] := 300;
     1580    Grid.Cells[0,0] := '#';
     1581    Grid.Cells[1,0] := 'Name';
     1582    Grid.Cells[2,0] := 'Value';
     1583
     1584    if BasicMode=false then begin
     1585      for i := 1 to CurrentData.Count-1 do begin  //start at 1 because [0] = 1^Success
     1586        oneEntry := CurrentData.Strings[i];
     1587        LoadOneLine (Grid,oneEntry,i);
     1588      end;
     1589    end else if BasicMode=true then begin
     1590      gridRow := 1;
     1591      for i := 0 to BasicTemplate.Count-1 do begin
     1592        oneFileNum := Piece(BasicTemplate.Strings[i],'^',1);
     1593        if oneFileNum <> fileNum then continue;
     1594        oneFieldNum := Piece(BasicTemplate.Strings[i],'^',2);
     1595        oneEntry := getOneLine(CurrentData,oneFileNum,oneFieldNum);
     1596        LoadOneLine (Grid,oneEntry,gridRow);
     1597        Inc(GridRow);
     1598      end;
     1599    end;
     1600    FLoadingGrid := false;
     1601  end;
     1602
     1603  function TfrmPtDemoEdit.GetInfoForGrid(Grid : TStringGrid) : TGridInfo;
     1604  var i : integer;
     1605  begin
     1606    i := GetInfoIndexForGrid(Grid);
     1607    if i > -1 then begin
     1608      result := TGridInfo(DataForGrid.Objects[i]);
     1609    end else begin
     1610      result := nil;
     1611    end;
     1612  end;
     1613
     1614
     1615  function TfrmPtDemoEdit.GetInfoIndexForGrid(Grid : TStringGrid) : integer;
     1616  var s : string;
     1617  begin
     1618    s := IntToStr(integer(Grid));
     1619    result := Dataforgrid.indexof(s);
     1620  end;
     1621
     1622function TfrmPtDemoEdit.IsSubFile(FieldDef: string ; var SubFileNum : string) : boolean;
     1623  //SubFileNum is OUT parameter
     1624  begin
     1625    SubFileNum := ExtractNum(FieldDef,1);
     1626    result := (SubFileNum <> '');
     1627  end;
     1628   
     1629  function TfrmPtDemoEdit.IsWPField(FileNum,FieldNum : string) : boolean;
     1630  var RPCResult : string;
     1631      SrchStr : string;
     1632      Idx: integer;
     1633  begin
     1634    SrchStr := FileNum + '^' +  FieldNum + '^';
     1635    //Idx := CachedWPField.IndexOf(SrchStr + 'YES');
     1636    //if Idx > -1 then begin Result := true; exit; end;
     1637    //Idx := CachedWPField.IndexOf(SrchStr + 'NO');
     1638    //if Idx > -1 then begin Result := false; exit; end;
     1639 
     1640    result := false;
     1641    RPCBrokerV.remoteprocedure := 'TMG CHANNEL';
     1642    RPCBrokerV.param[0].ptype := list;
     1643    RPCBrokerV.Param[0].Mult['"REQUEST"'] := 'IS WP FIELD^' + FileNum + '^' + FieldNum;
     1644    RPCBrokerV.Call;
     1645    RPCResult := RPCBrokerV.Results[0];    //returns:  error: -1;  success=1
     1646    if piece(RPCResult,'^',1)='-1' then begin
     1647      //FMErrorForm.Memo.Lines.Assign(RPCBrokerV.Results);
     1648      //FMErrorForm.PrepMessage;
     1649      //FMErrorForm.ShowModal;
     1650    end else begin
     1651      RPCResult := piece(RPCResult,'^',3);
     1652      result := (RPCResult = 'YES');
     1653      //CachedWPField.Add(SrchStr + RPCResult);
     1654    end;   
     1655  end;
     1656
     1657  function TfrmPtDemoEdit.ExtractNum (S : String; StartPos : integer) : string;
     1658  var i : integer;
     1659      ch : char;
     1660  begin
     1661    result := '';
     1662    if (S = '') or (StartPos < 0) then exit;
     1663    i := StartPos;
     1664    repeat
     1665      ch := S[i];
     1666      i := i + 1;
     1667      if ch in ['0'..'9','.'] then begin
     1668        Result := Result + ch;
     1669      end; 
     1670    until (i > length(S)) or not  (ch in ['0'..'9','.'])
     1671  end;
     1672
     1673  procedure TfrmPtDemoEdit.gridPatientDemoSelectCell(Sender: TObject; ACol,
     1674  ARow: Integer; var CanSelect: Boolean);
     1675    (*
     1676    For Field def, here is the legend
     1677    character     meaning
     1678
     1679    BC            The data is Boolean Computed (true or false).
     1680    C             The data is Computed.
     1681    Cm            The data is multiline Computed.
     1682    DC            The data is Date-valued, Computed.
     1683    D             The data is Date-valued.
     1684    F             The data is Free text.
     1685    I             The data is uneditable.
     1686    Pn            The data is a Pointer reference to file "n".
     1687    S             The data is from a discrete Set of codes.
     1688   
     1689    N             The data is Numeric-valued.
     1690   
     1691    Jn            To specify a print length of n characters.
     1692    Jn,d                To specify printing n characters with decimals.
     1693
     1694    V             The data is a Variable pointer.
     1695    W             The data is Word processing.
     1696    WL            The Word processing data is normally printed in Line mode (i.e., without word wrap).
     1697      *)
     1698  var oneEntry,FieldDef : string;                                     
     1699      date,time: string;
     1700      FileNum,FieldNum,SubFileNum : string;
     1701      GridFileNum : string;
     1702      UserLine : integer;
     1703      Grid : TStringGrid;
     1704      IEN : int64;
     1705      IENS : string;
     1706      CurrentData : TStringList;
     1707      GridInfo : TGridInfo;
     1708      SubFileForm : TSubFileForm;
     1709  begin
     1710    if FLoadingGrid then exit;  //prevent pseudo-clicks during loading...
     1711    Grid := (Sender as TStringGrid);
     1712    GridInfo := GetInfoForGrid(Grid);
     1713    if GridInfo=nil then exit;
     1714    GridFileNum := GridInfo.FileNum;
     1715    CanSelect := false;  //default to NOT selectable.
     1716    CurrentData := GridInfo.Data;
     1717    if CurrentData=nil then exit;
     1718    if CurrentData.Count = 0 then exit;
     1719    UserLine := GetUserLine(CurrentData,Grid,ARow);
     1720    if UserLine = -1 then exit;
     1721    oneEntry := CurrentData.Strings[UserLine];
     1722    FieldDef := Piece(oneEntry,'^',6);
     1723    if Pos('F',FieldDef)>0 then begin  //Free text
     1724      CanSelect := true;
     1725    end else if IsSubFile(FieldDef,SubFileNum) then begin  //Subfiles.
     1726      FileNum :=  Piece(oneEntry,'^',1);
     1727      FieldNum :=  Piece(oneEntry,'^',3);
     1728      if IsWPField(FileNum,FieldNum) then begin
     1729        IENS :=  Piece(oneEntry,'^',2);
     1730        EditTextForm.PrepForm(FileNum,FieldNum,IENS);
     1731        EditTextForm.ShowModal;
     1732      end else begin
     1733        //handle subfiles here
     1734        IENS := '';
     1735        if GridInfo.Message = MSG_SUB_FILE then begin  //used message from subfile Grid
     1736          IENS := GridInfo.IENS;
     1737        end; // else if LastSelTreeNode <> nil then begin  //this is one of the selction trees.
     1738          IEN := strtoint(Patient.DFN); //longInt(LastSelTreeNode.Data);
     1739          if IEN > 0 then IENS := InttoStr(IEN) + ',';
     1740        if GridInfo.Data = CurrentAnyFileData then begin
     1741          IEN := strtoint(patient.dfn);  //get info from selected record
     1742          if IEN > 0 then IENS := InttoStr(IEN) + ',';
     1743        end;
     1744        if IENS <> '' then begin
     1745          SubFileForm := TSubFileForm.Create(self);
     1746          SubFileForm.PrepForm(SubFileNum,IENS);
     1747          SubfileForm.ShowModal;  // note: may call this function again recursively for sub-sub-files etc.
     1748          SubFileForm.Free;
     1749        end else begin
     1750          MessageDlg('IENS for File="".  Can''t process.',mtInformation,[MBOK],0);
     1751        end;
     1752      end;
     1753    end else if Pos('C',FieldDef)>0 then begin  //computed fields.
     1754      CanSelect := false;
     1755    end else if Pos('D',FieldDef)>0 then begin  //date field
     1756      date := piece(Grid.Cells[ACol,ARow],'@',1);
     1757      time := piece(Grid.Cells[ACol,ARow],'@',2);
     1758      if date <> '' then begin
     1759        SelDateTimeForm.DateTimePicker.Date := StrToDate(date);
     1760      end else begin
     1761        SelDateTimeForm.DateTimePicker.Date := SysUtils.Date;
     1762      end;
     1763      if SelDateTimeForm.ShowModal = mrOK then begin
     1764        date := DateToStr(SelDateTimeForm.DateTimePicker.Date);
     1765        time := TimeToStr(SelDateTimeForm.DateTimePicker.Time);
     1766        if time <> '' then date := date; // + '@' + time;    elh 8/15/08
     1767        Grid.Cells[ACol,ARow] := date;
     1768      end;
     1769      CanSelect := true;
     1770    end else if Pos('S',FieldDef)>0 then begin  //Set of Codes
     1771      SetSelForm.PrepForm(Piece(oneEntry,'^',7));
     1772      if SetSelForm.ShowModal = mrOK then begin
     1773        Grid.Cells[ACol,ARow] := SetSelForm.ComboBox.Text;
     1774        CanSelect := true;
     1775      end;
     1776    end else if Pos('I',FieldDef)>0 then begin  //uneditable
     1777      ShowMessage('Sorry. Flagged as UNEDITABLE.');
     1778    end else if Pos('P',FieldDef)>0 then begin  //Pointer to file.
     1779      FileNum := ExtractNum (FieldDef,Pos('P',FieldDef)+1);
     1780      //check for validity here...
     1781      FieldLookupForm.PrepForm(FileNum,Grid.Cells[ACol,ARow]);
     1782      if FieldLookupForm.ShowModal = mrOK then begin
     1783        Grid.Cells[ACol,ARow] := FieldLookupForm.ORComboBox.Text;
     1784        CanSelect := true;
     1785      end;
     1786    end;
     1787    if CanSelect then begin
     1788      FLastSelectedRow := ARow;
     1789      FLastSelectedCol := ACol;
     1790      SetModified(True);
     1791    end;
     1792    //GridInfo.ApplyBtn.Enabled := true;
     1793    //GridInfo.RevertBtn.Enabled := true;
     1794  end;
     1795
     1796  function TfrmPtDemoEdit.GetLineInfo(Grid : TStringGrid; CurrentUserData : TStringList; ARow: integer) : tFileEntry;
     1797  var fieldNum : string;
     1798      oneEntry : string;
     1799      fileNum : string;
     1800      gridRow : integer;
     1801  begin
     1802    fieldNum := Grid.Cells[0,ARow];
     1803    gridRow := FindInStrings(fieldNum, CurrentUserData, fileNum);
     1804    if gridRow > -1 then begin
     1805      oneEntry := CurrentUserData.Strings[gridRow];
     1806      Result.Field := fieldNum;
     1807      Result.FieldName := Grid.Cells[1,ARow];
     1808      Result.FileNum := fileNum;
     1809      Result.IENS := Piece(oneEntry,'^',2);
     1810      Result.oldValue := Piece(oneEntry,'^',4);
     1811      Result.newValue := Grid.Cells[2,ARow];
     1812    end else begin
     1813      Result.Field := '';
     1814      Result.FieldName := '';
     1815      Result.FileNum := '';
     1816      Result.IENS := '';
     1817      Result.oldValue := '';
     1818      Result.newValue := '';
     1819    end;
     1820  end;
     1821
     1822procedure TfrmPtDemoEdit.GetOneRecord(FileNum, IENS : string; Data, BlankFileInfo: TStringList);
     1823  var cmd,RPCResult : string;
     1824      i : integer;
     1825      oneEntry : string;
     1826  begin
     1827    Data.Clear;
     1828    if (IENS='') then exit;
     1829    if Pos('+',IENS)=0 then begin //don't ask server to load +1 records.
     1830      RPCBrokerV.remoteprocedure := 'TMG CHANNEL';
     1831      RPCBrokerV.Param[0].Value := '.X';  // not used
     1832      RPCBrokerV.param[0].ptype := list;
     1833      cmd := 'GET ONE RECORD^' + FileNum + '^' + IENS;
     1834      RPCBrokerV.Param[0].Mult['"REQUEST"'] := cmd;
     1835      RPCBrokerV.Call;
     1836      RPCResult := RPCBrokerV.Results[0];    //returns:  error: -1;  success=1
     1837      if piece(RPCResult,'^',1)='-1' then begin
     1838      FMErrorForm.Memo.Lines.Assign(RPCBrokerV.Results);
     1839      FMErrorForm.PrepMessage;
     1840      FMErrorForm.ShowModal;
     1841      end else begin
     1842        Data.Assign(RPCBrokerV.Results);
     1843      end;
     1844    end else begin
     1845      Data.Add('1^Success');  //to keep same as call to server
     1846      if BlankFileInfo.Count = 0 then begin
     1847        //Format is: FileNum^^FieldNum^^DDInfo...
     1848        //  elh GetBlankFileInfo(FileNum,BlankFileInfo);
     1849      end; 
     1850      for i := 1 to BlankFileInfo.Count-1 do begin  //0 is 1^success
     1851        oneEntry := BlankFileInfo.Strings[i];
     1852        //  elh SetPiece(oneEntry,'^',2,IENS);
     1853        Data.Add(oneEntry);
     1854      end;
     1855    end;
     1856  end;
     1857
     1858function TfrmPtDemoEdit.GetUserLine(CurrentUserData : TStringList; Grid : TStringGrid; ARow: integer) : integer;
     1859  var fieldNum: string;
     1860      tempFileNum : string;
     1861  begin
     1862    fieldNum := Grid.Cells[0,ARow];
     1863    Result := FindInStrings(fieldNum,CurrentUserData,tempFileNum);
     1864  end;
     1865
     1866  function TfrmPtDemoEdit.FindInStrings(fieldNum : string; Strings : TStringList; var fileNum : string) : integer;
     1867  //Note: if fileNum is passed blank, then first matching file will be placed in it (i.e. OUT parameter)
     1868  var tempFieldNum : string;
     1869      oneEntry,tempFile : string;
     1870      i : integer;
     1871  begin
     1872    result := -1;
     1873    fileNum := '';
     1874    for i := 1 to Strings.Count-1 do begin   //0 --> 1^success
     1875      oneEntry := Strings.Strings[i];
     1876      tempFile := Piece(oneEntry,'^',1);
     1877      if fileNum='' then fileNum := tempFile;
     1878      if tempFile <> fileNum then continue; //ignore subfiles
     1879      tempFieldNum := Piece(oneEntry,'^',3);
     1880      if tempFieldNum <> fieldNum then continue;
     1881      Result := i;
     1882      break;
     1883    end;
     1884  end;
     1885
     1886 procedure TfrmPtDemoEdit.AddGridInfo(Grid: TStringGrid;
     1887                                  Data : TStringList;
     1888                                  BasicMode : boolean;
     1889                                  DataLoader : TGridDataLoader;
     1890                                  FileNum : string);
     1891  var tempGridInfo : TGridInfo;
     1892  begin
     1893    tempGridInfo := TGridInfo.Create;
     1894    tempGridInfo.Grid := Grid;
     1895    tempGridInfo.Data := Data;
     1896    tempGridInfo.BasicMode := BasicMode;
     1897    tempGridInfo.FileNum := FileNum;
     1898    tempGridInfo.DataLoadProc := DataLoader;
     1899    //tempGridInfo.ApplyBtn := ApplyBtn;
     1900    //tempGridInfo.RevertBtn := RevertBtn;
     1901    RegisterGridInfo(tempGridInfo);
     1902  end;
     1903
     1904procedure TfrmPtDemoEdit.RegisterGridInfo(GridInfo : TGridInfo);
     1905  var s : string;
     1906  begin
     1907    if GridInfo = nil then exit;
     1908    s := IntToStr(integer(GridInfo.Grid));
     1909    DataForGrid.AddObject(s,GridInfo);
     1910  end;
     1911
     1912procedure TfrmPtDemoEdit.gridPatientDemoSetEditText(Sender: TObject; ACol,
     1913                                            ARow: Integer; const Value: String);
     1914begin
     1915  SetModified(True);
     1916end;
     1917
     1918procedure TfrmPtDemoEdit.PageControlChanging(Sender: TObject;
     1919  var AllowChange: Boolean);
     1920var
     1921   intAnswer : Integer;
     1922begin
     1923//Before changing the form, find out if changes need to be applied and
     1924//prompt user.            elh
     1925    if ApplyBtn.enabled = True then begin
     1926       intAnswer := messagedlg('Do you want to apply your changes?', mtWarning,mbYesNoCancel,0);
     1927       if intAnswer = mrYes then begin  //Yes
     1928          ApplyBtnClick(Sender);
     1929          //messagedlg('Changes Saved.', mtWarning,[mbOK],0);
     1930          SetModified(False);
     1931        end else if intAnswer = mrNo then begin    //No
     1932          SetModified(False);
     1933        end else if intAnswer = mrCancel then begin    //Cancel
     1934          AllowChange := False;
     1935        end;
     1936    end;
     1937end;
    12521938end.
  • cprs/branches/tmg-cprs/CPRS-Chart/Templates/uTemplates.pas

    r453 r541  
    284284  ConsultsTemplate: TTemplate = nil;
    285285  ProceduresTemplate: TTemplate = nil;
     286  bUsingHTMLMode : boolean = false; //kt 8/09
    286287
    287288implementation
     
    291292  XMLUtils, fTemplateImport, Word97, uSpell, rCore, uConst, ORCtrls, uEventHooks,
    292293  fReminderDialog, rODBase
    293   , DKLang //kt
     294  , rHTMLTools, DKLang //kt
    294295  ;
    295296
     
    19431944//      FDialogAborted := DoTemplateDialog(TmpSL, 'Template: ' + FPrintName, TemplatePreviewMode);  <-- original line.  //kt 8/8/2007
    19441945        FDialogAborted := DoTemplateDialog(TmpSL, DKLangConstW('uTemplates_Templatex') + FPrintName, TemplatePreviewMode); //kt added 8/8/2007
     1946      if bUsingHTMLMode then begin                                  //kt 8/09
     1947        if rHTMLTools.IsHTML(TmpSL.Text) then begin                 //kt 8/09
     1948          TmpSL.Text := rHTMLTools.FixHTMLCRLF(TmpSL.Text);         //kt 8/09
     1949          TmpSL.Text := rHTMLTools.ProtectHTMLSpaces(TmpSL.Text);   //kt 8/09
     1950          TmpSL.Text := rHTMLTools.UnwrapHTML(TmpSL.Text);          //kt 8/09
     1951        end else begin                                              //kt 8/09
     1952          TmpSL.Text := rHTMLTools.Text2HTML(TmpSL);                //kt 8/09
     1953        end;                                                        //kt 8/09
     1954        bUsingHTMLMode := false; //force reset each call.           //kt 8/09
     1955      end;                                                          //kt 8/09
    19451956      Result := TmpSL.Text;
    19461957    finally
  • cprs/branches/tmg-cprs/CPRS-Chart/fDrawers.pas

    r496 r541  
    1111  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    1212  ExtCtrls, StdCtrls, Buttons, ORCtrls, ComCtrls, ImgList, uTemplates,
     13  TMGHTML2, rHTMLTools, StrUtils, //kt added uses on this line. 8/09
    1314  Menus, ORClasses, ORFn, DKLang;
    1415
    1516type
     17  THTMLModeSwitcher = procedure(HTMLMode : boolean; Quiet : boolean) of object;  //kt 8/09
    1618  TDrawer = (odNone, odTemplates, odEncounter, odReminders, odOrders);
    1719  TDrawers = set of TDrawer;
     
    114116    FindNextText     : string;  //kt
    115117    //kt End Mod -------------------
     118    FHtmlEditControl: THtmlObj;            //kt 8/09
     119    FHtmlModeSwitcher : THTMLModeSwitcher; //kt 8/09
    116120    FOpenToNode: string;
    117121    FOldMouseUp: TMouseEvent;
     
    155159    procedure ReloadTemplates;
    156160    procedure SetRichEditControl(const Value: TRichEdit);
     161    procedure SetHTMLEditControl(const Value: THtmlObj);                   //kt 8/09
    157162    procedure CheckAsk;
    158163    procedure FontChanged(Sender: TObject);
     
    167172    procedure AddTemplateNode(const tmpl: TTemplate; const Owner: TTreeNode = nil);
    168173    procedure MoveCaret(X, Y: integer);
     174    procedure MoveHTMLCaret(X, Y: integer);                                //kt 8/09
    169175    procedure NewRECDragDrop(Sender, Source: TObject; X, Y: Integer);
    170176    procedure NewRECDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState;
    171177                             var Accept: Boolean);
     178    procedure NewRECHTMLDragDrop(Sender, Source: TObject; X, Y: Integer);  //kt 8/09
     179    procedure NewRECHTMLDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState;
     180                             var Accept: Boolean);                         //kt 8/09
    172181    procedure InsertText;
    173182    procedure SetSplitter(const Value: TSplitter);
     
    175184    procedure SetSplitterActive(Active: boolean);
    176185    function EnableDrawer(Drawer: TDrawer; EnableIt: boolean): boolean;
    177     function InsertOK(Ask: boolean): boolean;
     186    //kt 8/09 function InsertOK(Ask: boolean): boolean;
     187    function InsertOK(Ask: boolean; TemplateIsHTML : boolean = false): boolean;  //kt 8/09
    178188    procedure OpenToNode(Path: string = '');
    179189    property FindNext: boolean read FFindNext write SetFindNext;
     
    196206    procedure ResetTemplates;
    197207    property RichEditControl: TRichEdit read FRichEditControl write SetRichEditControl;
     208    property HTMLEditControl : THtmlObj read FHtmlEditControl write SetHTMLEditControl; //kt 8/09
     209    property HTMLModeSwitcher : THTMLModeSwitcher read FHtmlModeSwitcher write FHtmlModeSwitcher; //kt 8/09
    198210    property NewNoteButton: TButton read FNewNoteButton write FNewNoteButton;
    199211    property Splitter: TSplitter read FSplitter write SetSplitter;
     
    202214    property DefTempPiece: integer read FDefTempPiece write FDefTempPiece;
    203215    property TheOpenDrawer: TDrawer read FOpenDrawer;
     216    function HTMLEditActive : boolean;  //kt 8/09
    204217  published
    205218    property Align: TAlign read GetAlign write SetAlign;
     
    218231uses fTemplateView, uCore, rTemplates, fTemplateEditor, dShared, uReminders,
    219232  fReminderDialog, RichEdit, fRptBox, Clipbrd, fTemplateDialog, fIconLegend,
     233  Inifiles,  //kt 8/09
    220234  uAccessibleTreeView, uAccessibleTreeNode;
    221235
     
    846860end;
    847861
     862procedure TfrmDrawers.SetHTMLEditControl(const Value: THtmlObj);
     863//kt added this function 8/09
     864begin
     865  if (FHtmlEditControl <> Value) then begin
     866    if (assigned(FHtmlEditControl)) then begin
     867      FHtmlEditControl.OnDragDrop := FOldDragDrop;
     868      FHtmlEditControl.OnDragOver := FOldDragOver;
     869    end;
     870    FHtmlEditControl := Value;
     871    if (assigned(FHtmlEditControl)) then begin
     872      FOldDragDrop := FHtmlEditControl.OnDragDrop;
     873      FOldDragOver := FHtmlEditControl.OnDragOver;
     874      FHtmlEditControl.OnDragDrop := NewRECHTMLDragDrop;
     875      FHtmlEditControl.OnDragOver := NewRECHTMLDragOver;
     876    end;
     877  end;
     878end;
     879
     880function TfrmDrawers.HTMLEditActive : boolean;
     881//kt added this function 8/09
     882begin
     883  if assigned(FHtmlEditControl) then begin
     884    Result := FHtmlEditControl.Active;
     885  end else Result := false;
     886end;
    848887
    849888procedure TfrmDrawers.MoveCaret(X, Y: integer);
     
    857896end;
    858897
     898procedure TfrmDrawers.MoveHTMLCaret(X, Y: integer);
     899//kt added entire function 8/09
     900var   pt: TPoint;
     901begin
     902  FHtmlEditControl.SetFocus;
     903  pt := Point(x, y);
     904  FHTMLEditControl.MoveCaretToPos(pt);
     905end;
    859906
    860907procedure TfrmDrawers.NewRECDragDrop(Sender, Source: TObject; X,
     
    889936end;
    890937
     938procedure TfrmDrawers.NewRECHTMLDragDrop(Sender, Source: TObject; X, Y: Integer);
     939//kt added function 8/09
     940//NOTE: I think this can be combined with NewRECDragDrop, but must fix MoveCaret
     941begin
     942  if (Source = tvTemplates) then begin
     943    MoveHTMLCaret(X, Y);
     944    InsertText;
     945  end else if(assigned(FOldDragDrop)) then begin
     946    FOldDragDrop(Sender, Source, X, Y);
     947  end;
     948end;
     949
     950procedure TfrmDrawers.NewRECHTMLDragOver(Sender, Source: TObject;
     951                                     X, Y: Integer; State: TDragState;
     952                                     var Accept: Boolean);
     953//kt added function 8/09
     954begin
     955  Accept := FALSE;
     956  if (Source = tvTemplates) then begin
     957    if (assigned(FDragNode))
     958    and (TTemplate(FDragNode.Data).RealType in [ttDoc, ttGroup]) then begin
     959      Accept := TRUE;
     960      MoveHTMLCaret(X, Y);
     961    end;
     962  end else if (assigned(FOldDragOver)) then begin
     963    FOldDragOver(Sender, Source, X, Y, State, Accept);
     964  end;
     965end;
     966
    891967procedure TfrmDrawers.InsertText;
    892968var
     
    894970  txt, DocInfo: string;
    895971  Template: TTemplate;
     972  TemplateIsHTML : boolean; //kt 8/09
    896973
    897974begin
    898975  DocInfo := '';
    899   if InsertOK(TRUE) and (dmodShared.TemplateOK(tvTemplates.Selected.Data)) then
    900   begin
     976  //kt if InsertOK(TRUE) and (dmodShared.TemplateOK(tvTemplates.Selected.Data)) then begin
     977  if (dmodShared.TemplateOK(tvTemplates.Selected.Data)) then begin  //kt
    901978    Template := TTemplate(tvTemplates.Selected.Data);
     979    TemplateIsHTML := rHTMLTools.IsHTML(Template.Text); //kt
     980    if not InsertOK(TRUE,TemplateIsHTML) then exit;  //kt
    902981    Template.TemplatePreviewMode := FALSE;
    903982    if Template.IsReminderDialog then
     
    908987        txt := Template.COMObjectText('', DocInfo)
    909988      else
     989        uTemplates.bUsingHTMLMode := HTMLEditActive; //kt 8/09  Will be used in TTemplate.GetText
    910990        txt := Template.Text;
    911991      if(txt <> '') then
     
    913993//      CheckBoilerplate4Fields(txt, 'Template: ' + Template.PrintName);  <-- original line.  //kt 7/15/2007
    914994        CheckBoilerplate4Fields(txt, DKLangConstW('fDrawers_Templatex') + Template.PrintName); //kt added 7/15/2007
    915         BeforeLine := SendMessage(FRichEditControl.Handle, EM_EXLINEFROMCHAR, 0, FRichEditControl.SelStart);
    916         FRichEditControl.SelText := txt;
    917         FRichEditControl.SetFocus;
    918         SendMessage(FRichEditControl.Handle, EM_SCROLLCARET, 0, 0);
    919         AfterTop := SendMessage(FRichEditControl.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
    920         SendMessage(FRichEditControl.Handle, EM_LINESCROLL, 0, -1 * (AfterTop - BeforeLine));
     995        if HTMLEditActive then begin  //kt added block 8/09
     996          //FHtmlEditControl.InsertTextAtCaret(txt);
     997          FHtmlEditControl.SelText := txt;
     998          FHtmlEditControl.SetFocus;
     999        end else begin  //kt original below  8/09
     1000          BeforeLine := SendMessage(FRichEditControl.Handle, EM_EXLINEFROMCHAR, 0, FRichEditControl.SelStart);
     1001          FRichEditControl.SelText := txt;
     1002          FRichEditControl.SetFocus;
     1003          SendMessage(FRichEditControl.Handle, EM_SCROLLCARET, 0, 0);
     1004          AfterTop := SendMessage(FRichEditControl.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
     1005          SendMessage(FRichEditControl.Handle, EM_LINESCROLL, 0, -1 * (AfterTop - BeforeLine));
     1006        end;  //kt 8/09
    9211007      end;
    9221008    end;
     
    14971583end;
    14981584
    1499 function TfrmDrawers.InsertOK(Ask: boolean): boolean;
    1500 
    1501   function REOK: boolean;
    1502   begin
    1503     Result := assigned(FRichEditControl) and
    1504               FRichEditControl.Visible and
    1505               FRichEditControl.Parent.Visible;
    1506   end;
    1507 
    1508 begin
    1509   Result := REOK;
     1585
     1586//kt 8/09 function TfrmDrawers.InsertOK(Ask: boolean): boolean;
     1587function TfrmDrawers.InsertOK(Ask: boolean; TemplateIsHTML : boolean): boolean;  //kt 8/09
     1588
     1589  function EditControlOK: boolean;   //kt 8/09 renamed.  Was REOK
     1590  begin
     1591    if HTMLEditActive then begin  //kt added this part 8/09
     1592      Result := assigned(FHtmlEditControl) and
     1593                FHtmlEditControl.Visible and
     1594                TWinControl(FHtmlEditControl).Parent.Visible;
     1595    end else begin  //kt original below.
     1596      Result := assigned(FRichEditControl) and
     1597                FRichEditControl.Visible and
     1598                FRichEditControl.Parent.Visible and
     1599                FRichEditControl.Parent.Parent.Visible;   //kt added last line
     1600    end;
     1601  end;
     1602
     1603begin
     1604  Result := EditControlOK;  //kt renamed function.
    15101605  if (not ask) and (not Result) and (assigned(FNewNoteButton)) then
    15111606    Result := TRUE
     
    15151610  begin
    15161611    FNewNoteButton.Click;
    1517     Result := REOK;
     1612    if TemplateIsHTML and Assigned(FHtmlModeSwitcher) then begin  //kt 8/09
     1613      FHtmlModeSwitcher(TemplateIsHTML, true);                    //kt 8/09
     1614      FHtmlEditControl.MoveCaretToEnd;                            //kt 8/09
     1615    end;                                                          //kt 8/09
     1616    Result := EditControlOK;  //kt 8/09  Renamed function.
    15181617  end;
    15191618end;
  • cprs/branches/tmg-cprs/CPRS-Chart/fFrame.pas

    r490 r541  
    375375    SkinChanged : boolean;  //kt 9/8/08
    376376    CurrentSkinFile : string; //kt 9/8/08
     377    TMGAbort : boolean;  //kt 3/25/09
    377378    procedure ActivateCurrentSkin; //kt 9/8/08
    378379    procedure InactivateSkin; //kt 9/8/08
     
    407408  uTabList: TStringList;
    408409  uTabColorsList : TStringList;  //kt added 8/8/08
     410  uTabColorsEnabled : Boolean;   //kt 8/09
    409411  uRemoteType : string;
    410412  FlaggedPTList: TStringList;
     
    803805{$ENDIF}
    804806
     807  TMGAbort := False;  //kt 3/25/09
    805808  if not ConnectToServer(TX_OPTION) then
    806809  begin
     
    809812      InfoBox(RPCBrokerV.RPCBError, DKLangConstW('fFrame_Error'), MB_OK or MB_ICONERROR); //kt added 7/17/2007
    810813    Close;
     814    TMGAbort := True;   //kt 3/25/09
    811815    Exit;
    812816  end;
     
    37553759                    frmNotes := TfrmNotes.Create(Self);
    37563760                    frmNotes.Parent := pnlPage;
     3761                    //kt Note: The following two lines must be done **AFTER**
     3762                    //         the assigment of Parent to pnlPage.  Otherwise
     3763                    //         the ActiveX object looses its attachement point
     3764                    //         or something and the document objects turns nil.
     3765                    frmNotes.HtmlViewer.Loaded;  //kt 8/09
     3766                    frmNotes.HtmlEditor.Loaded;  //kt 8/09
    37573767                  end;
    37583768    CT_CONSULTS : begin
     
    38073817      tabPage.Tabs.Add(ALabel);
    38083818    end;
    3809   if uTabColorsList.IndexOf(ALabel) < 0 then                    //kt added 8/8/08
    3810     uTabColorsList.Add(ALabel);  //will put colors in later...  //kt
     3819  uTabColorsList.Add(IntToStr(ATabID));  //will put colors in later...  //kt
     3820  {if uTabColorsList.IndexOf(ALabel) < 0 then                    //kt added 8/8/08
     3821    uTabColorsList.Add(ALabel);  //will put colors in later...  //kt  }
    38113822end;
    38123823
     
    38183829begin
    38193830  value :=0;
     3831  uTabColorsEnabled := INIFile.ReadBool('TAB_COLORS','ENABLE',true);
    38203832  for i := 0 to ColorsList.Count-1 do begin
    3821     sValue := INIFile.ReadString('TAB_COLORS',ColorsList.Strings[i],IntToStr($00FFFF));
     3833    //sValue := INIFile.ReadString('TAB_COLORS',ColorsList.Strings[i],IntToStr($00FFFF));
     3834    sValue := INIFile.ReadString('TAB_COLORS','Tab '+IntToStr(i),IntToStr($00FFFF));
    38223835    try
    38233836      value := StrToInt(sValue)
     
    38343847begin
    38353848  for i := 0 to ColorsList.Count-1 do begin
    3836     INIFile.WriteInteger('TAB_COLORS',ColorsList.Strings[i],longword(ColorsList.Objects[i]));
    3837   end;
     3849    //INIFile.WriteInteger('TAB_COLORS',ColorsList.Strings[i],longword(ColorsList.Objects[i]));
     3850    INIFile.WriteInteger('TAB_COLORS','Tab '+IntToStr(i),longword(ColorsList.Objects[i]));
     3851  end;
     3852  INIFile.WriteBool('TAB_COLORS','ENABLE',uTabColorsEnabled); //kt 8/09
    38383853end;
    38393854
     
    49574972procedure TfrmFrame.tabPageDrawTab(Control: TCustomTabControl; TabIndex: Integer;
    49584973                                   const Rect: TRect; Active: Boolean);
     4974//kt added
    49594975var ALabel : string;
    49604976    colorIndex : Integer;
    49614977    color : TColor;
    49624978begin
    4963   ALabel := TTabControl(Control).Tabs[TabIndex];
    4964   colorIndex := uTabColorsList.IndexOf(ALabel);
    4965   if colorIndex < 0 then color := clYellow
    4966   else color := TColor(uTabColorsList.Objects[colorIndex]);
    4967   DrawTab(Control,TabIndex,Rect,color,Active);
     4979  if uTabColorsEnabled then begin
     4980    ALabel := TTabControl(Control).Tabs[TabIndex];
     4981    {
     4982    colorIndex := uTabColorsList.IndexOf(ALabel);
     4983    if colorIndex < 0 then color := clYellow
     4984    else color := TColor(uTabColorsList.Objects[colorIndex]);
     4985    }
     4986    color := TColor(uTabColorsList.Objects[TabIndex]);
     4987    DrawTab(Control,TabIndex,Rect,color,Active);
     4988  end else begin
     4989    //this isn't working... This is not what I want.  Fix later...
     4990    //For now, uTabColorsEnabled should always be TRUE.
     4991    Control.Canvas.FillRect(Rect);
     4992  end;
    49684993end;
    49694994
     
    49805005    tf            : TFont;
    49815006    Degrees       : integer;
    4982     inactiveColor     : TColor;
    4983 
    4984     (*
    4985     function DecRed(Color : TColor; Amount : byte) : TColor;
     5007    inactiveColor : TColor;
     5008
     5009    function DarkenRed(Color : TColor; Percent : byte) : TColor;
    49865010    var red : longWord;
    49875011    begin
    49885012      red := (Color and $0000FF);
    4989       if red > Amount then red := red - Amount
    4990       else red := 0;
     5013      red := Round (red * (Percent/100));
    49915014      Result := (Color and $FFFF00) or red;
    49925015    end;
    49935016
    4994     function DecGreen(Color : TColor; Amount : byte) : TColor;
     5017    function DarkenGreen(Color : TColor; Percent : byte) : TColor;
    49955018    var green : longWord;
    49965019    begin
    49975020      green := (Color and $00FF00);
    49985021      green := green shr 8;
    4999       if green > Amount then green := green - Amount
    5000       else green := 0;
     5022      green := Round(green * (Percent/100));
    50015023      green := green shl 8;
    50025024      Result := (Color and $FF00FF) or green;
    50035025    end;
    50045026
    5005     function DecBlue(Color : TColor; Amount : byte) : TColor;
     5027    function DarkenBlue(Color : TColor; Percent : byte) : TColor;
    50065028    var blue : longWord;
    50075029    begin
    50085030      blue := (Color and $FF0000);
    50095031      blue := blue shr 16;
    5010       if blue > Amount then blue := blue - Amount
    5011       else blue := 0;
     5032      Blue := Round (blue * (Percent/100));
    50125033      blue := blue shl 16;
    50135034      Result := (Color and $00FFFF) or blue;
    50145035    end;
    50155036
    5016    function Darken(Color : TColor; Amount : byte) : TColor;
     5037   function Darken(Color : TColor; Percent : byte) : TColor;
    50175038   begin
    5018      result:= DecRed(Color, Amount);
    5019      result := DecBlue(result,Amount);
    5020      result := DecGreen(result,Amount);
     5039     if Percent=0 then begin result := Color; exit; end;
     5040     result:= DarkenRed(Color, Percent);
     5041     result := DarkenBlue(result,Percent);
     5042     result := DarkenGreen(result,Percent);
    50215043   end;
    5022    *)
    5023 
    5024   var
    5025     DecAmount : Byte;
    50265044
    50275045  begin
    50285046    oRect    := Rect;
    5029     //DecAmount := 50;
    5030     //inactiveColor := Darken(Color,DecAmount);
    5031     inactiveColor := Color;
     5047    inactiveColor := Darken(Color,75);  //75%
    50325048
    50335049    TabControl := TTabControl(Control);
     
    50395055
    50405056    Control.Canvas.Font.Name := 'Tahoma';
    5041     if Active then Control.Canvas.Font.Style := Control.Canvas.Font.Style + [fsBold];
    5042     if Active then Control.Canvas.Font.Color := clBlack
    5043     else Control.Canvas.Font.Color := clWhite;
     5057    if Active then begin
     5058      Control.Canvas.Font.Style := Control.Canvas.Font.Style + [fsBold];
     5059      Control.Canvas.Font.Color := clBlack
     5060    end else begin
     5061      Control.Canvas.Font.Style := Control.Canvas.Font.Style - [fsBold];
     5062      //Control.Canvas.Font.Color := clBlack
     5063      Control.Canvas.Font.Color := clWhite;
     5064    end;
    50445065
    50455066    if (TabControl.TabPosition = tpLeft) or (TabControl.TabPosition = tpRight) then begin
     
    50735094    end;
    50745095
     5096    if (TabControl.TabPosition = tpBottom) and (not Active) then begin
     5097      iTop := iTop - 2;
     5098    end;
     5099
    50755100    if Active then begin
    5076       //Control.Canvas.Brush.Color := TColor($0000FFFF);  //Bright yellow
    50775101      Control.Canvas.Brush.Color := Color;
    5078       Control.Canvas.FillRect(Rect);
    50795102    end else begin
    5080       //Control.Canvas.Brush.Color := TColor($000079EFE8);  //dull yellow
    50815103      Control.Canvas.Brush.Color := inactiveColor;
    5082       Control.Canvas.FillRect(Rect);
    5083     end;
     5104    end;
     5105    Control.Canvas.FillRect(Rect);
    50845106    Control.Canvas.TextOut(iLeft,iTop,sCaption);
    50855107  end;
  • cprs/branches/tmg-cprs/CPRS-Chart/fLabPrint.pas

    r453 r541  
    202202          Lines.Assign(GetFormattedLabReport(FReports, FDaysBack, Patient.DFN,
    203203            frmLabs.lstTests.Items, date1, date2, RemoteSiteID, RemoteQuery));
    204           PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg);
     204          PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg, Application); //kt 8/09 added 'Application'
    205205          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    206206        end;
  • cprs/branches/tmg-cprs/CPRS-Chart/fNotePrt.pas

    r453 r541  
    1 //kt -- Modified with SourceScanner on 8/25/2007
     1//kt -- Modified with SourceScanner on 8/25/2007, also 8/09
    22unit fNotePrt;
    33
     
    5454{$R *.DFM}
    5555
    56 uses rCore, rTIU, rReports, uCore, Printers;
     56uses rCore, rTIU, rReports, uCore, Printers,
     57     rHTMLTools; //kt 8/09
     58
    5759
    5860const
     
    206208  RemoteSiteID: string;    //for Remote site printing
    207209  RemoteQuery: string;    //for Remote site printing
     210  TempLines: TStringList;  //kt added 5-31-05
    208211begin
    209212  SetupVars;  //kt added 8/25/2007 to replace constants with vars.
     
    223226
    224227
    225   if Piece(cboDevice.ItemID, ';', 1) = 'WIN' then
    226     begin
    227     if dlgWinPrinter.Execute then
    228        begin
    229        FReportText.Lines.Assign(GetFormattedNote(FNote, ChartCopy));
    230        PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg);
    231        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    232        end
    233     end
    234   else
    235     begin
     228  if Piece(cboDevice.ItemID, ';', 1) = 'WIN' then begin
     229    if dlgWinPrinter.Execute then begin
     230      //kt ----- Begin original code -------------  8/09
     231      //kt FReportText.Lines.Assign(GetFormattedNote(FNote, ChartCopy));
     232      //kt PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg);
     233      //kt if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
     234      //kt ----- End original code -------------
     235      TempLines := TStringList.Create;                                          //kt 8/09
     236      TempLines.Assign(GetFormattedNote(FNote, ChartCopy));                     //kt 8/09
     237      if not rHTMLTools.IsHTML(TempLines) then begin                            //kt 8/09
     238        //NOTE: If HTML, then bypass this printer dialog, because it will be    //kt 8/09
     239        //      replaced by a printer dialog that internet explorer uses.       //kt 8/09
     240        if dlgWinPrinter.Execute then begin                                     //kt 8/09
     241          FReportText.Lines.Assign(TempLines);                                  //kt 8/09
     242          PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg,Application); //kt 8/09
     243        end;                                                                    //kt 8/09
     244      end else begin                                                            //kt 8/09
     245        LoadDocumentText(TempLines, FNote);  //Get document without headers/footers      //kt 8/09
     246        PrintHTMLReport(TempLines, ErrMsg, Patient.Name,                        //kt 8/09
     247                        FormatFMDateTime('mm/dd/yyyy', Patient.DOB),            //kt 8/09
     248                        Patient.WardService, Application);                      //kt 8/09
     249      end;                                                                      //kt 8/09
     250      TempLines.Free;                                                           //kt 8/09
     251      if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);            //kt 8/09
     252    end;                                                                        //kt 8/09
     253  end else begin
    236254    ADevice := Piece(cboDevice.ItemID, ';', 2);
    237255    PrintNoteToDevice(FNote, ADevice, ChartCopy, ErrMsg);
     
    243261  if chkDefault.Checked then
    244262     SaveDefaultPrinter(Piece(cboDevice.ItemID, ';', 1));
    245      
     263
    246264  User.CurrentPrinter := cboDevice.ItemID;
    247265  Close;
  • cprs/branches/tmg-cprs/CPRS-Chart/fNotes.dfm

    r453 r541  
    177177      Visible = False
    178178      OnResize = pnlWriteResize
    179       object memNewNote: TRichEdit
    180         Left = 0
    181         Top = 67
    182         Width = 611
    183         Height = 234
    184         Align = alClient
    185         Font.Charset = DEFAULT_CHARSET
    186         Font.Color = clWindowText
    187         Font.Height = -11
    188         Font.Name = 'Courier New'
    189         Font.Style = []
    190         ParentFont = False
    191         PlainText = True
    192         PopupMenu = popNoteMemo
    193         ScrollBars = ssBoth
    194         TabOrder = 1
    195         WantTabs = True
    196         OnChange = memNewNoteChange
    197         OnKeyDown = memNewNoteKeyDown
    198         OnKeyPress = memNewNoteKeyPress
    199         OnKeyUp = memNewNoteKeyUp
    200       end
    201179      object pnlFields: TPanel
    202180        Left = 0
     
    320298          Text = 'txtSubject'
    321299          Caption = 'Subject'
     300        end
     301      end
     302      object pnlTextWrite: TPanel
     303        Left = 0
     304        Top = 67
     305        Width = 611
     306        Height = 234
     307        Align = alClient
     308        BevelOuter = bvNone
     309        Caption = 'pnlTextWrite'
     310        TabOrder = 1
     311        object memNewNote: TRichEdit
     312          Left = 0
     313          Top = 0
     314          Width = 611
     315          Height = 234
     316          Align = alClient
     317          Font.Charset = DEFAULT_CHARSET
     318          Font.Color = clWindowText
     319          Font.Height = -11
     320          Font.Name = 'Courier New'
     321          Font.Style = []
     322          ParentFont = False
     323          PlainText = True
     324          PopupMenu = popNoteMemo
     325          ScrollBars = ssBoth
     326          TabOrder = 0
     327          WantTabs = True
     328          OnChange = memNewNoteChange
     329          OnKeyDown = memNewNoteKeyDown
     330          OnKeyPress = memNewNoteKeyPress
     331          OnKeyUp = memNewNoteKeyUp
     332        end
     333      end
     334      object pnlHTMLWrite: TPanel
     335        Left = 0
     336        Top = 67
     337        Width = 611
     338        Height = 234
     339        Align = alClient
     340        BevelOuter = bvNone
     341        Color = clInactiveBorder
     342        TabOrder = 2
     343        Visible = False
     344        object pnlHTMLEdit: TPanel
     345          Left = 0
     346          Top = 25
     347          Width = 611
     348          Height = 209
     349          Align = alClient
     350          BevelOuter = bvNone
     351          TabOrder = 0
     352        end
     353        object ToolBar: TToolBar
     354          Left = 0
     355          Top = 0
     356          Width = 611
     357          Height = 25
     358          AutoSize = True
     359          ButtonHeight = 21
     360          Caption = 'ToolBar'
     361          TabOrder = 1
     362          TabStop = True
     363          object cbFontNames: TComboBox
     364            Left = 0
     365            Top = 2
     366            Width = 145
     367            Height = 21
     368            ItemHeight = 13
     369            ParentShowHint = False
     370            ShowHint = True
     371            TabOrder = 0
     372            Text = '<Pick A Font>'
     373            OnClick = cbFontNamesChange
     374          end
     375          object cbFontSize: TComboBox
     376            Left = 145
     377            Top = 2
     378            Width = 75
     379            Height = 21
     380            ItemHeight = 13
     381            ItemIndex = 2
     382            TabOrder = 1
     383            Text = '3 (12 pt)'
     384            OnClick = cbFontSizeChange
     385            Items.Strings = (
     386              '1 (8   pt)'
     387              '2 (10 pt)'
     388              '3 (12 pt)'
     389              '4 (14 pt)'
     390              '5 (18 pt)'
     391              '6 (24 pt)'
     392              '7 (36 pt)')
     393          end
     394          object btnFonts: TSpeedButton
     395            Left = 220
     396            Top = 2
     397            Width = 23
     398            Height = 21
     399            Hint = 'Text Font'
     400            Glyph.Data = {
     401              82020000424D8202000000000000420000002800000012000000100000000100
     402              10000300000040020000130B0000130B0000000000000000000000F80000E007
     403              00001F000000FFFF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     404              5AEF5AEF5AEF5AEF5AEF5AEF100010005AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     405              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF100010005AEF7BEF5AEF5AEF5AEF5AEF
     406              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF100010005AEF5AEF5AEF5AEF
     407              5AEF5AEF5AEF5AEF5AEF53AD008053AD5AEF5AEF5AEF5AEF1000100010005AEF
     408              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF00805AEF5AEF5AEF5AEF5AEF10001000
     409              5AEF5AEF7BEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF00805AEF53AD5AEF5AEF5AEF
     410              100010005AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF0080008000805AEF
     411              5AEF5AEF10001000100010005AEF5AEF108010805AEF5AEF5AEF5AEF00805AEF
     412              53AD5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF53AD10805AEF5AEF5AEF
     413              00805AEF5AEF53AD5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF10805AEF
     414              5AEF53AD00800080008000805AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     415              10805AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     416              5AEF1080108010805AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     417              5AEF5AEF5AEF5AEF10805AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     418              5AEF5AEF5AEF5AEF5AEF5AEF108053AD5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     419              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF108010805AEF5AEF5AEF5AEF5AEF
     420              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     421              5AEF5AEF5AEF}
     422            ParentShowHint = False
     423            ShowHint = True
     424            OnClick = btnFontsClick
     425          end
     426          object btnItalic: TSpeedButton
     427            Left = 243
     428            Top = 2
     429            Width = 23
     430            Height = 21
     431            Hint = 'Italics'
     432            Glyph.Data = {
     433              42020000424D4202000000000000420000002800000010000000100000000100
     434              10000300000000020000130B0000130B0000000000000000000000F80000E007
     435              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     436              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     437              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     438              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     439              FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFF
     440              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000001084FFFFFFFFFFFFFFFFFFFF
     441              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF108400000000FFFFFFFFFFFFFFFFFFFF
     442              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000001084FFFFFFFFFFFFFFFF
     443              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF108400000000FFFFFFFFFFFFFFFF
     444              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000001084FFFFFFFFFFFF
     445              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF108400000000FFFFFFFFFFFF
     446              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000001084FFFFFFFF
     447              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFF
     448              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     449              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     450              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     451              FFFFFFFFFFFF}
     452            ParentShowHint = False
     453            ShowHint = True
     454            OnClick = btnItalicClick
     455          end
     456          object btnBold: TSpeedButton
     457            Left = 266
     458            Top = 2
     459            Width = 23
     460            Height = 21
     461            Hint = 'Bold'
     462            Glyph.Data = {
     463              42020000424D4202000000000000420000002800000010000000100000000100
     464              10000300000000020000130B0000130B00000000000000000000007C0000E003
     465              00001F000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F
     466              FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F
     467              FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F
     468              FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F
     469              FF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000000000000000FF7FFF7F
     470              FF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7F000000000000FF7F
     471              FF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7F000000000000FF7F
     472              FF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7F000000000000FF7F
     473              FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000000000000000000000000000FF7FFF7F
     474              FF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7F000000000000FF7F
     475              FF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7F000000000000FF7F
     476              FF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7F000000000000FF7F
     477              FF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000000000000000FF7FFF7F
     478              FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F
     479              FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F
     480              FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F
     481              FF7FFF7FFF7F}
     482            ParentShowHint = False
     483            ShowHint = True
     484            OnClick = btnBoldClick
     485          end
     486          object btnUnderline: TSpeedButton
     487            Left = 289
     488            Top = 2
     489            Width = 23
     490            Height = 21
     491            Hint = 'Underline'
     492            Glyph.Data = {
     493              42020000424D4202000000000000420000002800000010000000100000000100
     494              10000300000000020000130B0000130B0000000000000000000000F80000E007
     495              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     496              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     497              FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000FFFF
     498              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     499              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFF
     500              FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000001084FFFF108400000000FFFFFFFF
     501              FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF00000000FFFFFFFF
     502              FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF00000000FFFFFFFF
     503              FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF00000000FFFFFFFF
     504              FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF00000000FFFFFFFF
     505              FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF00000000FFFFFFFF
     506              FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF00000000FFFFFFFF
     507              FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFF0000000000000000FFFF
     508              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     509              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     510              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     511              FFFFFFFFFFFF}
     512            ParentShowHint = False
     513            ShowHint = True
     514            OnClick = btnUnderlineClick
     515          end
     516          object btnBullets: TSpeedButton
     517            Left = 312
     518            Top = 2
     519            Width = 23
     520            Height = 21
     521            Hint = 'Bullets'
     522            Glyph.Data = {
     523              42020000424D4202000000000000420000002800000010000000100000000100
     524              10000300000000020000130B0000130B0000000000000000000000F80000E007
     525              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     526              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     527              FFFFFFFFFFFF100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     528              FFFFFFFFFFFF100010001000FFFFFFFF00000000000000000000000000000000
     529              0000FFFFFFFF100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     530              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     531              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     532              FFFFFFFFFFFF100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     533              FFFFFFFFFFFF100010001000FFFFFFFF00000000000000000000000000000000
     534              0000FFFFFFFF100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     535              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     536              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     537              FFFFFFFFFFFF100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     538              FFFFFFFFFFFF100010001000FFFFFFFF00000000000000000000000000000000
     539              0000FFFFFFFF100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     540              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     541              FFFFFFFFFFFF}
     542            ParentShowHint = False
     543            ShowHint = True
     544            OnClick = btnBulletsClick
     545          end
     546          object btnNumbers: TSpeedButton
     547            Left = 335
     548            Top = 2
     549            Width = 23
     550            Height = 21
     551            Hint = 'Numbering'
     552            Glyph.Data = {
     553              42020000424D4202000000000000420000002800000010000000100000000100
     554              10000300000000020000130B0000130B0000000000000000000000F80000E007
     555              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     556              FFFFFFFFFFFF10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     557              FFFFFFFFFFFFFFFFFFFF1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     558              FFFFFFFFFFFFFFFF1000FFFFFFFFFFFF00000000000000000000000000000000
     559              0000FFFFFFFF100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     560              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     561              FFFFFFFFFFFF100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     562              FFFFFFFFFFFFFFFF1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     563              FFFFFFFFFFFFFFFFFFFF1000FFFFFFFF00000000000000000000000000000000
     564              0000FFFFFFFF10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     565              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     566              FFFFFFFFFFFF100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     567              FFFFFFFFFFFFFFFF1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     568              FFFFFFFFFFFF10001000FFFFFFFFFFFF00000000000000000000000000000000
     569              0000FFFFFFFFFFFF1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     570              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     571              FFFFFFFFFFFF}
     572            ParentShowHint = False
     573            ShowHint = True
     574            OnClick = btnNumbersClick
     575          end
     576          object btnLeftAlign: TSpeedButton
     577            Left = 358
     578            Top = 2
     579            Width = 23
     580            Height = 21
     581            Hint = 'Align Left'
     582            Glyph.Data = {
     583              42020000424D4202000000000000420000002800000010000000100000000100
     584              10000300000000020000130B0000130B0000000000000000000000F80000E007
     585              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     586              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     587              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     588              FFFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFF
     589              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     590              FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000
     591              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     592              FFFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFF
     593              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     594              FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000
     595              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     596              FFFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFF
     597              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     598              FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000
     599              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     600              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     601              FFFFFFFFFFFF}
     602            ParentShowHint = False
     603            ShowHint = True
     604            OnClick = btnLeftAlignClick
     605          end
     606          object btnCenterAlign: TSpeedButton
     607            Left = 381
     608            Top = 2
     609            Width = 23
     610            Height = 21
     611            Hint = 'Align Center'
     612            Glyph.Data = {
     613              42020000424D4202000000000000420000002800000010000000100000000100
     614              10000300000000020000130B0000130B0000000000000000000000F80000E007
     615              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     616              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     617              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     618              FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFF
     619              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     620              FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000
     621              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     622              FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFF
     623              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     624              FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000
     625              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     626              FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFF
     627              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     628              FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000
     629              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     630              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     631              FFFFFFFFFFFF}
     632            ParentShowHint = False
     633            ShowHint = True
     634            OnClick = btnCenterAlignClick
     635          end
     636          object btnRightAlign: TSpeedButton
     637            Left = 404
     638            Top = 2
     639            Width = 23
     640            Height = 21
     641            Hint = 'Align Right'
     642            Glyph.Data = {
     643              42020000424D4202000000000000420000002800000010000000100000000100
     644              10000300000000020000130B0000130B0000000000000000000000F80000E007
     645              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     646              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     647              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     648              FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000
     649              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     650              FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000
     651              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     652              FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000
     653              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     654              FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000
     655              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     656              FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000
     657              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     658              FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000
     659              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     660              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     661              FFFFFFFFFFFF}
     662            ParentShowHint = False
     663            ShowHint = True
     664            OnClick = btnRightAlignClick
     665          end
     666          object btnMoreIndent: TSpeedButton
     667            Left = 427
     668            Top = 2
     669            Width = 23
     670            Height = 21
     671            Hint = 'Indent'
     672            Glyph.Data = {
     673              42020000424D4202000000000000420000002800000010000000100000000100
     674              10000300000000020000130B0000130B0000000000000000000000F80000E007
     675              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     676              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF
     677              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     678              FFFFFFFFFFFFFFFFFFFF0000000000000000FFFF00000000FFFFFFFFFFFFFFFF
     679              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     680              FFFFFFFFFFFFFFFFFFFF0000000000000000FFFF000000000000000000000000
     681              000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     682              FFFFFFFFFFFFFFFFFFFF1000FFFFFFFFFFFFFFFF000000000000000000000000
     683              FFFFFFFFFFFFFFFFFFFF10001000FFFFFFFFFFFF000000000000000000000000
     684              FFFFFFFFFFFF10001000100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     685              FFFFFFFFFFFFFFFFFFFF10001000FFFFFFFFFFFF000000000000000000000000
     686              000000000000FFFFFFFF1000FFFFFFFFFFFFFFFF000000000000000000000000
     687              000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     688              FFFFFFFFFFFFFFFFFFFF0000000000000000FFFF000000000000000000000000
     689              000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     690              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF
     691              FFFFFFFFFFFF}
     692            ParentShowHint = False
     693            ShowHint = True
     694            OnClick = btnMoreIndentClick
     695          end
     696          object btnLessIndent: TSpeedButton
     697            Left = 450
     698            Top = 2
     699            Width = 23
     700            Height = 21
     701            Hint = 'Outdent'
     702            Glyph.Data = {
     703              42020000424D4202000000000000420000002800000010000000100000000100
     704              10000300000000020000130B0000130B0000000000000000000000F80000E007
     705              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     706              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF
     707              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     708              FFFFFFFFFFFFFFFFFFFF0000000000000000FFFF00000000FFFFFFFFFFFFFFFF
     709              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     710              FFFFFFFFFFFFFFFFFFFF0000000000000000FFFF000000000000000000000000
     711              000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     712              FFFFFFFFFFFFFFFFFFFF1000FFFFFFFFFFFFFFFF000000000000000000000000
     713              FFFFFFFFFFFFFFFF10001000FFFFFFFFFFFFFFFF000000000000000000000000
     714              FFFFFFFFFFFF10001000100010001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     715              FFFFFFFFFFFFFFFF10001000FFFFFFFFFFFFFFFF000000000000000000000000
     716              000000000000FFFFFFFF1000FFFFFFFFFFFFFFFF000000000000000000000000
     717              000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     718              FFFFFFFFFFFFFFFFFFFF0000000000000000FFFF000000000000000000000000
     719              000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     720              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF
     721              FFFFFFFFFFFF}
     722            ParentShowHint = False
     723            ShowHint = True
     724            OnClick = btnLessIndentClick
     725          end
     726          object btnTextColor: TSpeedButton
     727            Left = 473
     728            Top = 2
     729            Width = 23
     730            Height = 21
     731            Hint = 'Text Color'
     732            Glyph.Data = {
     733              42020000424D4202000000000000420000002800000010000000100000000100
     734              10000300000000020000130B0000130B0000000000000000000000F80000E007
     735              00001F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     736              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFF
     737              FFFFFFFFFFFF10001000FFFF0000000010841084108410841084108400000000
     738              FFFFFFFFFFFF10001000100010841084E0FFF7BDE0FF1F001F00F7BD10841084
     739              0000FFFFFFFFF7BD1000FFFFF7BDE0FFF7BDE0FF1F001F001F001F00F7BDE0FF
     740              10840000FFFFF7BD1084FFFFE0FF00F800F8F7BDE0FF1F001F00F7BDE0FFF7BD
     741              10840000FFFF1084FFFFE0FF00F800F800F800F8F7BDE0FFFFFFFFFFF7BDE0FF
     742              10840000FFFF1084FFFFF7BDE0FF00F800F8F7BDE0FF108410001000FFFFF7BD
     743              10840000FFFF1084FFFFE0FFF7BDE0FFF7BDE0FF10841000FF07100010001084
     744              00000000FFFF1084FFFFF7BD00040004E0FFF7BDE0FF10841000FF0710001000
     745              0000FFFFFFFF1084FFFF0004000400040004E0FFF7BDE0FF10841000E0FF0084
     746              0084FFFFFFFF1084FFFFF7BD00040004E0FF1FF81FF8F7BDE0FF10840084E0FF
     747              00840000FFFF1084FFFFE0FFF7BDE0FF1FF81FF81FF8E0FFFFFF1084FFFF0084
     748              000000000000FFFF1084FFFFE0FFF7BD1FF81FF81FF8FFFF1084FFFFFFFFFFFF
     749              0000F7BD0000FFFFFFFF1084FFFFFFFFFFFFFFFFFFFF10841084FFFFFFFFFFFF
     750              FFFF00000000FFFFFFFFFFFF10841084108410841084FFFFFFFFFFFFFFFFFFFF
     751              FFFFFFFF0000}
     752            ParentShowHint = False
     753            ShowHint = True
     754            OnClick = btnTextColorClick
     755          end
     756          object btnBackColor: TSpeedButton
     757            Left = 496
     758            Top = 2
     759            Width = 23
     760            Height = 21
     761            Hint = 'Background Color'
     762            Glyph.Data = {
     763              12030000424D1203000000000000420000002800000014000000120000000100
     764              100003000000D0020000130B0000130B0000000000000000000000F80000E007
     765              00001F0000005AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     766              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     767              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF0000
     768              0000000000000000000000000000000000000000000000005AEF5AEF5AEF5AEF
     769              5AEF5AEF5AEF0000E007E007E0070000FF07FF07FF0700001FF81FF81FF80000
     770              5AEF5AEF5AEF5AEF5AEF5AEF5AEF0000E007E007E0070000FF07FF07FF070000
     771              1FF81FF81FF800005AEF5AEF5AEF5AEF5AEF5AEF5AEF0000E007E007E0070000
     772              FF07FF07FF0700001FF81FF81FF800005AEF5AEF5AEF5AEF5AEF5AEF5AEF0000
     773              0000000000000000000000000000000000000000000000005AEF5AEF5AEF5AEF
     774              5AEF5AEF5AEF000053AD53AD53AD0000FFFFFFFFFFFF00000000000000000000
     775              5AEF5AEF5AEF5AEF5AEF5AEF5AEF000053AD53AD53AD0000FFFFFFFFFFFF0000
     776              00000000000000005AEF5AEF5AEF5AEF5AEF5AEF5AEF000053AD53AD53AD0000
     777              FFFFFFFFFFFF000000000000000000005AEF5AEF5AEF5AEF5AEF5AEF5AEF0000
     778              0000000000000000000000000000000000000000000000005AEF5AEF5AEF5AEF
     779              5AEF5AEF5AEF000000F800F800F80000E0FFE0FFE0FF00001F001F001F000000
     780              5AEF5AEF5AEF5AEF5AEF5AEF5AEF000000F800F800F80000E0FFE0FFE0FF0000
     781              1F001F001F0000005AEF5AEF5AEF5AEF5AEF5AEF5AEF000000F800F800F80000
     782              E0FFE0FFE0FF00001F001F001F0000005AEF5AEF5AEF5AEF5AEF5AEF5AEF0000
     783              0000000000000000000000000000000000000000000000005AEF5AEF5AEF5AEF
     784              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     785              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     786              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF
     787              5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF5AEF}
     788            ParentShowHint = False
     789            ShowHint = True
     790            OnClick = btnBackColorClick
     791          end
    322792        end
    323793      end
     
    360830        Align = alClient
    361831        TabOrder = 2
    362         OnCommandStateChange = WebBrowser1CommandStateChange
    363         OnDocumentComplete = WebBrowser1DocumentComplete
    364832        ControlData = {
    365833          4C000000263F00001F1300000000000000000000000000000000000000000000
     
    445913        Caption = 'No Progress Notes Found'
    446914      end
     915      object pnlHtmlViewer: TPanel
     916        Left = 0
     917        Top = 116
     918        Width = 611
     919        Height = 185
     920        Align = alClient
     921        BevelOuter = bvNone
     922        Color = clBtnShadow
     923        TabOrder = 3
     924      end
    447925    end
    448926  end
     
    7711249      Visible = False
    7721250      OnClick = popNoteMemoSaveContinueClick
     1251    end
     1252    object popNoteMemoHTMLFormat: TMenuItem
     1253      Caption = 'Change Edit M&ode to Formatted Text'
     1254      OnClick = popNoteMemoHTMLFormatClick
    7731255    end
    7741256    object Z11: TMenuItem
     
    9481430    LangData = {
    9491431      080066726D4E6F746573010200000001000000070043617074696F6E02000000
    950       080048656C7046696C65018D0000000D0073687050616765426F74746F6D0000
     1432      080048656C7046696C6501A20000000D0073687050616765426F74746F6D0000
    9511433      0700737074486F727A00000700706E6C4C65667400000800706E6C5269676874
    9521434      000008006C626C4E6F746573010100000003000000070043617074696F6E0009
     
    10861568      0000007B000000070043617074696F6E000B0074696D4175746F536176650000
    10871569      0B00646C6746696E645465787400000E00646C675265706C6163655465787400
    1088       00}
     1570      000D00706E6C48746D6C56696577657200000C00706E6C546578745772697465
     1571      01010000008D000000070043617074696F6E001500706F704E6F74654D656D6F
     1572      48544D4C466F726D617401010000008E000000070043617074696F6E000C0070
     1573      6E6C48544D4C577269746500000B00706E6C48544D4C4564697400000700546F
     1574      6F6C42617201010000008F000000070043617074696F6E000B006362466F6E74
     1575      4E616D6573010100000090000000040054657874000A006362466F6E7453697A
     1576      6501020000009200000005004974656D73910000000400546578740008006274
     1577      6E466F6E7473010100000093000000040048696E7400090062746E4974616C69
     1578      63010100000094000000040048696E7400070062746E426F6C64010100000095
     1579      000000040048696E74000C0062746E556E6465726C696E650101000000960000
     1580      00040048696E74000A0062746E42756C6C657473010100000097000000040048
     1581      696E74000A0062746E4E756D62657273010100000098000000040048696E7400
     1582      0C0062746E4C656674416C69676E010100000099000000040048696E74000E00
     1583      62746E43656E746572416C69676E01010000009A000000040048696E74000D00
     1584      62746E5269676874416C69676E01010000009B000000040048696E74000D0062
     1585      746E4D6F7265496E64656E7401010000009C000000040048696E74000D006274
     1586      6E4C657373496E64656E7401010000009D000000040048696E74000C0062746E
     1587      54657874436F6C6F7201010000009E000000040048696E74000C0062746E4261
     1588      636B436F6C6F7201010000009F000000040048696E7400}
    10891589  end
    10901590end
  • cprs/branches/tmg-cprs/CPRS-Chart/fNotes.pas

    r453 r541  
    1 //kt -- Modified with SourceScanner on 7/19/2007
     1//kt -- Modified with SourceScanner on 7/19/2007, also 8/09
    22unit fNotes;
    33{$O-}
     
    99  fHSplit, StdCtrls, ExtCtrls, Menus, ComCtrls, ORCtrls, ORFn, uConst, ORDtTm,
    1010  uPCE, ORClasses, fDrawers, ImgList, rTIU, uTIU, uDocTree, fRptBox, fPrintList,
    11   fNoteST, ORNet, fNoteSTStop, OleCtrls, SHDocVw, DKLang;
     11  MSHTML,TMGHTML2,ActiveX,  //kt added this line 8/09 for HTML editing
     12  fNoteST, ORNet, fNoteSTStop, OleCtrls, SHDocVw, DKLang, Buttons, ToolWin;
     13
     14type
     15  TEditModes = (emNone,emText,emHTML);        //kt 8/09
     16  TViewModes = (vmEdit,vmView,vmText,vmHTML); //kt 8/09
     17  TViewModeSet = Set of TViewModes;           //kt 8/09
     18const
     19  vmHTML_MODE : array [false..true] of TViewModes = (vmText,vmHTML); //kt 8/09
     20  emHTML_MODE : array [false..true] of TEditModes = (emText,emHTML); //kt 8/09
    1221
    1322type
     
    150159    mnuViewRemoteData: TMenuItem;
    151160    mnuViewPostings: TMenuItem;
     161    pnlHtmlViewer: TPanel;                 //kt 8/09
     162    pnlTextWrite: TPanel;                  //kt 8/09
     163    popNoteMemoHTMLFormat: TMenuItem;      //kt 8/09
     164    pnlHTMLWrite: TPanel;                  //kt 8/09
     165    pnlHTMLEdit: TPanel;                   //kt 8/09
     166    ToolBar: TToolBar;                     //kt 8/09
     167    cbFontNames: TComboBox;                //kt 8/09
     168    cbFontSize: TComboBox;                 //kt 8/09
     169    btnFonts: TSpeedButton;                //kt 8/09
     170    btnItalic: TSpeedButton;               //kt 8/09
     171    btnBold: TSpeedButton;                 //kt 8/09
     172    btnUnderline: TSpeedButton;            //kt 8/09
     173    btnBullets: TSpeedButton;              //kt 8/09
     174    btnNumbers: TSpeedButton;              //kt 8/09
     175    btnLeftAlign: TSpeedButton;            //kt 8/09
     176    btnCenterAlign: TSpeedButton;          //kt 8/09
     177    btnRightAlign: TSpeedButton;           //kt 8/09
     178    btnMoreIndent: TSpeedButton;           //kt 8/09
     179    btnLessIndent: TSpeedButton;           //kt 8/09
     180    btnTextColor: TSpeedButton;            //kt 8/09
     181    btnBackColor: TSpeedButton;            //kt 8/09
    152182    procedure mnuChartTabClick(Sender: TObject);
    153183    procedure lstNotesClick(Sender: TObject);
     
    222252    procedure memNewNoteKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    223253    procedure sptHorzCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
    224     procedure WebBrowser1DocumentComplete(Sender: TObject;   //kt added
    225       const pDisp: IDispatch; var URL: OleVariant);          //kt added
     254    //kt procedure WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);          //kt added
    226255    procedure popNoteMemoInsTemplateClick(Sender: TObject);
    227256    procedure popNoteMemoPreviewClick(Sender: TObject);
     
    235264    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
    236265      Y: Integer);
    237     procedure WebBrowser1CommandStateChange(Sender: TObject;
    238       Command: Integer; Enable: WordBool);   //kt
    239266    procedure memNewNoteKeyPress(Sender: TObject; var Key: Char);
    240267    procedure memNewNoteKeyUp(Sender: TObject; var Key: Word;
     
    245272    procedure ViewInfo(Sender: TObject);
    246273    procedure mnuViewInformationClick(Sender: TObject);
     274    procedure btnBackColorClick(Sender: TObject);    //kt 8/09
     275    procedure btnBoldClick(Sender: TObject);         //kt 8/09
     276    procedure btnBulletsClick(Sender: TObject);      //kt 8/09
     277    procedure btnCenterAlignClick(Sender: TObject);  //kt 8/09
     278    procedure btnFontsClick(Sender: TObject);        //kt 8/09
     279    procedure btnItalicClick(Sender: TObject);       //kt 8/09
     280    procedure btnLeftAlignClick(Sender: TObject);    //kt 8/09
     281    procedure btnLessIndentClick(Sender: TObject);   //kt 8/09
     282    procedure btnMoreIndentClick(Sender: TObject);   //kt 8/09
     283    procedure btnNumbersClick(Sender: TObject);      //kt 8/09
     284    procedure btnRightAlignClick(Sender: TObject);   //kt 8/09
     285    procedure btnTextColorClick(Sender: TObject);    //kt 8/09
     286    procedure btnUnderlineClick(Sender: TObject);    //kt 8/09
     287    procedure cbFontNamesChange(Sender: TObject);    //kt 8/09
     288    procedure cbFontSizeChange(Sender: TObject);     //kt 8/09
     289    procedure popNoteMemoHTMLFormatClick(Sender: TObject); //kt 8/09
    247290  private
    248291    FNavigatingTab : Boolean; //Currently Using tab to navigate
     
    256299    FImageFlag: TBitmap;
    257300    FEditNote: TEditNoteRec;
     301    FViewNote : TStringList;  //kt 8/09
     302    FWarmedUp : boolean;      //kt 8/09
    258303    FVerifyNoteTitle: Integer;
    259304    FDocList: TStringList;
     
    271316    LastAuthor: Int64;  //kt 6-1-05
    272317    LastAuthorName: string; //kt 6-1-05
     318    FHTMLEditMode : TEditModes;  //kt 7/09 This is the mode of the note being edited (even if not actively displayed)
     319    FViewMode : TViewModeSet;    //kt 7/09  This is the status of the display
    273320    procedure frmFramePnlPatientExit(Sender: TObject);
    274321    procedure frmDrawerPnlTemplatesButtonExit(Sender: TObject);
     
    307354    function SetNoteTreeLabel(AContext: TTIUContext): string;
    308355    procedure UpdateNoteAuthor(DocInfo: string);
     356    procedure SetHTMLEditMode(HTMLEditMode : boolean; Quiet : Boolean=false);  //kt
     357    procedure ToggleHTMLEditMode;                                              //kt
     358    procedure BroadcastImages(Note: TStrings);                                 //kt
     359    procedure ProperRepaint(Editing : Boolean);                                //kt
     360    procedure SetEditorFocus;                                                  //kt
     361    function  EditorHasText : boolean;                                         //kt
    309362  public
    310     HTMLfilename : string;   //kt added
     363    HtmlEditor : THtmlObj; //kt 8/09
     364    HtmlViewer : THtmlObj; //kt 8/09
     365    procedure SetDisplayToHTMLvsText(Mode :TViewModeSet; Lines : TStrings; ActivateOnly : boolean=False); //kt 8/09
    311366    function ActiveEditOf(AnIEN: Int64; ARequest: integer): Boolean;
    312367    function AllowContextChange(var WhyNot: string): Boolean; override;
     
    319374    procedure AssignRemForm;
    320375    property  OrderID: string read FOrderID;
     376    property  ViewMode :TViewModeSet read FViewMode;   //kt 8/09
    321377    procedure LstNotesToPrint;
     378    constructor Create(AOwner: TComponent); override;  //kt 8/09
     379    destructor Destroy; override;                      //kt 8/09
    322380  published
    323381    property Drawers: TFrmDrawers read GetDrawers; // Keep Drawers published
     
    339397     uAccessibleTreeView, uAccessibleTreeNode, fTemplateDialog, DateUtils,
    340398     StrUtils {//KT added 1-1-05},
    341      mshtml,  {//kt added 5-2-05}
    342      fImages, {//kt added 9-20-05}
     399     //fImages, {//kt added 9-20-05}
     400     fOptionsNotes, //kt 8/09
    343401     rHTMLTools;  {//kt added 5-27-05 for IsHTMLDocument}
    344402
     
    352410  NT_ACT_EDIT_NOTE = 4;
    353411  NT_ACT_ID_ENTRY  = 5;
     412
     413  VIEW_ACTIVATE_ONLY = true; //kt 8/09
    354414
    355415//TX_NEED_VISIT = 'A visit is required before creating a new progress note.';  <-- original line.  //kt 7/19/2007
     
    534594  uIDNotesActive: Boolean;
    535595
     596constructor TfrmNotes.Create(AOwner: TComponent);
     597//kt Added function 8/09
     598begin
     599  inherited Create(AOwner);
     600  FViewNote := TStringList.Create;
     601end;
     602
     603destructor TfrmNotes.Destroy;
     604//kt Added function 8/09
     605begin
     606  FViewNote.Free;
     607  FEditNote.Lines.Free; //kt
     608  inherited Destroy;
     609end;
     610
    536611
    537612{ TPage common methods --------------------------------------------------------------------- }
     
    578653    case BOOLCHAR[frmFrame.CCOWContextChanging] of
    579654      '1': begin
    580              if memNewNote.GetTextLen > 0 then
     655             if ((vmHTML in FViewMode) and (HTMLEditor.Text <> ''))                 //kt 8/09
     656               or ((not (vmHTML in FViewMode)) and (memNewNote.GetTextLen > 0 )) then begin  //kt
    581657//             WhyNot := WhyNot + 'A note in progress will be saved as unsigned.  '  <-- original line.  //kt 7/19/2007
    582658               WhyNot := WhyNot + DKLangConstW('fNotes_A_note_in_progress_will_be_saved_as_unsignedx') //kt added 7/19/2007
    583              else
     659             end else begin                                                         //kt
    584660//             WhyNot := WhyNot + 'An empty note in progress will be deleted.  ';  <-- original line.  //kt 7/19/2007
    585661               WhyNot := WhyNot + DKLangConstW('fNotes_An_empty_note_in_progress_will_be_deletedx'); //kt added 7/19/2007
     662             end;                                                                   //kt
    586663             Result := False;
    587664           end;
     
    649726  lstNotes.Clear;
    650727  memNote.Clear;
     728  HTMLViewer.Clear;   //kt
     729  HTMLEditor.Clear;   //kt
     730  FWarmedUp := false; //kt
     731  SetDisplayToHTMLvsText([vmText,vmView],nil,VIEW_ACTIVATE_ONLY); //kt
    651732  memPCEShow.Clear;
    652733  uPCEShow.Clear;
     
    774855    Addend       := 0;
    775856    {LastCosigner & LastCosignerName aren't cleared because they're used as default for next note.}
    776     Lines        := nil;
     857    //kt 8/09  Lines        := nil;
     858    if Assigned (Lines) then Lines.Clear;  //kt 8/09
    777859    PRF_IEN := 0;
    778860    ActionIEN := '';
     
    781863  txtSubject.Text := '';
    782864  if memNewNote <> nil then memNewNote.Clear; //CQ7012 Added test for nil
     865  HTMLEditor.Clear;  //kt 8/09
     866  HTMLViewer.Clear;  //kt 8/09
     867  FHTMLEditMode := emNone; //kt 8/09
    783868  timAutoSave.Enabled := False;
    784869  // clear the PCE object for editing
     
    795880  if(ShouldShow) then
    796881    sptVert.Top := memPCEShow.Top - sptVert.Height;
    797   memNote.Invalidate;
     882  if (vmHTML in FViewMode) then begin              //kt 8/09
     883    HTMLViewer.Invalidate;                         //kt 8/09
     884  end else begin                                   //kt 8/09
     885    memNote.Invalidate;
     886  end;                                             //kt 8/09
    798887end;
    799888
     
    10471136  x, WhyNot, DocInfo: string;
    10481137  tempPos : integer; //kt 6-1-05
     1138  Mode : TViewModeSet; //kt 8/09
     1139  BoilerplateIsHTML : boolean;//kt 8/09
    10491140
    10501141begin
     
    10571148  try
    10581149    ClearEditControls;
     1150    FEditNote.Lines.Free; //(done d/t full wipe-out on line below}  //kt 8/09
    10591151    FillChar(FEditNote, SizeOf(FEditNote), 0);  //v15.7
     1152    FEditNote.Lines := TStringList.Create; //Freed in Destructor    //kt 8/09
    10601153    with FEditNote do
    10611154    begin
     
    10741167          TitleName := '';
    10751168        end;
    1076       //DateTime     := FMNow;  //kt 6-1-05
    1077       DateTime     := Encounter.DateTime;  //kt 6-1-05
     1169      //DateTime     := FMNow;                    //kt 6-1-05
     1170      DateTime     := Encounter.DateTime;         //kt 6-1-05
    10781171      //kt begin changes -------------- 6-1-05
    10791172      if LastAuthor<>0 then begin
     
    11741267        FChanged := False;
    11751268        cmdChangeClick(Self); // will set captions, sign state for Changes
     1269        Mode := [vmEdit] + [vmHTML_MODE[fOptionsNotes.DefaultEditHTMLMode]];   //kt 8/09
     1270        SetDisplayToHTMLvsText(Mode, nil, VIEW_ACTIVATE_ONLY);                 // kt 8/09
    11761271        lstNotesClick(Self);  // will make pnlWrite visible
    11771272        if timAutoSave.Interval <> 0 then EnableAutosave := TRUE;
    1178         if txtSubject.Visible then txtSubject.SetFocus else memNewNote.SetFocus;
     1273        //kt 6/3/09  original --> if txtSubject.Visible then txtSubject.SetFocus else memNewNote.SetFocus;
     1274        if txtSubject.Visible then begin                          //kt 8/09
     1275          txtSubject.SetFocus;                                    //kt 8/09
     1276        end else begin                                            //kt 8/09
     1277          SetEditorFocus; //kt memNewNote.SetFocus;               //kt 8/09
     1278        end;                                                      //kt 8/09
    11791279      end else
    11801280      begin
     
    11951295      DocInfo := MakeXMLParamTIU(IntToStr(CreatedNote.IEN), FEditNote);
    11961296      ExecuteTemplateOrBoilerPlate(TmpBoilerPlate, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
    1197       memNewNote.Lines.Assign(TmpBoilerPlate);
     1297      //kt original --> memNewNote.Lines.Assign(TmpBoilerPlate);
     1298      BoilerplateIsHTML := rHTMLTools.IsHTML(TmpBoilerPlate.Text);    //kt 8/09
     1299      FEditNote.Lines.Assign(TmpBoilerPlate);                         //kt 8/09
     1300      if not ((vmHTML in FViewMode)) and BoilerplateIsHTML then begin //kt 8/09
     1301        FViewMode := FViewMode - [vmText] + [vmHTML];                 //kt 8/09
     1302      end;                                                            //kt 8/09
     1303      SetDisplayToHTMLvsText(FViewMode,FEditNote.Lines);              //kt 8/09
     1304      if (vmHTML in FViewMode) then begin                             //kt 8/09
     1305        HtmlEditor.MoveCaretToEnd;                                    //kt 8/09
     1306        Application.ProcessMessages;                                  //kt 8/09
     1307      end;                                                            //kt 8/09
    11981308      UpdateNoteAuthor(DocInfo);
    11991309      TmpBoilerPlate.Free;
     
    12041314  frmNotes.pnlWriteResize(Self);
    12051315end;
     1316
     1317
     1318procedure TfrmNotes.SetEditorFocus;
     1319//kt added function 8/09
     1320begin
     1321  try
     1322    if (vmHTML in FViewMode) then begin  //kt 8/09
     1323      HtmlEditor.SetFocus;               //kt 8/09
     1324    end else begin                       //kt 8/09
     1325      memNewNote.SetFocus;
     1326    end;                                 //kt 8/09
     1327  except
     1328    on E: Exception do begin
     1329      // ignore error.  Info in E
     1330    end;
     1331  end;
     1332end;
     1333
    12061334
    12071335procedure TfrmNotes.InsertAddendum;
     
    12901418      lstNotesClick(Self);  // will make pnlWrite visible
    12911419      if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True;
    1292       memNewNote.SetFocus;
     1420      SetEditorFocus;  //kt memNewNote.SetFocus;  //kt 8/09
    12931421    end else
    12941422    begin
     
    13071435  tmpNode: TTreeNode;
    13081436  x: string;
     1437  Mode : TViewModeSet; //kt
     1438
    13091439begin
    13101440  ClearEditControls;
     
    13131443  Changes.Add(CH_DOC, lstNotes.ItemID, GetTitleText(EditingIndex), '', CH_SIGN_YES);
    13141444  GetNoteForEdit(FEditNote, lstNotes.ItemIEN);
    1315   memNewNote.Lines.Assign(FEditNote.Lines);
     1445  Mode := [vmEdit] + [vmHTML_MODE[IsHTML(FEditNote.Lines) or (vmHTML in FViewMode)]]; //kt 8/09
     1446  SetDisplayToHTMLvsText(Mode,FEditNote.Lines);                                       //kt 8/09
     1447  //kt memNewNote.Lines.Assign(FEditNote.Lines);                                      //kt 8/09
    13161448  FChanged := False;
    13171449  if FEditNote.Title = TYP_ADDENDUM then
     
    13611493  lstNotesClick(Self);  // will make pnlWrite visible
    13621494  if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True;
    1363   memNewNote.SetFocus;
     1495  SetEditorFocus;    //kt memNewNote.SetFocus;  //kt 8/09
    13641496end;
    13651497
     
    13691501  UpdatedNote: TCreatedDoc;
    13701502  x: string;
     1503  EmptyNote : boolean; //kt
     1504
    13711505begin
    13721506  SetupVars;  //kt added 7/19/2007 to replace constants with vars.
    13731507  Saved := False;
    1374   if (memNewNote.GetTextLen = 0) or (not ContainsVisibleChar(memNewNote.Text)) then
    1375   begin
     1508  if not (vmHTML in FViewMode) then begin                         //kt 8/09
     1509    EmptyNote := (memNewNote.GetTextLen = 0)                      //kt 8/09
     1510                  or (not ContainsVisibleChar(memNewNote.Text));  //kt 8/09
     1511  end else begin                                                  //kt 8/09
     1512    EmptyNote := (HtmlEditor.GetTextLen = 0)                      //kt 8/09
     1513                  or (not ContainsVisibleChar(HtmlEditor.Text));  //kt 8/09
     1514  end;                                                            //kt 8/09
     1515  //kt 8/09 if (memNewNote.GetTextLen = 0) or (not ContainsVisibleChar(memNewNote.Text)) then
     1516  //kt 8/09  begin
     1517  if EmptyNote then begin
    13761518    lstNotes.ItemIndex := EditingIndex;
    13771519    x := lstNotes.ItemID;
     
    13951537  end;
    13961538  //ExpandTabsFilter(memNewNote.Lines, TAB_STOP_CHARS);
    1397   FEditNote.Lines    := memNewNote.Lines;
     1539  if FEditNote.Lines = nil then FEditNote.Lines := TStringList.Create; //kt
     1540  //kt 8/09 FEditNote.Lines    := memNewNote.Lines;
     1541  if (vmHTML in FViewMode) then begin                             //kt 8/09
     1542    SplitToArray(WrapHTML(HtmlEditor.HTMLText), FEditNote.Lines); //kt 8/09
     1543  end else begin                                                  //kt 8/09
     1544    FEditNote.Lines.Assign(memNewNote.Lines);                     //kt 8/09
     1545  end;                                                            //kt 8/09
    13981546  //FEditNote.Lines:= SetLinesTo74ForSave(memNewNote.Lines, Self);
    13991547  FEditNote.Subject  := txtSubject.Text;
     
    14171565    FNewIDChild := False;
    14181566    FChanged := False;
     1567    HTMLEditor.KeyStruck := false; //kt
    14191568  end else
    14201569  begin
     
    14381587begin
    14391588  inherited;
    1440   //kt --- Begin Modification 9-2005 kt
     1589  //kt --- Begin Modification 9-2005, 8/09 -------------
    14411590  CacheDir := ExtractFilePath(ParamStr(0))+ 'Cache'; //kt 9-05
    1442   if not DirectoryExists(CacheDir) then begin
    1443     CreateDir(CacheDir);
    1444   end;
    1445   HTMLfilename := CacheDir + '\html_note.html';   //kt 5-05
     1591  if not DirectoryExists(CacheDir) then CreateDir(CacheDir);
     1592  //kt HTMLfilename := CacheDir + '\html_note.html';   //kt 5-05
    14461593  LastAuthor :=0;  //kt 5-05
    14471594  LastAuthorName:='';  //kt 5-05
    1448   //kt --- End Modification 9-2005 kt
     1595  DesiredHTMLFontSize := 2;  //Used later to downsize during printing.
     1596  SetRegHTMLFontSize(DesiredHTMLFontSize);   //0=SMALLEST ... 4=LARGEST
     1597  //kt  Note: On creation, THtmlObj will remember Application.OnMessage.  But if
     1598  //          another object (say a prior THtmlObj) has become active and already
     1599  //          changed the handler, then there will be a problem.  So probably best
     1600  //          to create them all at one.  //kt
     1601  HtmlViewer := THtmlObj.Create(pnlHTMLViewer,Application);
     1602  HtmlEditor := THtmlObj.Create(pnlHTMLEdit,Application);
     1603  TWinControl(HtmlViewer).Parent:=pnlHTMLViewer;
     1604  TWinControl(HtmlViewer).Align:=alClient;
     1605  HtmlEditor.PrevControl := cmdPCE;
     1606  HtmlEditor.NextControl := cmdChange;
     1607  //Note: A 'loaded' function will initialize the THtmlObj's, but it can't be
     1608  //      done until after this constructor is done, and this TfrmNotes has been
     1609  //      assigned a parent.  So done elsewhere.
     1610  HtmlViewer.PopupMenu := popNoteMemo;
     1611  TWinControl(HtmlEditor).Parent:=pnlHTMLEdit;
     1612  TWinControl(HtmlEditor).Align:=alClient;
     1613  HtmlEditor.PopupMenu := popNoteMemo;
     1614  cbFontNames.Items.Assign(Screen.Fonts);
     1615  FViewMode := [vmView,vmText];
     1616  FHTMLEditMode := emNone;
     1617  HTMLViewer.BackgroundColor := ReadOnlyColor;
     1618  //kt --- End Modification 9-2005, 8/09 ------
    14491619  PageID := CT_NOTES;
    14501620  memNote.Color := ReadOnlyColor;
     
    14581628  frmDrawers.Align := alBottom;
    14591629  frmDrawers.RichEditControl := memNewNote;
     1630  frmDrawers.HTMLEditControl := HtmlEditor;       //kt 8/09
     1631  frmDrawers.HTMLModeSwitcher := SetHTMLEditMode; //kt 8/09
    14601632  frmDrawers.NewNoteButton := cmdNewNote;
    14611633  frmDrawers.Splitter := splDrawers;
     
    14681640  FDocList := TStringList.Create;
    14691641  TAccessibleTreeView.WrapControl(tvNotes);
     1642  RestoreRegHTMLFontSize;                         //kt, elh  8/09
    14701643end;
    14711644
     
    14751648  inherited;
    14761649  pnlRight.Refresh;
    1477   memNote.Repaint;
     1650  if (vmHTML in FViewMode) then begin //kt 8/09
     1651    HTMLViewer.Repaint;               //kt 8/09
     1652  end else begin                      //kt 8/09
     1653    memNote.Repaint
     1654  end;                                //kt 8/09
    14781655end;
    14791656
     
    14831660begin
    14841661  inherited;
     1662  //kt NOTE: I don't know how to do the equivalent for HTML.  Actually, I don't think it applies.
    14851663  LimitEditWidth(memNewNote, MAX_PROGRESSNOTE_WIDTH - 1);
    14861664
     
    14981676{ loads the text for the selected note or displays the editing panel for the selected note }
    14991677var
    1500   ImageList : TStringList;  //kt added 1/1/05
    1501   i       : integer;      //kt added 1/1/05
    1502 begin
    1503   inherited;
    1504   with lstNotes do if ItemIndex = -1 then Exit
    1505   else if ItemIndex = EditingIndex then
    1506   begin
    1507     pnlWrite.Visible := True;
    1508     pnlRead.Visible := False;
    1509     mnuViewDetail.Enabled    := False;
    1510     if (FEditNote.IDParent <> 0) and (not FNewIDChild) then
    1511       mnuActChange.Enabled     := False
    1512     else
    1513       mnuActChange.Enabled     := True;
    1514     mnuActLoadBoiler.Enabled := True;
    1515     UpdateReminderFinish;
    1516   end else
    1517   begin
    1518 //  StatusText('Retrieving selected progress note...');  <-- original line.  //kt 7/19/2007
    1519     StatusText(DKLangConstW('fNotes_Retrieving_selected_progress_notexxx')); //kt added 7/19/2007
    1520     Screen.Cursor := crAppStart;  //kt changed from crHourGlass; 1/1/05
    1521     //Screen.Cursor := crHourGlass;  //kt
    1522     pnlRead.Visible := True;
    1523     pnlWrite.Visible := False;
    1524     UpdateReminderFinish;
    1525     lblTitle.Caption := Piece(Piece(Items[ItemIndex], U, 8), ';', 1) + #9 + Piece(Items[ItemIndex], U, 2) + ', ' +
    1526                         Piece(Items[ItemIndex], U, 6) + ', ' + Piece(Piece(Items[ItemIndex], U, 5), ';', 2) +
    1527                         '  (' + FormatFMDateTime('mmm dd,yy@hh:nn', MakeFMDateTime(Piece(Items[ItemIndex], U, 3)))
    1528                         + ')';
    1529     lvNotes.Caption := lblTitle.Caption;
    1530     LoadDocumentText(memNote.Lines, ItemIEN);
    1531     memNote.SelStart := 0;
    1532     mnuViewDetail.Enabled    := True;
    1533     mnuViewDetail.Checked    := False;
    1534     mnuActChange.Enabled     := False;
    1535     mnuActLoadBoiler.Enabled := False;
    1536     Screen.Cursor := crDefault;
    1537     StatusText('');
    1538   end;
    1539   if(assigned(frmReminderTree)) then
    1540     frmReminderTree.EnableActions;
    1541 
    1542   //kt changed to following block 5/31/05
    1543   if IsHTMLDocument(MemNote.Lines) then begin
    1544     rHTMLTools.ActivateWebBrowser;
    1545   end else begin
    1546     rHTMLTools.ActivateMemo;
    1547   end;
    1548   //------end block --------
    1549 
     1678  Note      : TStrings;     //kt 6/09.  Will be pointer to FViewNote, or FEditNote.Lines
     1679  Editing   : boolean;      //kt 8/09
     1680  Mode      : TViewModeSet; //kt 8/09
     1681  IsHTML    : boolean;      //kt 8/09
     1682
     1683begin
     1684  inherited;
     1685  //kt 8/09  with lstNotes do if ItemIndex = -1 then Exit
     1686  //kt 8/09  else if ItemIndex = EditingIndex then
     1687
     1688  with lstNotes do begin                                                   //kt 8/09
     1689    if ItemIndex = -1 then Exit;                                           //kt 8/09
     1690    Editing := (ItemIndex = EditingIndex);                                 //kt 8/09
     1691    if Editing then begin                                                  //kt 8/09
     1692      if FEditNote.Lines = nil then FEditNote.Lines := TStringList.Create; //kt 8/09
     1693      Note := FEditNote.Lines;                                             //kt 8/09
     1694      {pnlWrite.Visible := True;                                           //kt 8/09
     1695      pnlRead.Visible := False; } //kt done in SetHTMLorTextEditor         //kt 8/09
     1696      mnuViewDetail.Enabled    := False;
     1697      if (FEditNote.IDParent <> 0) and (not FNewIDChild) then
     1698        mnuActChange.Enabled     := False
     1699      else
     1700        mnuActChange.Enabled     := True;
     1701      mnuActLoadBoiler.Enabled := True;
     1702      UpdateReminderFinish;
     1703      Mode := [vmEdit] + [vmHTML_MODE[(FHTMLEditMode=emHTML)]];            //kt 8/09
     1704      SetDisplayToHTMLvsText(Mode,FEditNote.Lines,VIEW_ACTIVATE_ONLY);     //kt 8/09
     1705      FWarmedUp := true;                                                   //kt 8/09
     1706    end else begin
     1707  //  StatusText('Retrieving selected progress note...');  <-- original line.  //kt 7/19/2007
     1708      StatusText(DKLangConstW('fNotes_Retrieving_selected_progress_notexxx')); //kt added 7/19/2007
     1709      Screen.Cursor := crAppStart;  //kt changed from crHourGlass; 1/1/05
     1710      //kt 8/09  pnlRead.Visible := True;
     1711      //kt 8/09  pnlWrite.Visible := False;
     1712      UpdateReminderFinish;
     1713      lblTitle.Caption := Piece(Piece(Items[ItemIndex], U, 8), ';', 1) + #9 + Piece(Items[ItemIndex], U, 2) + ', ' +
     1714                          Piece(Items[ItemIndex], U, 6) + ', ' + Piece(Piece(Items[ItemIndex], U, 5), ';', 2) +
     1715                          '  (' + FormatFMDateTime('mmm dd,yy@hh:nn', MakeFMDateTime(Piece(Items[ItemIndex], U, 3)))
     1716                          + ')';
     1717      lvNotes.Caption := lblTitle.Caption;
     1718      //kt 8/09 LoadDocumentText(memNote.Lines, ItemIEN);
     1719      LoadDocumentText(FViewNote, ItemIEN);  //kt 8/09
     1720      Note := FViewNote;                     //kt 8/09
     1721      memNote.SelStart := 0;
     1722      mnuViewDetail.Enabled    := True;
     1723      mnuViewDetail.Checked    := False;
     1724      mnuActChange.Enabled     := False;
     1725      mnuActLoadBoiler.Enabled := False;
     1726      Screen.Cursor := crDefault;
     1727      StatusText('');
     1728      IsHTML := rHTMLTools.IsHTML(FViewNote);            //kt 8/09
     1729      Mode := [vmView] + [vmHTML_MODE[IsHTML]];          //kt 8/09
     1730      SetDisplayToHTMLvsText(Mode,FViewNote);            //kt 8/09
     1731      if not FWarmedUp and IsHTML then begin             //kt 8/09
     1732        FWarmedUp := true;                               //kt 8/09
     1733        //First HTML page won't display without this...  //kt 8/09
     1734        SetDisplayToHTMLvsText(Mode,FViewNote);          //kt 8/09
     1735      end;                                               //kt 8/09
     1736    end;
     1737  end;  //kt 8/09
     1738
     1739  if(assigned(frmReminderTree)) then frmReminderTree.EnableActions;
    15501740  //DisplayPCE;    //kt 5-31-05 (moved down below)
    15511741  pnlRight.Refresh;
    1552   memNewNote.Repaint;
    1553   memNote.Repaint;
     1742  ProperRepaint(Editing); //kt 8/09
     1743  //kt 8/09 memNewNote.Repaint;
     1744  //kt 8/09 memNote.Repaint;
    15541745  NotifyOtherApps(NAE_REPORT, 'TIU^' + lstNotes.ItemID);
    1555   DisplayPCE;   //kt 5-31-05 (move down from above)
     1746  //kt RESTORE LATER... frmImages.NewNoteSelected(Editing);  //kt 9/05
     1747  DisplayPCE;                          //kt 5-31-05 (move down from above)
     1748  BroadcastImages(Note);               //kt 8/09
    15561749
    15571750  //-----------------------------
    1558   frmImages.NewNoteSelected(lstNotes.ItemIndex=EditingIndex);  //kt added 9-20-05
    1559   //kt added the following block:  1/1/05
     1751  //kt RESTORE LATER... frmImages.NewNoteSelected(lstNotes.ItemIndex=EditingIndex);  //kt added 9-20-05
     1752end;
     1753
     1754procedure TfrmNotes.ProperRepaint(Editing : Boolean);
     1755//kt Added function 8/09
     1756begin
     1757  if Editing then begin
     1758    if (vmHTML in FViewMode) then begin
     1759      HtmlEditor.Repaint;
     1760    end else begin
     1761      memNewNote.Repaint;
     1762    end;
     1763  end else begin
     1764    if (vmHTML in FViewMode) then begin
     1765      HtmlViewer.Repaint;
     1766    end else begin
     1767      memNote.Repaint;
     1768    end;
     1769  end;
     1770  Application.ProcessMessages;
     1771end;
     1772
     1773procedure TfrmNotes.BroadcastImages(Note: TStrings);
     1774//kt added function 8/09
     1775var
     1776  ImageList : TStringList;
     1777  i         : integer;
     1778begin
    15601779  ImageList := TStringList.Create;
    1561   if rHTMLTools.CheckForImageLink(memNote.Lines, ImageList) then begin
     1780  if rHTMLTools.CheckForImageLink(Note, ImageList) then begin
    15621781    for i:= 0 to ImageList.Count-1 do begin
    15631782      NotifyOtherApps(NAE_REPORT, 'IMAGE^' + ImageList.Strings[i]);
     
    15651784  end;
    15661785  ImageList.Free;
    1567   //kt end of addition 1/1/05
    1568   //-----------------------------
     1786end;
     1787
     1788function TfrmNotes.EditorHasText : boolean;
     1789//kt added function  8/09
     1790begin
     1791  if (vmHTML in FViewMode) then begin
     1792    Result := (HTMLViewer.Text <> '');
     1793  end else begin
     1794    Result := (memNote.Lines.Count > 0);
     1795  end;
    15691796end;
    15701797
     
    15901817      PCEObj := nil;
    15911818      AnIEN := lstNotes.ItemIEN;
    1592       if (AnIEN <> 0) and (memNote.Lines.Count > 0) then
     1819      //kt 8/09 if (AnIEN <> 0) and (memNote.Lines.Count > 0) then
     1820      if (AnIEN <> 0) and EditorHasText then                          //kt 8/09
    15931821      begin
    15941822        ActOnDocument(ActionSts, AnIEN, 'VIEW');
     
    16501878  begin
    16511879    ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
    1652     memNewNote.Lines.Assign(BoilerText);
     1880    SetDisplayToHTMLvsText([vmHTML,vmEdit],BoilerText); //kt 8/09
     1881    //kt  8/09  memNewNote.Lines.Assign(BoilerText);
    16531882    UpdateNoteAuthor(DocInfo);
    16541883    FChanged := False;
     
    16611890  BoilerText := TStringList.Create;
    16621891  try
    1663     NoteEmpty := memNewNote.Text = '';
     1892    if (vmHTML in FViewMode) then begin           //kt 8/09
     1893      NoteEmpty := (HTMLEditor.Text = '');        //kt 8/09
     1894    end else begin                                //kt 8/09
     1895      NoteEmpty := memNewNote.Text = '';
     1896    end;                                          //kt 8/09
    16641897    LoadBoilerPlate(BoilerText, FEditNote.Title);
    16651898    if (BoilerText.Text <> '') or
     
    16731906        1: begin
    16741907             ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
    1675              memNewNote.Lines.AddStrings(BoilerText);  // append
     1908             if (vmHTML in FViewMode) then begin                           //kt 8/09
     1909               HTMLEditor.Text := HTMLEditor.Text + Text2HTML(BoilerText); //kt 8/09
     1910             end else begin                                                //kt 8/09
     1911               memNewNote.Lines.AddStrings(BoilerText);  // append
     1912             end;                                                          //kt 8/09
    16761913             UpdateNoteAuthor(DocInfo);
    16771914           end;
     
    16871924          if not NoteEmpty then
    16881925//            if not FChanged and (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES)
    1689             if (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES)
    1690               then memNewNote.Lines.Clear;
     1926            if (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES) then begin
     1927              if (vmHTML in FViewMode) then begin        //kt 8/09
     1928                HTMLEditor.Clear;                        //kt 8/09
     1929              end else begin                             //kt 8/09
     1930                memNewNote.Lines.Clear;
     1931              end;                                       //kt 8/09
     1932            end;
    16911933        end;
    16921934    end; {if BoilerText.Text <> ''}
     
    17832025begin
    17842026  inherited;
     2027  //kt 8/09  NOTE: the equivalent functionality for HTML is HTMLEditor.Keystruck.  Don't have to set here.
    17852028  FChanged := True;
    17862029end;
     
    17982041var
    17992042  ErrMsg: string;
    1800 begin
    1801   if (EditingIndex > -1) and FChanged then
     2043  Changed : boolean; //kt 8/09
     2044begin
     2045  Changed := false;                               //kt 8/09
     2046  if (vmHTML in FViewMode) then begin             //kt 8/09
     2047    Changed := HTMLEditor.KeyStruck;              //kt 8/09
     2048  end else begin                                  //kt 8/09
     2049    Changed := FChanged;                          //kt 8/09
     2050  end;                                            //kt 8/09
     2051  //kt 8/09 if (EditingIndex > -1) and FChanged then
     2052  if (EditingIndex > -1) and Changed then         //kt  8/09
    18022053  begin
    18032054//  StatusText('Autosaving note...');  <-- original line.  //kt 7/19/2007
     
    18062057    timAutoSave.Enabled := False;
    18072058    try
     2059      if (vmHTML in FViewMode) then begin                                        //kt
     2060        rHTMLTools.SplitToArray (HTMLEditor.HTMLText, FEditNote.Lines);          //kt
     2061        SetText(ErrMsg, FEditNote.Lines, lstNotes.GetIEN(EditingIndex),Suppress);//kt
     2062      end else begin                                                             //kt
    18082063      SetText(ErrMsg, memNewNote.Lines, lstNotes.GetIEN(EditingIndex), Suppress);
     2064      end;                                                                       //kt
    18092065    finally
    18102066      timAutoSave.Enabled := True;
    18112067    end;
    18122068    FChanged := False;
     2069    HTMLEditor.KeyStruck := false; //kt
    18132070    StatusText('');
    18142071  end;
     
    22592516    if tvNotes.Selected <> nil then tvNotesChange(Self, tvNotes.Selected) else
    22602517    begin*)
     2518      FHTMLEditMode := emNone; //kt 8/09
    22612519      pnlWrite.Visible := False;
    22622520      pnlRead.Visible := True;
     
    25302788
    25312789procedure TfrmNotes.popNoteMemoPopup(Sender: TObject);
     2790const FORMAT_MODE : array[false..true] of string = ('fNotes_Formatted_Text','fNotes_Plain_Text');  //kt 8/09
    25322791begin
    25332792  inherited;
     
    25452804  end else
    25462805  begin
     2806    popNoteMemoHTMLFormat.Enabled := False;  //kt 8/09
    25472807    popNoteMemoCut.Enabled      := False;
    25482808    popNoteMemoCopy.Enabled     := False;
     
    25502810    popNoteMemoTemplate.Enabled := False;
    25512811  end;
     2812  popNoteMemoHTMLFormat.Caption := DKLangConstW('fNotes_Change_Edit_Mode_To') + ' ' + //kt 8/09
     2813                                   DKLangConstW(FORMAT_MODE[(vmHTML in FViewMode)]);  //kt 8/09
     2814  popNoteMemoHTMLFormat.Enabled := pnlWrite.Visible;                                  //kt 8/09
    25522815  if pnlWrite.Visible then
    25532816  begin
    2554     popNoteMemoSpell.Enabled    := True;
    2555     popNoteMemoGrammar.Enabled  := True;
    2556     popNoteMemoReformat.Enabled := True;
     2817    //kt 8/09 popNoteMemoSpell.Enabled      := True;
     2818    //kt 8/09 popNoteMemoGrammar.Enabled    := True;
     2819    //kt 8/09 popNoteMemoReformat.Enabled := True;
     2820    popNoteMemoSpell.Enabled      := not pnlHTMLWrite.Visible; //kt 8/09
     2821    popNoteMemoGrammar.Enabled    := not pnlHTMLWrite.Visible; //kt 8/09
     2822    popNoteMemoReformat.Enabled   := not pnlHTMLWrite.Visible; //kt 8/09
    25572823    popNoteMemoReplace.Enabled  := (FEditCtrl.GetTextLen > 0);
    25582824    popNoteMemoPreview.Enabled  := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected);
     
    25672833    popNoteMemoInsTemplate.Enabled  := False;
    25682834  end;
     2835end;
     2836
     2837(*//kt 8/09  NOTICE:
     2838  On the form, popNoteMenu was edited to add a new item as below
     2839  popNoteMemoHTMLFormat : TMenuItem
     2840  Captions: ~ Edit as Formatted Text
     2841  OnClick -- popNoteMemoHTMLFormatClick
     2842*)
     2843
     2844procedure TfrmNotes.popNoteMemoHTMLFormatClick(Sender: TObject);
     2845//kt added function  8/09
     2846begin
     2847  inherited;
     2848  ToggleHTMLEditMode;
    25692849end;
    25702850
     
    26982978      StatusText(DKLangConstW('fNotes_Retrieving_progress_note_detailsxxx')); //kt added 7/19/2007
    26992979      Screen.Cursor := crAppStart;  //kt, was crHourGlass;
    2700       LoadDetailText(memNote.Lines, lstNotes.ItemIEN);
     2980      //kt LoadDetailText(memNote.Lines, lstNotes.ItemIEN);
     2981      LoadDetailText(FViewNote, lstNotes.ItemIEN);  //kt 8/09
     2982      SetDisplayToHTMLvsText(FViewMode,FViewNote);  //kt 8/09
    27012983      Screen.Cursor := crDefault;
    27022984      StatusText('');
    27032985      memNote.SelStart := 0;
    2704       memNote.Repaint;
     2986      if not (vmHTML in FViewMode) then  //kt 8/09
     2987        memNote.Repaint;
    27052988    end
    27062989  else
    27072990    lstNotesClick(Self);
    2708   SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0);
     2991  if (vmHTML in FViewMode) then begin                        //kt 8/09
     2992    SendMessage(HTMLViewer.Handle, WM_VSCROLL, SB_TOP, 0);   //kt 8/09
     2993  end else begin                                             //kt 8/09
     2994    SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0);
     2995  end;                                                       //kt 8/09
    27092996end;
    27102997
     
    27203007  begin
    27213008    FSilent := True;
    2722     if memNewNote.GetTextLen > 0 then SaveCurrentNote(Saved)
     3009    //kt 8/09 if memNewNote.GetTextLen > 0 then SaveCurrentNote(Saved)
     3010    if EditorHasText then SaveCurrentNote(Saved)  //kt 8/09
    27233011    else
    27243012    begin
     
    29683256  lvNotes.Items.Clear;
    29693257  memNote.Clear;
     3258  HTMLViewer.Clear; //kt 8/09
    29703259  tvNotes.FullCollapse;
    29713260  tvNotes.Selected := tvNotes.TopItem;
     
    30413330  //kt note: The Images tab will delete all files in .\Cache, which
    30423331  //         might include HTMLfilename.  No harm if already deleted.
    3043   DeleteFile(HTMLfilename);  //kt added 5-2-05
     3332  //kt 8/09 DeleteFile(HTMLfilename);  //kt added 5-2-05
    30443333  TAccessibleTreeView.UnwrapControl(tvNotes);
    30453334  FDocList.Free;
    30463335  FImageFlag.Free;
    30473336  KillDocTreeObjects(tvNotes);
     3337  HtmlEditor.Free; //kt 6/7/09
     3338  HtmlViewer.Free; //kt 6/7/09
    30483339  inherited;
    30493340end;
     
    30563347procedure TfrmNotes.AssignRemForm;
    30573348begin
     3349  //kt 8/09 ReminderDialog interaction has not yet been debugged with HTML formatted text.
    30583350  with RemForm do
    30593351  begin
     
    30653357    Drawers := frmDrawers;
    30663358    NewNoteRE := memNewNote;
     3359    NewNoteHTMLE := HTMLEditor;  //kt
    30673360    NoteList := lstNotes;
    30683361  end;
     
    30933386    uChanging := True;
    30943387    RedrawSuspend(memNote.Handle);
     3388    RedrawSuspend(HTMLViewer.Handle); //kt 8/09
    30953389    RedrawSuspend(lvNotes.Handle);
    30963390    tvNotes.Items.BeginUpdate;
     
    31013395    lvNotes.Items.Clear;
    31023396    memNote.Clear;
     3397    HTMLViewer.Clear;                 //kt 8/09
    31033398    memNote.Invalidate;
    31043399    lblTitle.Caption := '';
     
    32173512          end;
    32183513        memNote.Clear;
     3514        HTMLViewer.Clear; //kt 8/09
    32193515        with lvNotes do
    32203516          begin
     
    32403536      end;
    32413537  finally
    3242     RedrawActivate(memNote.Handle);
     3538    //kt NOTE: Is this enough??
     3539    if (vmHTML in FViewMode) then begin   //kt 8/09
     3540      RedrawActivate(HtmlViewer.Handle);  //kt 8/09
     3541    end else begin                        //kt 8/09
     3542      RedrawActivate(memNote.Handle);
     3543    end;                                  //kt 8/09
    32433544    RedrawActivate(lvNotes.Handle);
    32443545    tmpList.Free;
     
    32643565  i: integer;
    32653566  WhyNot: string;
     3567  Mode : TViewModeSet; //kt 8/09
    32663568begin
    32673569  if uChanging then Exit;
     
    32723574    begin
    32733575      memNote.Clear;
     3576      HTMLViewer.Clear; //kt 8/09
    32743577      if Selected = nil then Exit;
    32753578      if uIDNotesActive then
     
    32923595      RedrawSuspend(lvNotes.Handle);
    32933596      RedrawSuspend(memNote.Handle);
     3597      RedrawSuspend(HTMLViewer.Handle); //kt 8/09
    32943598      popNoteListExpandSelected.Enabled := Selected.HasChildren;
    32953599      popNoteListCollapseSelected.Enabled := Selected.HasChildren;
     
    33543658                ShowPCEControls(False);
    33553659              end;
    3356           pnlWrite.Visible := False;
    3357           pnlRead.Visible := True;
     3660          //kt 8/09
     3661          //kt  NOTE: At this point the list has changed.  But what is the new note-to-view's format?
     3662          //          We can't just use FViewMode.  Because that just states what mode was used on the last note.
     3663          Mode := [vmView] + [vmHTML_MODE[vmHTML in FViewMode]]; //kt 8/09
     3664          SetDisplayToHTMLvsText(Mode,nil,VIEW_ACTIVATE_ONLY);   //kt 8/09
     3665          //kt 8/09 pnlWrite.Visible := False;
     3666          //kt 8/09 pnlRead.Visible := True;
    33583667          //  uncommented next 4 lines in v17.5  (RV)
    33593668          //-----------------------------
     
    33683677        begin
    33693678          memNote.Clear;
     3679          HTMLViewer.Clear; //kt 8/09
    33703680          lvNotes.Visible := False;
    33713681          lstNotes.SelectByID(Piece(x, U, 1));
    33723682          lstNotesClick(Self);
    3373           SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0);
     3683          if (vmHTML in FViewMode) then begin                        //kt 8/09
     3684            SendMessage(HTMLViewer.Handle, WM_VSCROLL, SB_TOP, 0);   //kt 8/09
     3685          end else begin                                             //kt 8/09
     3686            SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0);
     3687          end;                                                       //kt 8/09
    33743688        end;
    33753689      SendMessage(tvNotes.Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
    33763690      RedrawActivate(lvNotes.Handle);
    3377       RedrawActivate(memNote.Handle);
     3691      if (vmHTML in FViewMode) then begin           //kt 8/09
     3692        RedrawActivate(HtmlViewer.Handle);          //kt 8/09
     3693      end else begin                                //kt 8/09
     3694        RedrawActivate(memNote.Handle);
     3695      end;                                          //kt 8/09
    33783696    end;
    33793697end;
     
    35993917      lstNotes.SelectByID(Item.SubItems[5]);
    36003918      lstNotesClick(Self);
    3601       SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0);
     3919      if (vmHTML in FViewMode) then begin                        //kt 8/09
     3920        SendMessage(HTMLViewer.Handle, WM_VSCROLL, SB_TOP, 0);   //kt 8/09
     3921      end else begin                                             //kt 8/09
     3922        SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0);
     3923      end;                                                       //kt 8/09
    36023924    end;
    36033925end;
     
    39004222end;
    39014223
     4224(*
    39024225//kt 5-2-05 added following function (initially copied from fReports.pas)
    39034226procedure TfrmNotes.WebBrowser1DocumentComplete(Sender: TObject;
     
    39204243  }
    39214244end;
    3922 
     4245*)
    39234246
    39244247procedure TfrmNotes.popNoteMemoInsTemplateClick(Sender: TObject);
     
    40754398end;
    40764399
     4400procedure TfrmNotes.SetHTMLEditMode(HTMLEditMode : boolean; Quiet : boolean);
     4401//kt added function 7/09
     4402var   Mode      : TViewModeSet; //kt
     4403const HTML_MODE_S : Array[false..true] of string[16] = ('PLAIN','FORMATTED');
     4404begin
     4405  if FEditNote.Lines = nil then FEditNote.Lines := TStringList.Create; //kt
     4406  if HTMLEditMode then begin
     4407    if (FViewMode = [vmHTML,vmEdit]) then exit; //no change needed.
     4408    FEditNote.Lines.Assign(memNewNote.Lines);
     4409  end else begin
     4410    if (FViewMode = [vmText,vmEdit]) then exit; //no change needed.
     4411    if HtmlEditor.GetTextLen > 0 then begin
     4412      if MessageDlg('Do you want to convert this note to PLAIN TEXT?'+#10#13+
     4413                  '(May cause loss of formatting information.)',mtWarning, mbOKCancel,0) <> mrOK then begin
     4414        exit;
     4415      end;
     4416    end;
     4417    FEditNote.Lines.Text := HTMLEditor.Text;
     4418  end;
     4419  Mode := [vmEdit] + [vmHTML_MODE[HTMLEditMode]]; //kt
     4420  SetDisplayToHTMLvsText(Mode,FEditNote.Lines);
     4421  if not Quiet then begin
     4422    if MessageDlg('Start new notes in '+HTML_MODE_S[HTMLEditMode]+' TEXT by default?',mtConfirmation,[mbYES,mbNO],0) = mrYES then begin
     4423      fOptionsNotes.SetDefaultEditHTMLMode(HTMLEditMode);
     4424    end;
     4425  end;
     4426end;
     4427
     4428procedure TfrmNotes.ToggleHTMLEditMode;
     4429//kt added function 6/09
     4430var NewHTMLMode: boolean;
     4431begin
     4432  if not (vmEdit in FViewMode) then exit;  //quit if not in edit mode
     4433  NewHTMLMode := not (vmHTML in FViewMode);
     4434  SetHTMLEditMode(NewHTMLMode);
     4435end;
     4436
     4437
     4438procedure TfrmNotes.SetDisplayToHTMLvsText(Mode : TViewModeSet;
     4439                                           Lines : TStrings;
     4440                                           ActivateOnly : boolean {default=False});
     4441//kt added function 7/09
     4442//If ActivateOnly=True, then the visibility is set, but the control is not filled with text.
     4443
     4444type
     4445  TPanelVisibilityMode = (pvmReadMode, pvmWriteMode);  //kt
     4446
     4447  procedure SetPanelVisibility(Mode: TPanelVisibilityMode; HTMLMode : boolean);
     4448
     4449    procedure SetpnlReadVisibility(Visible : boolean; HTMLMode : boolean);
     4450    begin
     4451      pnlRead.Visible := Visible;
     4452      if Visible then begin
     4453        memNote.Visible := not HTMLMode;
     4454        memNote.TabStop := not HTMLMode;
     4455        pnlHTMLViewer.Visible := HTMLMode;
     4456        HTMLViewer.Visible := HTMLMode;
     4457        if HTMLMode then begin
     4458          HtmlViewer.BringToFront;
     4459        end else begin
     4460          MemNote.BringToFront;
     4461        end;
     4462      end else begin
     4463        memNote.Visible := false;
     4464        memNote.TabStop := false;
     4465        pnlHTMLViewer.Visible := false;
     4466        HTMLViewer.Visible := false;
     4467      end;
     4468    end; {SetDisplayToHTMLvsText.SetPanelVisibility.SetpnlReadVisibility}
     4469
     4470    procedure SetpnlWriteVisibility(Visible : boolean; HTMLMode : boolean);
     4471    begin
     4472      pnlWrite.Visible := Visible;
     4473      if Visible then begin
     4474        pnlHTMLWrite.Visible := HTMLMode;
     4475        pnlHTMLEdit.Visible := HTMLMode;
     4476        HTMLEditor.Visible := HTMLMode;
     4477        pnlTextWrite.Visible := not HTMLMode;
     4478        MemNewNote.Visible := not HTMLMode;
     4479        if HTMLMode then begin
     4480          HTMLEditor.BringToFront;
     4481        end else begin
     4482          MemNewNote.BringToFront;
     4483        end;
     4484      end else begin
     4485        pnlHTMLWrite.Visible := false;
     4486        pnlHTMLEdit.Visible := false;
     4487        HTMLEditor.Visible := false;
     4488        pnlTextWrite.Visible := false;
     4489        memNewNote.Visible := false;
     4490      end;
     4491    end; {SetDisplayToHTMLvsText.SetPanelVisibility.SetpnlWriteVisibility}
     4492
     4493  begin {SetDisplayToHTMLvsText.SetPanelVisibility}
     4494    SetpnlReadVisibility ((Mode=pvmReadMode), HTMLMode);
     4495    SetpnlWriteVisibility((Mode=pvmWriteMode),HTMLMode);
     4496    Application.ProcessMessages;
     4497  end; {SetDisplayToHTMLvsText.SetPanelVisibility}
     4498
     4499  procedure SetHTMLorTextEditor(HTMLEditMode : boolean;
     4500                                Lines : TStrings;
     4501                                ActivateOnly : boolean {default=False});
     4502    procedure ActivateHtmlEditor(Lines : TStrings);
     4503    var HTMLText : string;
     4504    begin
     4505      HtmlEditor.Editable := true;
     4506      if ActivateOnly=false then begin
     4507        if Lines <> nil then begin
     4508          if rHTMLTools.IsHTML(Lines) then begin
     4509            HTMLText := Lines.Text;
     4510          end else begin
     4511            HTMLText := Text2HTML(Lines);
     4512            if HTMLText='' then HTMLText := ' ';
     4513          end;
     4514        end else HTMLText := ' ';
     4515        HtmlEditor.HTMLText := HTMLText;
     4516        HTMLEditor.KeyStruck := false;
     4517      end;
     4518    end; {SetDisplayToHTMLvsText.SetHTMLorTextEditor.ActivateHtmlEditor}
     4519
     4520    procedure ActiveMemoEditor(Lines : TStrings);
     4521    begin
     4522      if ActivateOnly=false then begin
     4523        memNewNote.Lines.Assign(Lines); //kt new
     4524      end;
     4525      //kt HtmlEditor.Active := false; //stop intercepting OnMessages
     4526      HtmlEditor.Clear;
     4527    end; {SetDisplayToHTMLvsText.SetHTMLorTextEditor.ActiveMemoEditor}
     4528
     4529  begin {SetDisplayToHTMLvsText.SetHTMLorTextEditor}
     4530    FHTMLEditMode := emHTML_MODE[HTMLEditMode];
     4531    FViewMode := [vmEdit] + [vmHTML_MODE[HTMLEditMode]];
     4532    SetPanelVisibility(pvmWriteMode,HTMLEditMode);
     4533    pnlRight.Repaint; //kt TEMP
     4534    if HTMLEditMode then begin
     4535      ActivateHtmlEditor(Lines);
     4536    end else begin
     4537      ActiveMemoEditor(Lines);
     4538    end;
     4539    pnlRight.Repaint; //kt TEMP
     4540  end; {SetDisplayToHTMLvsText.SetHTMLorTextEditor}
     4541
     4542  procedure SetHTMLorTextViewer(HTMLViewMode : boolean;
     4543                                Lines : TStrings;
     4544                                ActivateOnly : boolean); //kt
     4545  //Set forms such that either HTML Viewer is visible, or standard edit window.
     4546    procedure ActivateHtmlViewer(Lines : TStrings);
     4547    begin
     4548      with frmNotes do begin
     4549        //ScanForSubs(MemNote.Lines);
     4550        pnlHtmlViewer.Visible := true;
     4551        //memNote.Visible := false;
     4552        //memNote.TabStop := false;
     4553        HtmlViewer.BringToFront;
     4554        if ActivateOnly=False then begin
     4555          FixHTML(Lines);
     4556          HtmlViewer.HTMLText := Lines.Text;
     4557        end;
     4558        HtmlViewer.Editable := false;
     4559        HtmlViewer.BackgroundColor := clCream;
     4560        HtmlViewer.TabStop := true;
     4561        RedrawActivate(HtmlViewer.Handle);
     4562      end;
     4563    end; {SetDisplayToHTMLvsText.SetHTMLorTextViewer.ActivateHtmlViewer}
     4564
     4565    procedure ActivateMemoViewer(Lines : TStrings);
     4566    begin
     4567      with frmNotes do begin
     4568        pnlHtmlViewer.Visible := false;
     4569        HtmlViewer.Clear;
     4570        //HtmlEditor.Clear;  //don't this here.  Only clear in ClearEditControls...
     4571        HtmlViewer.TabStop := false;
     4572        if ActivateOnly=False then memNote.Lines.Assign(Lines);   //new
     4573        memNote.Visible := true;
     4574        memNote.TabStop := true;
     4575        memNote.BringToFront;
     4576        RedrawActivate(memNote.Handle);
     4577      end;
     4578    end; {SetDisplayToHTMLvsText.SetHTMLorTextViewer.ActivateMemoViewer}
     4579
     4580  begin {SetHTMLorTextViewer}
     4581    FViewMode := [vmView] + [vmHTML_MODE[HTMLViewMode]];
     4582    SetPanelVisibility(pvmReadMode,HTMLviewMode);
     4583    //pnlRight.Repaint; //kt TEMP
     4584    if HTMLViewMode then begin
     4585      ActivateHtmlViewer(Lines);
     4586    end else begin
     4587      ActivateMemoViewer(Lines);
     4588      HtmlViewer.Clear;
     4589    end;
     4590    pnlRight.Repaint; //kt TEMP
     4591  end; {SetDisplayToHTMLvsText.SetHTMLorTextViewer}
     4592
     4593begin {SetDisplayToHTMLvsText}
     4594  if vmEdit in Mode then begin
     4595    SetHTMLorTextEditor((vmHTML in Mode),Lines,ActivateOnly);
     4596  end else begin
     4597    SetHTMLorTextViewer((vmHTML in Mode),Lines,ActivateOnly);
     4598  end;
     4599end; {SetDisplayToHTMLvsText}
     4600
     4601procedure TfrmNotes.btnBoldClick(Sender: TObject);
     4602//kt added function
     4603begin
     4604  inherited;
     4605  HtmlEditor.ToggleBold;
     4606end;
     4607
     4608procedure TfrmNotes.btnItalicClick(Sender: TObject);
     4609//kt added function
     4610begin
     4611  inherited;
     4612  HtmlEditor.ToggleItalic;
     4613end;
     4614
     4615procedure TfrmNotes.btnLessIndentClick(Sender: TObject);
     4616//kt added function
     4617begin
     4618  inherited;
     4619  HtmlEditor.Outdent;
     4620end;
     4621
     4622procedure TfrmNotes.btnMoreIndentClick(Sender: TObject);
     4623//kt added function
     4624begin
     4625  inherited;
     4626  HtmlEditor.Indent;
     4627end;
     4628
     4629procedure TfrmNotes.btnRightAlignClick(Sender: TObject);
     4630//kt added function
     4631begin
     4632  inherited;
     4633  HtmlEditor.AlignRight;
     4634end;
     4635
     4636procedure TfrmNotes.btnCenterAlignClick(Sender: TObject);
     4637//kt added function
     4638begin
     4639  inherited;
     4640  HtmlEditor.AlignCenter;
     4641end;
     4642
     4643procedure TfrmNotes.btnLeftAlignClick(Sender: TObject);
     4644//kt added function
     4645begin
     4646  inherited;
     4647  HtmlEditor.AlignLeft;
     4648end;
     4649
     4650procedure TfrmNotes.btnNumbersClick(Sender: TObject);
     4651//kt added function
     4652begin
     4653  inherited;
     4654  HtmlEditor.ToggleNumbering;
     4655end;
     4656
     4657procedure TfrmNotes.btnBulletsClick(Sender: TObject);
     4658//kt added function
     4659begin
     4660  inherited;
     4661  HtmlEditor.ToggleBullet;
     4662end;
     4663
     4664procedure TfrmNotes.btnUnderlineClick(Sender: TObject);
     4665//kt added function
     4666begin
     4667  inherited;
     4668  HtmlEditor.ToggleUnderline;
     4669end;
     4670
     4671procedure TfrmNotes.btnTextColorClick(Sender: TObject);
     4672//kt added function
     4673begin
     4674  inherited;
     4675  HtmlEditor.TextForeColorDialog;
     4676end;
     4677
     4678procedure TfrmNotes.btnBackColorClick(Sender: TObject);
     4679//kt added function
     4680begin
     4681  inherited;
     4682  HtmlEditor.TextBackColorDialog;
     4683end;
     4684
     4685procedure TfrmNotes.btnFontsClick(Sender: TObject);
     4686//kt added function
     4687begin
     4688  inherited;
     4689  HtmlEditor.FontDialog;
     4690end;
     4691
     4692procedure TfrmNotes.cbFontSizeChange(Sender: TObject);
     4693//kt added function
     4694const
     4695  FontSizes : array [0..6] of byte = (8,10,12,14,18,24,36);
     4696begin
     4697  inherited;
     4698  //HtmlEditor.FontSize := StrToInt(cbFontSize.Text);
     4699  HtmlEditor.FontSize := FontSizes[cbFontSize.ItemIndex];
     4700end;
     4701
     4702procedure TfrmNotes.cbFontNamesChange(Sender: TObject);
     4703//kt added function
     4704var i :  integer;
     4705    FontName : string;
     4706const
     4707   TEXT_BAR = '---------------';
     4708begin
     4709  inherited;
     4710  if cbFontNames.Text[1]='<' then exit;
     4711  FontName := cbFontNames.Text;
     4712  HtmlEditor.FontName := FontName;
     4713  i := cbFontNames.Items.IndexOf(TEXT_BAR);
     4714  if i < 1 then cbFontNames.Items.Insert(0,TEXT_BAR);
     4715  if i > 5 then cbFontNames.Items.Delete(5);
     4716  if cbFontNames.Items.IndexOf(FontName)> i then begin
     4717    cbFontNames.Items.Insert(0,FontName);
     4718  end;
     4719end;
     4720
     4721(*
    40774722//kt made this entire temp function
    40784723procedure TfrmNotes.WebBrowser1CommandStateChange(Sender: TObject;
     
    41014746  end;
    41024747end;
     4748*)
    41034749
    41044750procedure TfrmNotes.memNewNoteKeyPress(Sender: TObject; var Key: Char);
  • cprs/branches/tmg-cprs/CPRS-Chart/fPtDemo.pas

    r453 r541  
    155155                end;
    156156              until LastLine >= memPtDemo.Lines.Count - 1;
    157             PrintWindowsReport(memPrintReport, PAGE_BREAK, Self.Caption, ErrMsg);
     157            PrintWindowsReport(memPrintReport, PAGE_BREAK, Self.Caption, ErrMsg, Application); //kt 8/09 added 'Application'
    158158          end;
    159159      finally
  • cprs/branches/tmg-cprs/CPRS-Chart/fPtSel.dfm

    r453 r541  
    159159    object TMGcmdAdd: TButton
    160160      Left = 584
    161       Top = 24
    162       Width = 73
    163       Height = 17
     161      Top = 22
     162      Width = 75
     163      Height = 20
    164164      Caption = 'Add Patient'
    165165      TabOrder = 5
  • cprs/branches/tmg-cprs/CPRS-Chart/fReminderDialog.pas

    r496 r541  
    991991  WHArray: TStringlist;
    992992  GecRemIen, GecRemStr, RemWipe: String;
     993  HTMLEditing : boolean;  //kt 8/09
    993994
    994995  procedure Add(PCEItemClass: TPCEItemClass);
     
    10731074        repeat
    10741075        //AGP Added RemWipe section this section will determine if the Dialog is a patient specific
    1075           if FProcessingTemplate or (i < RemindersInProcess.Count) then
    1076           begin
    1077             if FProcessingTemplate then
    1078               begin
    1079                  Rem := FReminder;
    1080                  if Rem.RemWipe = 1 then
    1081                      RemWipe := Piece(Rem.DlgData,U,1);
    1082               end
    1083             else
    1084               begin
    1085                 Rem := TReminder(RemindersInProcess.Objects[i]);
    1086                 if TReminderDialog(TReminder(RemindersInProcess.Objects[i])).RemWipe = 1 then
    1087                    begin
    1088                      if RemWipe ='' then RemWipe := TReminder(RemindersInProcess.Objects[i]).IEN
    1089                      else RemWipe := RemWipe + U + TReminder(RemindersInProcess.Objects[i]).IEN;
    1090                    end;
    1091                 end;
     1076          if FProcessingTemplate or (i < RemindersInProcess.Count) then begin
     1077            if FProcessingTemplate then begin
     1078              Rem := FReminder;
     1079              if Rem.RemWipe = 1 then
     1080                RemWipe := Piece(Rem.DlgData,U,1);
     1081            end else begin
     1082              Rem := TReminder(RemindersInProcess.Objects[i]);
     1083              if TReminderDialog(TReminder(RemindersInProcess.Objects[i])).RemWipe = 1 then begin
     1084                if RemWipe ='' then RemWipe := TReminder(RemindersInProcess.Objects[i]).IEN
     1085                else RemWipe := RemWipe + U + TReminder(RemindersInProcess.Objects[i]).IEN;
     1086              end;
     1087            end;
    10921088
    10931089            Flds := FALSE;
    10941090            OldCount := TmpList.Count;
    10951091            Rem.FinishProblems(TmpList, Flds);
    1096             if(OldCount <> TmpList.Count) or Flds then
    1097             begin
     1092            if(OldCount <> TmpList.Count) or Flds then begin
    10981093              TmpList.Insert(OldCount, '');
    10991094              if not FProcessingTemplate then
     
    11131108
    11141109        Process := TRUE;
    1115         if(TmpList.Count > 0) then
    1116         begin
     1110        if(TmpList.Count > 0) then begin
    11171111          Msg := REQ_TXT + TmpList.Text;
    11181112          InfoBox(Msg, REQ_HDR, MB_OK);
    11191113          Process := FALSE;
    1120         end
    1121         else
    1122         begin
     1114        end else begin
    11231115          TmpText := TStringList.Create;
    11241116          try
    1125             if (not FProcessingTemplate) and (not InsertRemTextAtCursor) then
    1126               RemForm.NewNoteRE.SelStart := MaxInt; // Move to bottom of note
    1127             AddLine := FALSE;
    1128             BeforeLine := SendMessage(RemForm.NewNoteRE.Handle, EM_EXLINEFROMCHAR, 0, RemForm.NewNoteRE.SelStart);
    1129             if (SendMessage(RemForm.NewNoteRE.Handle, EM_LINEINDEX, BeforeLine, 0) <> RemForm.NewNoteRE.SelStart) then
    1130             begin
    1131               RemForm.NewNoteRE.SelStart := SendMessage(RemForm.NewNoteRE.Handle, EM_LINEINDEX, BeforeLine+1, 0);
    1132               inc(BeforeLine);
    1133             end;
    1134             if(RemForm.NewNoteRE.SelStart > 0) then
    1135             begin
    1136               if(RemForm.NewNoteRE.SelStart = 1) then
    1137                 AddLine := TRUE
    1138               else
    1139               begin
    1140                 TR.chrg.cpMin := RemForm.NewNoteRE.SelStart-2;
    1141                 TR.chrg.cpMax := TR.chrg.cpMin+2;
    1142                 TR.lpstrText := @buf;
    1143                 SendMessage(RemForm.NewNoteRE.Handle, EM_GETTEXTRANGE, 0, LPARAM(@TR));
    1144                 if(buf[0] <> #13) or (buf[1] <> #10) then
    1145                   AddLine := TRUE;
     1117            if (RemForm.Form is TfrmNotes) and Assigned(RemForm.NewNoteHTMLE) then begin //kt
     1118              HTMLEditing := (vmHTML in TfrmNotes(RemForm.Form).ViewMode);               //kt
     1119            end else HTMLEditing := false;                                               //kt
     1120            if HTMLEditing then begin  //kt added this entire block                      //kt
     1121              if (not FProcessingTemplate) and (not InsertRemTextAtCursor) then begin    //kt
     1122                RemForm.NewNoteHTMLE.MoveCaretToEnd;                                     //kt
     1123              end;                                                                       //kt
     1124              AddLine := TRUE;                                                           //kt
     1125            end else begin             //kt (original code below)
     1126              if (not FProcessingTemplate) and (not InsertRemTextAtCursor) then
     1127                RemForm.NewNoteRE.SelStart := MaxInt; // Move to bottom of note
     1128              AddLine := FALSE;
     1129              BeforeLine := SendMessage(RemForm.NewNoteRE.Handle, EM_EXLINEFROMCHAR, 0, RemForm.NewNoteRE.SelStart);
     1130              if (SendMessage(RemForm.NewNoteRE.Handle, EM_LINEINDEX, BeforeLine, 0) <> RemForm.NewNoteRE.SelStart) then begin
     1131                RemForm.NewNoteRE.SelStart := SendMessage(RemForm.NewNoteRE.Handle, EM_LINEINDEX, BeforeLine+1, 0);
     1132                inc(BeforeLine);
    11461133              end;
    1147             end;
     1134              if(RemForm.NewNoteRE.SelStart > 0) then begin
     1135                if(RemForm.NewNoteRE.SelStart = 1) then
     1136                  AddLine := TRUE
     1137                else begin
     1138                  TR.chrg.cpMin := RemForm.NewNoteRE.SelStart-2;
     1139                  TR.chrg.cpMax := TR.chrg.cpMin+2;
     1140                  TR.lpstrText := @buf;
     1141                  SendMessage(RemForm.NewNoteRE.Handle, EM_GETTEXTRANGE, 0, LPARAM(@TR));
     1142                  if(buf[0] <> #13) or (buf[1] <> #10) then
     1143                    AddLine := TRUE;
     1144                end;
     1145              end;
     1146            end; //kt 8/09
    11481147            if FProcessingTemplate then
    11491148              FReminder.AddText(TmpText)
    1150             else
    1151             begin
     1149            else begin
    11521150              for i := 0 to RemindersInProcess.Count-1 do
    11531151                TReminder(RemindersInProcess.Objects[i]).AddText(TmpText);
    11541152            end;
    1155             if(TmpText.Count > 0) then
    1156             begin
    1157               if not FProcessingTemplate then
    1158               begin
     1153            if(TmpText.Count > 0) then begin
     1154              if not FProcessingTemplate then begin
    11591155                tmp := ClinRemText;
    1160                 if(tmp <> '') then
    1161                 begin
     1156                //kt if(tmp <> '') then begin
     1157                if(tmp <> '') and (not HTMLEditing) then begin  //kt 8/09
    11621158                  i := RemForm.NewNoteRE.Lines.IndexOf(tmp);
    1163                   if(i < 0) or (i > BeforeLine) then
    1164                   begin
     1159                  if(i < 0) or (i > BeforeLine) then begin
    11651160                    TmpText.Insert(0, tmp);
    11661161                    if(RemForm.NewNoteRE.SelStart > 0) then
     
    11771172              if TmpText.Count = 0 then
    11781173                Process := FALSE
    1179               else
    1180               begin
     1174              else begin
    11811175                if RemForm.PCEObj.NeedProviderInfo and MissingProviderInfo(RemForm.PCEObj, PCEType) then
    11821176                  Process := FALSE
    1183                 else
    1184                   RemForm.NewNoteRE.SelText := TmpText.Text;
     1177                else begin
     1178                  If HTMLEditing then begin                                                //kt 8/09
     1179                    for i := 0 to TmpText.count-1 do begin                                 //kt 8/09
     1180                      RemForm.NewNoteHTMLE.InsertTextAtCaret(TmpText.Strings[i]+'<BR>');   //kt 8/09
     1181                    end;                                                                   //kt 8/09
     1182                  end else begin                                                           //kt 8/09
     1183                    RemForm.NewNoteRE.SelText := TmpText.Text;
     1184                  end;                                                                     //kt 8/09
     1185                end;
    11851186              end;
    11861187            end;
    1187             if(Process) then
    1188             begin
     1188            //kt if(Process) then begin
     1189            if(Process) and (not HTMLEditing) then begin  //kt
    11891190              SendMessage(RemForm.NewNoteRE.Handle, EM_SCROLLCARET, 0, 0);
    11901191              AfterTop := SendMessage(RemForm.NewNoteRE.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
  • cprs/branches/tmg-cprs/CPRS-Chart/fReportsPrint.pas

    r453 r541  
    345345                            Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState));
    346346                          aCaption := piece(uRemoteType,'^',4);
    347                           PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
     347                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg, Application); //kt 8/09, Added ',Application'
    348348                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    349349                        end;
     
    360360                            Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState));
    361361                          aCaption := piece(uRemoteType,'^',4);
    362                           PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
     362                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg, Application); //kt 8/09, Added ',Application'
    363363                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    364364                        end;
     
    374374                        FindVType;
    375375                        aCaption := piece(uRemoteType,'^',4) + ';1';
    376                         PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
     376                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg, Application); //kt 8/09, Added ',Application'
    377377                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    378378                      end
     
    382382                          Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState));
    383383                        aCaption := piece(uRemoteType,'^',4);
    384                         PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
     384                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg, Application); //kt 8/09, Added ',Application'
    385385                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    386386                      end;
     
    396396                        FindVType;
    397397                        aCaption := piece(uRemoteType,'^',4) + ';1';
    398                         PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
     398                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg, Application); //kt 8/09, Added ',Application'
    399399                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    400400                      end
     
    404404                           Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState));
    405405                        aCaption := piece(uRemoteType,'^',4);
    406                         PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
     406                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg, Application); //kt 8/09, Added ',Application'
    407407                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    408408                      end;
     
    419419                            Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState));
    420420                          aCaption := piece(uRemoteType,'^',4);
    421                           PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
     421                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg, Application); //kt 8/09, Added ',Application'
    422422                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    423423                        end;
     
    434434                            Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState));
    435435                          aCaption := piece(uRemoteType,'^',4);
    436                           PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
     436                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg, Application); //kt 8/09, Added ',Application'
    437437                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    438438                        end;
     
    452452                 Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState));
    453453              aCaption := piece(uRemoteType,'^',4);
    454               PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
     454              PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg, Application); //kt 8/09, Added ',Application'
    455455              if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
    456456            end;
  • cprs/branches/tmg-cprs/CPRS-Chart/fRptBox.pas

    r453 r541  
    187187                end;
    188188              until LastLine >= StringText.Count - 1;
    189             PrintWindowsReport(memPrintReport, PAGE_BREAK, Title, ErrMsg);
     189            PrintWindowsReport(memPrintReport, PAGE_BREAK, Title, ErrMsg, Application); //kt 8/09, Added ',Application'
    190190          end;
    191191      finally
  • cprs/branches/tmg-cprs/CPRS-Chart/fSplash.dfm

    r496 r541  
    41434143      Alignment = taCenter
    41444144      AutoSize = False
    4145       Caption = 'TMG Customization 1.0'
     4145      Caption = 'TMG Customization 1.1'
    41464146      Font.Charset = ANSI_CHARSET
    41474147      Font.Color = clGray
  • cprs/branches/tmg-cprs/CPRS-Chart/rHTMLTools.pas

    r453 r541  
    11unit rHTMLTools;
    2 (*
    3   This entire unit was created by K. Toppenberg, starting on 5/27/05
     2(*This entire unit was created by K. Toppenberg, starting on 5/27/05
    43  It will hold additional functions to support HTML display of notes
    5   and printing of HTML notes.
    6 *)
     4  and printing of HTML notes.                                           *)
    75
    86interface
    97
    10 uses Windows, SysUtils, Classes, Printers, ComCtrls,
    11      ShDocVw, {//kt added ShDocVw 5-2-05 for TWebBrowser access}
    12      ORFn;    {//kt for RedrawActivate}
    13 
    14 procedure PrintHTMLReport(Lines: TStringList; var ErrMsg: string);  //kt added 5-2-05
    15 function IsHTMLDocument(Lines : TStrings): boolean;  //kt added 5-2-05
    16 procedure WaitForBrowserOK(MaxSecDelay: integer);
    17 procedure ActivateWebBrowser;
    18 procedure ActivateMemo;
    19 function CheckForImageLink(Lines: TStrings; ImageList : TStringList) : boolean;
    20 
     8  uses Windows, SysUtils, Classes, Printers, ComCtrls,
     9       ShDocVw, {//kt added ShDocVw 5-2-05 for TWebBrowser access}
     10       Dialogs,
     11       Forms,
     12       Registry, {elh   6/19/09}
     13       ORFn;    {//kt for RedrawActivate}
     14
     15  var
     16    DesiredHTMLFontSize : byte;       
     17     
     18  procedure PrintHTMLReport(Lines: TStringList; var ErrMsg: string; PtName:string;
     19                            DOB:string; Location:string; Application : TApplication);  //kt added 5-2-05
     20  function  IsHTML(Lines : TStrings): boolean; overload;
     21  function  IsHTML(Line : String): boolean; overload;
     22  function  HasHTMLTags(Text: string) : boolean;
     23  procedure FixHTML(Lines : TStrings);
     24  function  FixHTMLCRLF(Text : String) : string;
     25  procedure SplitToArray (HTMLText: string; Lines : TStrings);
     26  procedure StripBeforeAfterHTML(Lines,OutBefore,OutAfter : TStrings);
     27  function  UnwrapHTML(HTMLText : string) : string;
     28  function  WrapHTML(HTMLText : string) : string;
     29//  function  WaitForBrowserOK(MaxSecDelay: integer; Application : TApplication) : boolean;
     30  function  CheckForImageLink(Lines: TStrings; ImageList : TStringList) : boolean;
     31  function  ProtectHTMLSpaces(Text : String) : string;
     32  function  Text2HTML(Lines : TStrings) : String; overload;
     33  function  Text2HTML(text : string) : String;    overload;
     34  procedure SetRegHTMLFontSize(Size: byte);
     35  procedure RestoreRegHTMLFontSize;
     36  procedure SetupHTMLPrinting(Name,DOB,Location,Institution : string);
     37  procedure RestoreIEPrinting;
     38   
    2139implementation
    2240
    23 uses fNotes,
    24      fImages,
    25      StrUtils; {//kt added 5-2-05 rTIU for frmNotes.WebBrowser access}
    26 
    27 
    28 procedure PrintHTMLReport(Lines: TStringList; var ErrMsg: string);
    29 //Note:
    30 //     I use two web browsers because sometimes the display web browser
    31 //     would be changed by other parts of CPRS during the printing
    32 //     process, causing the incorrect page to print out.  By having a
    33 //     browser just for printing, this will hopefully not happen.
    34 //
    35 //      Web browser printing options:
    36 //        OLECMDEXECOPT_DODEFAULT       Use the default behavior, whether prompting the user for input or not.
    37 //        OLECMDEXECOPT_PROMPTUSER      Execute the command after obtaining user input.
    38 //        OLECMDEXECOPT_DONTPROMPTUSER  Execute the command without prompting the user.
    39 
    40 var
    41   Status: OLECMDF;
    42   HTMLfilename : string;
    43   //Pauses : integer;
    44 begin
    45   try
     41  uses fNotes,
     42       fImages,
     43       Messages,
     44       Graphics, //For color constants
     45       fTMGPrintingAnimation,
     46       StrUtils;
     47
     48  const CRLF = #$0D#$0A;
     49
     50 
     51  function GetCurrentPrinterName : string;
     52   //var ResStr: array[0..255] of Char;
     53  begin
     54  //GetProfileString('Windows', 'device', '', ResStr, 255);
     55  //Result := StrPas(ResStr);
     56    if (Printer.PrinterIndex > 0)then begin
     57      Result := Printer.Printers[Printer.PrinterIndex];
     58    end else begin
     59      Result := '';
     60    end;
     61  end;
     62
     63  procedure SetDefaultPrinter(PrinterName: String) ;
     64  var
     65      j                    : Integer;
     66      Device, Driver, Port : PChar;
     67      HdeviceMode          : THandle;
     68      aPrinter             : TPrinter;
     69  begin   
     70     Printer.PrinterIndex := -1;
     71     getmem(Device, 255) ;
     72     getmem(Driver, 255) ;
     73     getmem(Port, 255) ;
     74     aPrinter := TPrinter.create;
     75     j := Printer.Printers.IndexOf(PrinterName);
     76     if j >= 0 then begin
     77       aprinter.printerindex := j;
     78       aPrinter.getprinter(device, driver, port, HdeviceMode) ;
     79       StrCat(Device, ',') ;
     80       StrCat(Device, Driver ) ;
     81       StrCat(Device, Port ) ;
     82       WriteProfileString('windows', 'device', Device) ;
     83       StrCopy( Device, 'windows' ) ;
     84       //SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device)) ;
     85     end;
     86     Freemem(Device, 255) ;
     87     Freemem(Driver, 255) ;
     88     Freemem(Port, 255) ;
     89     aPrinter.Free;
     90  end;   
     91
     92
     93  procedure Wait(Sec : byte; Application : TApplication);
     94  var   StartTime : TDateTime;
     95  const OneSec = 0.000012; 
     96  begin
     97    StartTime := GetTime;
     98    repeat
     99      Application.ProcessMessages;
     100    until (GetTime-StartTime) > (OneSec*Sec);
     101  end;
     102 
     103  procedure PrintHTMLReport(Lines: TStringList; var ErrMsg: string;
     104                            PtName, DOB, Location:string;
     105                            Application : TApplication);
     106  //      Web browser printing options:
     107  //        OLECMDEXECOPT_DODEFAULT       Use the default behavior, whether prompting the user for input or not.
     108  //        OLECMDEXECOPT_PROMPTUSER      Execute the command after obtaining user input.
     109  //        OLECMDEXECOPT_DONTPROMPTUSER  Execute the command without prompting the user.
     110
     111  {Notice:  When IE is asked to print, it immediately returns from the function,
     112           but the printing has not yet occured.  If UI is requested, then the
     113          printing will not start until after the user selects a printer and
     114         presses [OK].  I could not find any reliable way to determine when the
     115        print job had been created.  I had to know this event because I need to
     116       restore some IE settings AFTER the printing has finished.  I even tried to
     117      get the active windows and see if it was a print dialog.  But IE print dlg
     118     apparently is owned by another thread than CPRS, because GetActiveWindow would
     119     not bring back a handle to the printer dialog window.  I therefore told IE
     120     to print WITHOUT asking which printer via UI.  In that case it prints to the
     121     system wide default printer.  So I have to set the default printer to the
     122     user's choice, and then change it back again.  This is bit of a kludge,
     123     but I couldn't figure out any other way after hours of trial and error.
     124     NOTE: I tried to query IE to see if it was able to print, thinking that it
     125     would return NO if in the process of currently printing.  It didn't work,
     126     and would return OK immediately.                                               }   
     127 
     128  var
     129    UseUI : OleVariant;   
     130    NewPrinterName,DefaultPrinter: string;   
     131    dlgWinPrinter: TPrintDialog;
     132  begin
     133    DefaultPrinter := GetCurrentPrinterName;
     134    dlgWinPrinter := TPrintDialog.Create(nil);
     135    frmTMGPrinting.Show;
     136    if dlgWinPrinter.Execute then begin  //only sets a local printer
     137      NewPrinterName := GetCurrentPrinterName; 
     138      SetDefaultPrinter(NewPrinterName); //Set global setting that IE will use.
     139      try
     140        //frmNotes.SetHTMLorTextViewer(True,Lines);  //ActivateHtmlViewer(Lines);
     141        frmNotes.SetDisplayToHTMLvsText([vmView,vmHTML],Lines);  //ActivateHtmlViewer(Lines);
     142        if frmNotes.HtmlViewer.WaitForDocComplete = false then begin
     143          ErrMsg := 'The web browser timed out trying to set up document.';
     144          exit;
     145        end;
     146        SetupHTMLPrinting(PtName,DOB,Location,' ');  {elh 6/19/09} //kt
     147        frmNotes.HtmlViewer.PrintFinished := false;               
     148        UseUI := false;  //UseUI := true;
     149        frmNotes.HtmlViewer.PrintDocument(UseUI);   //Returns immediately, not after printing done.
     150        Wait(4,Application); //give IE x sec to complete print document.  Is this always enough?
     151        //WaitForBrowserOK(10, Application); //wait up to 10 seconds  //Note: this doesn't do what I want.  Status is immediately OK.
     152        RestoreIEPrinting;   {elh 6/19/09}  //kt
     153      finally   //any needed final code goes here.
     154        SetDefaultPrinter(DefaultPrinter);
     155        //beep;
     156      end;
     157    end;
     158    dlgWinPrinter.Free;
     159    frmTMGPrinting.Hide;       
     160  end;
     161
     162  (*
     163  function WaitForBrowserOK(MaxSecDelay: integer; Application : TApplication) : boolean;
     164  //Returns TRUE if can print
     165  var
     166    StartTime : TDateTime;
     167    Status: OLECMDF;
     168    MaxDelay,ElapsedTime : Double;
     169    CanPrint : boolean;
     170  const
     171    OneMin = 0.0007;  //note: 0.0007 is about 1 minute
     172  begin
     173    StartTime := GetTime;
     174    MaxDelay := OneMin * MaxSecDelay;
     175    repeat
     176      Status := frmNotes.HtmlViewer.QueryStatusWB(OLECMDID_PRINT);  //"can you print?" -- get print command status
     177      CanPrint := (Status and OLECMDF_ENABLED) > 0;
     178      ElapsedTime := GetTime-StartTime;
     179      Application.ProcessMessages;
     180    until (ElapsedTime > MaxDelay) or CanPrint or frmNotes.HtmlViewer.PrintFinished;
     181    Result := CanPrint;
     182  end;
     183  *)
     184 
     185  Procedure ScanForSubs(Lines : TStrings);
     186  //Purpose: To scan note for constant $CPRS$ and replace with CPRS's actual directory
     187  var i : integer;
     188      CPRSDir : string;
     189  begin
     190    for i := 0 to Lines.Count-1 do begin
     191      if Pos('$CPRSDIR$',Lines.Strings[i])>0 then begin
     192        CPRSDir := ExcludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));
     193        Lines.Strings[i] := AnsiReplaceStr(Lines.Strings[i],'$CPRSDIR$',CPRSDir);
     194        //Ensure images are downloaded before passing page to web browser       
     195        frmImages.timLoadImagesTimer(nil);
     196      end;
     197    end;
     198  end;
     199
     200
     201  function IsHTML(Line : String): boolean;
     202  {Purpose: To look at the Text and determine if it is an HTML document.
     203   Test used: if document contains <!DOCTYPE HTML" or <HTML> or </BODY>
     204        This is not a fool-proof test...                                   
     205   NOTE: **This does NOT call ScanForSubs as the other IsHTML(TStrings) function does.     }
     206       
     207  begin
     208    Result := false;  //default of false
     209    Line := UpperCase(Line);
     210    if (Pos('<!DOCTYPE HTML',Line) > 0)
     211      or (Pos('<HTML>',Line) > 0)
     212      or (Pos('</BODY>',Line) > 0)then begin
     213      Result := true;
     214    end;
     215  end;
     216
     217 
     218  function IsHTML(Lines : TStrings): boolean;
     219  //Purpose: To look at the note loaded into Lines and determine if it is
     220  //          an HTML document.  See other IsHTML(String) function for test used.
     221  begin
     222    Result := false; 
     223    if Lines = nil then exit;
     224    Result := IsHTML(Lines.Text);
     225    if Result = true then ScanForSubs(Lines); 
     226  end;
     227
     228 
     229  function HasHTMLTags(Text: string) : boolean;
     230    function GetTag(p1,p2 : integer; var Text : string) : string;
     231    var i : integer;
    46232    begin
    47       HTMLfilename := ExtractFilePath(ParamStr(0)) + 'printing_html_note.html';
    48       Lines.SaveToFile(HTMLfilename);  //write the note to a file,
    49       frmNotes.WebBrowser1.Navigate(HTMLfilename);  //now navigate to file.
    50       ActivateWebBrowser;
    51       Status := frmNotes.WebBrowser1.QueryStatusWB(OLECMDID_PRINT);  //"can you print?" -- get print command status
    52       //Note: If I print multiple documents, I think there may be a problem if
    53       //      document #2 asks to print, and it is not yet done with doc #1
    54       //      As it is now, it will simply report an error.  Solutions would
    55       //      be to wait a certain period of time and then ask for status again.
    56       //      OR, I could wait after printing until it is done....
    57       WaitForBrowserOK(10); //wait up to 10 seconds
    58       if (Status and OLECMDF_ENABLED)>0 then begin
    59         frmNotes.WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_PROMPTUSER);
    60         //Here I want to wait until it is done printing.
    61         //Note: this doesn't do what I want.  Status is immediately OK.
    62         WaitForBrowserOK(10); //wait up to 10 seconds
     233      Result := MidStr(Text,p1, p2-p1);
     234      if Result[1] = '/' then Result := MidStr(Result,2,999);
     235      i := Pos(' ',Result);
     236      if i >0 then Result := MidStr(Result,1,i-1);
     237    end;
     238   
     239  var p1,p2: integer;
     240      Tag : string;
     241  begin
     242    Result := False; //default to ignore
     243    Text := UpperCase(Text);
     244    if (Pos('&NBSP;',Text)>0) then Result := true
     245    else if (Pos('<P>',Text)>0) then Result := true
     246    else if (Pos('<BR>',Text)>0) then Result := true
     247    else if (Pos('<HTML>',Text)>0) then Result := true
     248    else begin
     249      p1 := Pos('<',Text); if p1 = 0 then exit;
     250      p2 := Pos('>',Text); if p2 = 0 then exit;
     251      Tag := GetTag(p1,p2,Text);
     252      if Tag='' then exit;
     253      if Pos('/'+Tag+'>',Text)>0 then result := true;     
     254    end;
     255    {
     256    if (Pos('<BR>',Text)>0) or
     257       (Pos('</P>',Text)>0) or
     258       (Pos('<UL>',Text)>0) or
     259       (Pos('</UL>',Text)>0) or
     260       (Pos('<LI>',Text)>0) or
     261       (Pos('</LI>',Text)>0) or
     262       (Pos('<OL>',Text)>0) or
     263       (Pos('</OL>',Text)>0) or
     264       (Pos('&NBSP;',Text)>0) or
     265       (Pos('<P>',Text)>0) then begin
     266      Result := true;
     267    end;           
     268    }
     269  end;
     270   
     271 
     272  function LineAfterTag(Lines : TStrings; Tag : string) : integer;
     273  //returns index of line directly after tag (-1 if not found)
     274  //Note: only 1st tag is found (stops looking after that)
     275  var p,i : integer;
     276      s,s1,s2 : string;
     277  begin
     278    result := -1; 
     279    Tag := UpperCase(Tag);
     280    for i := 0 to Lines.Count-1 do begin
     281      s := UpperCase(Lines.Strings[i]);
     282      p := Pos(Tag,s);
     283      if p=0 then continue;
     284      if (p+length(Tag)-1) < length(s) then begin  //extra stuff after tag on line --> split line
     285        s1 := MidStr(Lines.Strings[i],1,p+length(Tag)-1);
     286        s2 := MidStr(Lines.Strings[i],p+length(Tag),9999);
     287        Lines.Strings[i] := s1;
     288        Lines.Insert(i+1,s2);           
     289      end;
     290      //Lines.Insert(i+1,'');   
     291      result := i+1;
     292      break;
     293    end;
     294  end;
     295
     296  function LineBeforeTag(Lines : TStrings; Tag : string) : integer;
     297  //returns index of newly added blank line, directly before tag (-1 if not found)
     298  //Note: only 1st tag is found (stops looking after that)
     299  var p,i,idx : integer;
     300      s,s1,s2 : string;
     301  begin
     302    result := -1; 
     303    idx := -1;
     304    Tag := UpperCase(Tag);
     305    for i := 0 to Lines.Count-1 do begin
     306      s := UpperCase(Lines.Strings[i]);
     307      p := Pos(Tag,s);
     308      if p>0 then begin
     309        idx := i;
     310        break;
     311      end; 
     312    end; 
     313    if idx <> -1 then begin
     314      p := Pos(Tag,UpperCase(Lines.Strings[idx]));
     315      if p>1 then begin  //extra stuff after tag on line --> split line
     316        s1 := MidStr(Lines.Strings[idx],1,p-1);
     317        s2 := MidStr(Lines.Strings[idx],p,9999);
     318        Lines.Strings[idx] := s1;
     319        Lines.Insert(idx+1,s2);
     320        inc(idx);
     321      end;
     322      //Lines.Insert(idx-1,'');   
     323      result := idx;
     324    end;
     325  end;
     326
     327  procedure SplitLineAfterTag(Lines : TStrings; Tag : string);
     328  //Purpose: To ensure that text that occurs after Tag is split and wrapped
     329  //         to the next line.
     330  //Note: It is assumed that tag is in form of <TAGName> or <SomeReallyLongText...
     331  //      if a closing '>' is not provided in the tag name, then the part provided
     332  //      is used for matching, and then a search for the closing '>' is made, and
     333  //      the split will occur after that.
     334  //Note: Only the first instance of Tag will be found, stops searching after that.
     335  //Note: Tag beginning and ending MUST occur on same line (wrapping of a long tag NOT supported)
     336  var i,p1,p2 : integer;
     337      s,s1,s2 : string;
     338  begin
     339    Tag := UpperCase(Tag);
     340    for i := 0 to Lines.Count-1 do begin
     341      s := UpperCase(Lines.Strings[i]);
     342      p1 := Pos(Tag,s);   
     343      if p1=0 then continue;
     344      p2 := PosEx('>',s,p1);
     345      if p2=0 then continue;  //this is a problem, no closing '>' found... ignore for now.
     346      if p2 = length(s) then break;
     347      s1 := MidStr(Lines.Strings[i],1,p2);
     348      S2 := MidStr(Lines.Strings[i],p2+1,999);
     349      Lines.Strings[i] := s1;
     350      Lines.Insert(i+1,s2);
     351      break;   
     352    end;
     353  end;
     354
     355  procedure SplitLineBeforeTag(Lines : TStrings; Tag : string);
     356  //Purpose: To ensure that text that occurs before Tag is split and Tag
     357  //         is wrapped to the next line.
     358  //Note: It is assumed that tag is in form of <TAGName> or <SomeReallyLongText...
     359  //Note: Only the first instance of Tag will be found, stops searching after that.
     360  var i,p1 : integer;
     361      s1,s2 : string;
     362  begin
     363    Tag := UpperCase(Tag);
     364    for i := 0 to Lines.Count-1 do begin
     365      p1 := Pos(Tag,UpperCase(Lines.Strings[i]));   
     366      if p1=0 then continue;
     367      s1 := MidStr(Lines.Strings[i],1,p1-1);
     368      S2 := MidStr(Lines.Strings[i],p1,999);
     369      Lines.Strings[i] := s1;
     370      Lines.Insert(i+1,s2);
     371      break;   
     372    end;
     373  end;
     374
     375  function IndexOfHoldingLine(Lines : TStrings; Tag : string) : integer;
     376  var i : integer;
     377      s : string;
     378  begin
     379    result := -1; 
     380    Tag := UpperCase(Tag);
     381    for i := 0 to Lines.Count-1 do begin
     382      s := UpperCase(Lines.Strings[i]);
     383      if Pos (Tag,s)=0 then continue;
     384      result := i;
     385      break;
     386    end;
     387  end;
     388
     389  procedure EnsureTrailingBR(Lines : TStrings);
     390  var  p,i : integer;
     391  begin
     392    for i := 0 to Lines.Count-1 do begin   //Ensure each line ends with <BR>
     393      p := Pos('<BR>',Lines.Strings[i]);
     394      if p+3=length(Lines.Strings[i]) then continue;
     395      Lines.Strings[i] := Lines.Strings[i] + '<BR>';         
     396    end;
     397  end;
     398
     399  procedure MergeLines(Lines,BeforeLines,AfterLines : TStrings);
     400  var  i : integer;
     401       Result : TStringList;
     402  begin
     403    Result := TStringList.Create;
     404    SplitLineAfterTag(Lines,'<!DOCTYPE HTML');
     405    SplitLineBeforeTag(Lines,'</BODY>');
     406    Result.Add(Lines.Strings[0]);  //Should be line with <!DOCTYPE HTML...
     407    for i := 0 to BeforeLines.Count-1 do begin  //Add Before-Lines text
     408      Result.Add(BeforeLines.Strings[i]);
     409    end;
     410    for i := 1 to Lines.Count-2 do begin  //Add back regular lines text
     411      Result.Add(Lines.Strings[i]);
     412    end;
     413    for i := 1 to AfterLines.Count-1 do begin //Add After-Lines text
     414      Result.Add(AfterLines.Strings[i]);
     415    end;
     416    Result.Add(Lines.Strings[Lines.count-1]); //Should be '</BODY></HTML>' line
     417
     418    Lines.Assign(Result); 
     419  end;
     420
     421  procedure StripBeforeAfterHTML(Lines,OutBefore,OutAfter : TStrings);
     422  //Purpose: Strip all text that comes before <!DOCTYPE ... line and store in OutBefore;
     423  //         Strip all text that comes after </HTML> ... line and store in OutAfter;           
     424  var i : integer;
     425      DocTypeLine,EndHTMLLine: integer;
     426  begin
     427    OutBefore.Clear;
     428    OutAfter.Clear;
     429    DocTypeLine := IndexOfHoldingLine(Lines,'<!DOCTYPE HTML');
     430    if DocTypeLine>1 then begin
     431      for i := 0 to DocTypeLine-1 do OutBefore.Add(Lines.Strings[i]);
     432      for i := 0 to DocTypeLine-1 do Lines.Delete(0);
     433    end;
     434    EndHTMLLine := IndexOfHoldingLine(Lines,'</HTML>');
     435    if (EndHTMLLine>0) and (EndHTMLLine < (Lines.Count-1)) then begin
     436      for i := EndHTMLLine+1 to Lines.Count-1 do OutAfter.Add(Lines.Strings[i]);
     437      for i := EndHTMLLine+1 to Lines.Count-1 do Lines.Delete(EndHTMLLine+1);
     438    end;
     439  end; 
     440
     441  Function FixHTMLCRLF(Text : String) : string;
     442  begin
     443    Result := AnsiReplaceText(Text,'<NO DATA>',#$1E); //protect sequences we want
     444    Result := AnsiReplaceText(Result,'>'+CRLF,'>'#$1F); //protect sequences we want
     445    Result := AnsiReplaceText(Result,CRLF,'<BR>'+CRLF); //Add <BR>'s to CrLf's
     446    Result := AnsiReplaceText(Result,'>'#$1F,'>'+CRLF); //Restore sequences we wanted
     447    Result := AnsiReplaceText(Result,#$1E,'<NO DATA>'); //Restore sequences we wanted
     448  end;
     449 
     450
     451  procedure FixHTML(Lines : TStrings); //kt 6/20/09
     452  //Purpose: to put header info that VistA adds to note into proper formatting. 
     453  var  BeforeLines,AfterLines : TStringList;
     454  begin
     455    BeforeLines := TStringList.Create;
     456    AfterLines := TStringList.Create;
     457    StripBeforeAfterHTML(Lines,BeforeLines,AfterLines);
     458    EnsureTrailingBR(BeforeLines);
     459    if BeforeLines.Count>0 then begin  //Wrap Before-Lines with formatting
     460      BeforeLines.Insert(0,'<CODE>');
     461      //<---Existing text remains in between --->
     462      BeforeLines.Add('</CODE>'); 
     463      BeforeLines.Add('<HR><P>');  //horizontal line
     464    end;
     465    EnsureTrailingBR(AfterLines); 
     466    if AfterLines.Count > 0 then begin  //Wrap After-Lines with formatting
     467      AfterLines.Insert(0,'<P><CODE>');
     468      //<---Existing text remains in between --->
     469      AfterLines.Add('</CODE>'); 
     470    end;
     471    MergeLines(Lines,BeforeLines,AfterLines);   
     472    BeforeLines.Free;
     473    AfterLines.Free;
     474  end;
     475 
     476  procedure SplitToArray (HTMLText: string; Lines : TStrings);
     477  var tempS                 : string;
     478    InEscapeCode, InTagCode : boolean;
     479    i, LastGoodBreakI       : integer;
     480    TagStart,TagEnd         : integer;
     481    TagText                 : string;
     482    TextLen                 : integer;
     483    MaxLineLen              : integer;
     484  begin
     485    Lines.Clear;
     486    MaxLineLen := 80;
     487    Repeat
     488      InEscapeCode := False;
     489      InTagCode := False;
     490      LastGoodBreakI := 0;
     491      TextLen := length(HTMLText);
     492      TagText := '';
     493      TagStart := 0; TagEnd := 0;
     494      if TextLen > 80 then TextLen := MaxLineLen;
     495      for i := 1 to TextLen do begin
     496        if (HTMLText[i] = '<') then begin
     497          InTagCode := True;
     498          TagStart := i;
     499          TagText := '';
     500          LastGoodBreakI := i-1;
     501        end;
     502        if (HTMLText[i] = '&') then begin
     503          InEscapeCode := True;
     504          LastGoodBreakI := i-1;
     505        end;
     506        if InEscapeCode and (HTMLText[i] = ';') then begin   
     507          InEscapeCode := False;
     508          LastGoodBreakI := i;
     509        end;
     510        if InTagCode and (HTMLText[i] = '>') then begin   
     511          InTagCode := False;
     512          TagEnd := i;
     513          TagText := UpperCase(MidStr(HTMLText,TagStart+1,(TagEnd-TagStart-1)));
     514          LastGoodBreakI := i;
     515        end;
     516        if (HTMLText[i] = ',') and (MaxLineLen > 80) then begin   
     517          LastGoodBreakI := i;       
     518          break;
     519        end;
     520        if (TagText='BR') or (TagText='/P') then begin
     521          LastGoodBreakI := TagEnd;
     522          break;
     523        end else TagText := '';; 
     524        if (not InTagCode) and (not InEscapeCode)
     525        and (HTMLText[i] = ' ') then LastGoodBreakI  := i;
     526      end;   
     527      if LastGoodBreakI > 0 then begin
     528        tempS := MidStr(HTMLText,1,LastGoodBreakI);   //get next 80 chars, or less if at the end.
     529        HTMLText := Rightstr(HTMLText, length(HTMLText)- LastGoodBreakI);    //characters 81 ... the end
     530        Lines.Add(tempS);     
    63531      end else begin
    64         ErrMsg := 'The web browser reports being unable to print.  Trying printing this document by itself.';
    65       end;
    66     end;
    67   finally
     532        if MaxLineLen < 250 then begin
     533          MaxLineLen := 250; //emergency mode     
     534        end else begin  //i.e. couldn't find any break within 250 chars. So just chop off.
     535          tempS := MidStr(HTMLText,1,80);   
     536          HTMLText := Rightstr(HTMLText, length(HTMLText)- 80);    //characters 81 ... the end
     537          Lines.Add(tempS);     
     538        end; 
     539      end; 
     540    until length(HTMLText)=0;
     541   end;     
     542 
     543
     544  function WrapHTML(HTMLText : string) : string; //kt 6/3/09
     545  //Purpose: take HTML formatted text and sure it has proper headers and footers etc.
     546  //         i.e. 'wrap' partial HTML into formal format.
     547  begin
     548    if Pos('<BODY>',HTMLText)=0 then HTMLText := '<BODY>' + HTMLText;   
     549    if Pos('</BODY>',HTMLText)=0 then HTMLText :=  HTMLText + '</BODY>';     
     550    if Pos('<HTML>',HTMLText)=0 then HTMLText := '<HTML>' + HTMLText;   
     551    if Pos('</HTML>',HTMLText)=0 then HTMLText :=  HTMLText + '</HTML>';     
     552    if Pos('<!DOCTYPE HTML',HTMLText)=0 then begin   
     553      HTMLText := '<!DOCTYPE HTML PUBLIC "-//WC3//DTD HTML 3.2//EN">'+ #10#13 + HTMLText;
     554    end;
     555    result := HTMLText;
     556  end;
     557
     558  function UnwrapHTML(HTMLText : string) : string;
     559  //Purpose: take HTML formatted text and remove proper headers and footers etc.
     560  //         i.e. 'unwrap' formal HTML into partial HTML format.
     561  begin
     562    HTMLText := piece(HTMLText,'<HTML>',2);
     563    HTMLText := piece(HTMLText,'</HTML>',1);
     564    HTMLText := piece(HTMLText,'<BODY>',2);
     565    HTMLText := piece(HTMLText,'</BODY>',1);
     566    result := HTMLText;
     567  end;
     568
     569  function CheckForImageLink(Lines: TStrings; ImageList : TStringList) : boolean;
     570  {Purpose:  To scan memNote memo for a link to an image.  If found, return link(s)
     571   input:  none:
     572   output:  Will return a string list holding 1 or more links
     573   Notes:  Here will be the <img ..  > format scanned for:
     574
     575        Here is some opening text...
     576          <img src="http://www.geocities.com/kdtop3/OpenVistA.jpg" alt="Image Title 1">
     577        And here is some more text
     578          <img src="http://www.geocities.com/kdtop3/OpenVistA_small.jpg" alt="Image Title 2">
     579        And the saga continues...
     580          <img src="http://www.geocities.com/kdtop3/pics/Image100.gif" alt="Image Title 3">
     581           As with html, end-of-lines and white space is not preserved or significant
     582  }
     583
     584    function GetBetween (var Text : AnsiString; OpenTag,CloseTag : string;
     585                         KeepTags : Boolean) : string;
     586    {Purpose: Gets text between Open and Close tags.  Removes any CR's or LF's
     587     Input: Text - the text to work on.  It IS changed as code is removed
     588            KeepTags - true if want tag return in result
     589                       false if tag not in result (still is removed from Text)
     590     Output: Text is changed.
     591             Result=the code between the opening and closing tags
     592     Note: Both OpenTag and CloseTag MUST be present for anything to happen.
     593    }
     594
     595      procedure CutInThree(var Text : AnsiString; p1, p2 : Integer; var s1,s2,s3 : AnsiString);
     596      {Purpose: Cut input string Text into 3 parts, with cut points given by p1 & p2.
     597                p1 points to first character to be in s2
     598                p2 points to last character to be in s2        }
     599      begin
     600        s1 := ''; s2 := '';  s3 := '';
     601        if p1 > 1 then s1 := MidStr(Text, 1, p1-1);
     602        s2 := MidStr(Text, p1, p2-p1+1);
     603        s3 := MidStr(Text, p2+1, Length(Text)-p2);
     604      end;
     605
     606    var
     607      p1,p2 : integer;
     608      s1,s2,s3 : AnsiString;
     609
    68610    begin
    69       //any needed final code goes here.
    70     end;
    71   end;
    72 end;
    73 
    74 
    75 procedure WaitForBrowserOK(MaxSecDelay: integer);
    76 var
    77   CumulativeDelay : integer;
    78   Status: OLECMDF;
    79   MaxMSDelay: integer;
    80 
    81 const
    82   DelayStep = 1000;
    83 begin
    84   MaxMSDelay:=MaxSecDelay*1000;
    85   CumulativeDelay := 0;
    86   while ((Status and OLECMDF_ENABLED)<=0) and (CumulativeDelay < MaxMSDelay) do begin
    87     sleep(DelayStep);
    88     CumulativeDelay := CumulativeDelay + DelayStep;
    89     Status := frmNotes.WebBrowser1.QueryStatusWB(OLECMDID_PRINT);  //"can you print?" -- get print command status
    90     //Beep;
    91   end;
    92 end;
    93 
    94 
    95 Procedure ScanForSubs(Lines : TStrings);
    96 //Purpose: To scan note for constant $CPRS$ and replace with CPRS's actual directory
    97 var i : integer;
    98     CPRSDir : string;
    99 begin
    100   for i := 0 to Lines.Count-1 do begin
    101     if Pos('$CPRSDIR$',Lines.Strings[i])>0 then begin
    102       CPRSDir := ExcludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));
    103       Lines.Strings[i] := AnsiReplaceStr(Lines.Strings[i],'$CPRSDIR$',CPRSDir);
    104       //Ensure images are downloaded before passing page to web browser       
    105       frmImages.timLoadImagesTimer(nil);  //only downloads 1 image each call
    106     end;
    107   end;
    108 end;
    109 
    110 
    111 //kt added following 5-2-05
    112 function IsHTMLDocument(Lines : TStrings): boolean;
    113 {purpose: To look at the note loaded into Lines and determine if it is
    114           an HTML document.
    115  Test used: if document contains <!DOCTYPE HTML" or <HTML>
    116       This is not a fool-proof test...                                   }
    117 var
    118   i:integer;  s : string;
    119 begin
    120   i := 0;
    121   Result := false;  //default of false
    122   while (i <= Lines.Count-1) do begin
    123     s := UpperCase(Lines.Strings[i]);
    124     if (Pos('<!DOCTYPE HTML',s) > 0) or (Pos('<HTML>',s) > 0) then begin
    125       Result := true;
    126       break;
    127     end;
    128     Inc(i);
    129   end;
    130   if Result = true then ScanForSubs(Lines); 
    131 end;
    132 //kt end of addition from 5-2-05
    133 
    134 
    135 procedure ActivateWebBrowser;
    136 begin
    137   with frmNotes do begin
    138     MemNote.Lines.SaveToFile(HTMLfilename);  //write the note to a file,
    139     //kt I later delete the file on destruction of this form (on CPRS exiting)
    140     WebBrowser1.Visible := true;
    141     WebBrowser1.TabStop := true;
    142     WebBrowser1.Navigate(HTMLfilename);  //now navigate to file.
    143     WebBrowser1.BringToFront;
    144     memNote.Visible := false;
    145     memNote.TabStop := false;
    146   end;
    147 end;
    148 
    149 procedure ActivateMemo;
    150 begin
    151   with frmNotes do begin
    152     WebBrowser1.Visible := false;
    153     //WebBrowser1.Navigate('about:blank');  //if I leave this here, "Print Selected" doesn't work properly
    154     //DeleteFile(HTMLfilename);  //no error if file doesn't exist.
    155     WebBrowser1.TabStop := false;
    156     memNote.Visible := true;
    157     memNote.TabStop := true;
    158     memNote.BringToFront;
    159     RedrawActivate(frmNotes.memNote.Handle);
    160   end;
    161 end;
    162 
    163 
    164 
    165 //kt added the following  1/1/05
    166 function CheckForImageLink(Lines: TStrings; ImageList : TStringList) : boolean;
    167 {Purpose:  To scan memNote memo for a link to an image.  If found, return link(s)
    168  input:  none:
    169  output:  Will return a string list holding 1 or more links
    170  Notes:  Here will be the <img ..  > format scanned for:
    171 
    172       Here is some opening text...
    173         <img src="http://www.geocities.com/kdtop3/OpenVistA.jpg" alt="Image Title 1">
    174       And here is some more text
    175         <img src="http://www.geocities.com/kdtop3/OpenVistA_small.jpg" alt="Image Title 2">
    176       And the saga continues...
    177         <img src="http://www.geocities.com/kdtop3/pics/Image100.gif" alt="Image Title 3">
    178          As with html, end-of-lines and white space is not preserved or significant
    179 }
    180 
    181   function GetBetween (var Text : AnsiString; OpenTag,CloseTag : string;
    182                        KeepTags : Boolean) : string;
    183   {Purpose: Gets text between Open and Close tags.  Removes any CR's or LF's
    184    Input: Text - the text to work on.  It IS changed as code is removed
    185           KeepTags - true if want tag return in result
    186                      false if tag not in result (still is removed from Text)
    187    Output: Text is changed.
    188            Result=the code between the opening and closing tags
    189    Note: Both OpenTag and CloseTag MUST be present for anything to happen.
    190   }
    191 
    192     procedure CutInThree(var Text : AnsiString; p1, p2 : Integer; var s1,s2,s3 : AnsiString);
    193     {Purpose: Cut input string Text into 3 parts, with cut points given by p1 & p2.
    194               p1 points to first character to be in s2
    195               p2 points to last character to be in s2        }
    196     begin
    197       s1 := ''; s2 := '';  s3 := '';
    198       if p1 > 1 then s1 := MidStr(Text, 1, p1-1);
    199       s2 := MidStr(Text, p1, p2-p1+1);
    200       s3 := MidStr(Text, p2+1, Length(Text)-p2);
     611      Result := ''; //default of no result.
     612
     613      p1 := Pos(UpperCase(OpenTag), UpperCase(Text));
     614      if (p1 > 0) then begin
     615        p2 := Pos(UpperCase(CloseTag),UpperCase(Text)) + Length(CloseTag) -1;
     616        if ((p2 > 0) and (p2 > p1)) then begin
     617          CutInThree (Text, p1,p2, s1,Result,s3);
     618          Text := s1+s3;
     619          //Now, remove any CR's or LF's
     620          repeat
     621            p1 := Pos (Chr(13),Result);
     622            if p1= 0 then p1 := Pos (Chr(10),Result);
     623            if (p1 > 0) then begin
     624              CutInThree (Result, p1,p1, s1,s2,s3);
     625              Result := s1+s3;
     626  //            Text := MidStr(Text,1,p1-1) + MidStr(Text,p1+1,Length(Text)-p1);
     627            end;
     628          until (p1=0);
     629          //Now cut off boundry tags if requested.
     630          if not KeepTags then begin
     631            p1 := Length(OpenTag) + 1;
     632            p2 := Length (Result) - Length (CloseTag);
     633            CutInThree (Result, p1,p2, s1,s2,s3);
     634            Result := s2;
     635          end;
     636        end;
     637      end;
    201638    end;
    202639
    203640  var
    204     p1,p2 : integer;
    205     s1,s2,s3 : AnsiString;
    206 
    207   begin
    208     Result := ''; //default of no result.
    209 
    210     p1 := Pos(UpperCase(OpenTag), UpperCase(Text));
    211     if (p1 > 0) then begin
    212       p2 := Pos(UpperCase(CloseTag),UpperCase(Text)) + Length(CloseTag) -1;
    213       if ((p2 > 0) and (p2 > p1)) then begin
    214         CutInThree (Text, p1,p2, s1,Result,s3);
    215         Text := s1+s3;
    216         //Now, remove any CR's or LF's
    217         repeat
    218           p1 := Pos (Chr(13),Result);
    219           if p1= 0 then p1 := Pos (Chr(10),Result);
    220           if (p1 > 0) then begin
    221             CutInThree (Result, p1,p1, s1,s2,s3);
    222             Result := s1+s3;
    223 //            Text := MidStr(Text,1,p1-1) + MidStr(Text,p1+1,Length(Text)-p1);
    224           end;
    225         until (p1=0);
    226         //Now cut off boundry tags if requested.
    227         if not KeepTags then begin
    228           p1 := Length(OpenTag) + 1;
    229           p2 := Length (Result) - Length (CloseTag);
    230           CutInThree (Result, p1,p2, s1,s2,s3);
    231           Result := s2;
    232         end;
    233       end;
    234     end;
    235   end;
    236 
    237 var
    238   Text : AnsiString;
    239   Line : string;
    240 
    241 begin
    242   Result := false;  //set default
    243   if (ImageList <> nil) then begin
     641    Text : AnsiString;
     642    LineStr : string;
     643
     644  begin
     645    Result := false;  //set default
     646    if (ImageList = nil) or (Lines = nil) then exit;
    244647    ImageList.Clear;  //set default
    245648    Text := Lines.Text;  //Get entire note into one long string
    246649    repeat
    247       Line := GetBetween (Text, '<img', '>', true);
    248       if Line <> '' then begin
    249         ImageList.Add(Line);
     650      LineStr := GetBetween (Text, '<img', '>', true);
     651      if LineStr <> '' then begin
     652        ImageList.Add(LineStr);
    250653        Result := true;
    251654      end;
    252     until Line = '';
     655    until LineStr = '';
    253656    //Note: The following works, but need to replace removed links
    254657    // with "[Title]"   Work on later...
    255658    //memNote.Lines.Text := Text;
    256659  end;
    257 end;
    258 
    259 
    260 
     660
     661  function ProtectHTMLSpaces(Text : String) : string;
     662  begin
     663    Result := AnsiReplaceStr(Text, #9, '&nbsp;&nbsp;&nbsp;&nbsp; ');
     664    while Pos('  ',Result)>0 do begin //preserve whitespace
     665        Result := AnsiReplaceStr(Result, '  ', '&nbsp;&nbsp;');   
     666    end;
     667  end;
     668
     669  function  Text2HTML(Lines : TStrings) : String;
     670  //Purpose: Take plain text, and prep for viewing in HTML viewer.
     671  //i.e. convert TABs into &nbsp's and add <br> at end of line etc. 
     672  var i : integer;
     673      tempS : string;
     674  begin
     675    for i := 0 to Lines.Count-1 do begin
     676      tempS := TrimRight(Lines.Strings[i]);
     677      if i = Lines.Count-1 then tempS := tempS + '<P>'
     678      else tempS := tempS + '<BR>';
     679      Lines.Strings[i] := tempS;
     680    end;       
     681    Result := ProtectHTMLSpaces(Lines.Text)
     682  end;
     683
     684  function Text2HTML(text : string) : String;    overload;
     685  var Lines : TStringList;
     686  begin
     687    Lines := TStringList.create;
     688    Lines.Text := text;
     689    Result := Text2HTML(Lines);
     690    Lines.Free;
     691  end;
     692
     693  type
     694    TFontSizeData = record
     695      case byte of 1: (Data : array[0..3] of byte);
     696                   2: (Size : byte; Filler : array[1..3] of byte);
     697    end;   
     698   
     699  var
     700    StoredFontSize : TFontSizeData;
     701    FontSizeReg:     TRegistry;
     702 
     703  procedure SetRegHTMLFontSize(Size: byte);
     704  //Purpose: To set the internet explorer Font Size value via the registry.
     705  //Expected input: HTML_SMALLEST, HTML_SMALL, HTML_MEDIUM,HTML_LARGE, HTML_LARGEST
     706  //         Value should be 0 (smallest) - 4 (largest)
     707  const  HTML_BLANK : TFontSizeData =(Data: (0,0,0,0));
     708  var  Value : TFontSizeData;
     709
     710  begin
     711    if Size > 4 then Size := 4;
     712    Value := HTML_BLANK; Value.Size := Size;
     713    FontSizeReg := TRegistry.Create;  //To be freed in RestoreRegHTMLFontSize
     714    try
     715      FontSizeReg.Rootkey := HKEY_CURRENT_USER;
     716      if FontSizeReg.OpenKey('\Software\Microsoft\Internet Explorer\International\Scripts\3', False) then begin
     717        FontSizeReg.ReadBinaryData('IEFontSize',StoredFontSize,Sizeof(StoredFontSize));
     718        FontSizeReg.WriteBinaryData('IEFontSize',Value,SizeOf(Value));
     719      end;
     720    finally
     721    end;
     722  end;
     723
     724  procedure RestoreRegHTMLFontSize;
     725  //Purpose: To restore the Internet Explorer zoom value to a stored value..
     726  //elh 6/19/09
     727  begin
     728    if not assigned(FontSizeReg) then FontSizeReg := TRegistry.Create;
     729    try
     730      FontSizeReg.WriteBinaryData('IEFontSize',StoredFontSize,SizeOf(StoredFontSize));
     731    finally
     732      FontSizeReg.Free;
     733    end;
     734  end;
     735
     736  var
     737    StoredIEHeader, StoredIEFooters : string;
     738    Reg : TRegistry;
     739   
     740  procedure SetupHTMLPrinting(Name,DOB,Location,Institution : string);
     741  //Purpose: To open the IE header and footer registry keys, save the
     742  //current value and then replace with passed patient data.   elh 6/19/09
     743  //NOTE: There does not seem to be any other way to do this programatically.
     744  var NewHeader,NewFooter : string;
     745  begin
     746    if DesiredHTMLFontSize > 0 then begin
     747      SetRegHTMLFontSize(DesiredHTMLFontSize-1);   //Downsize by 1 step
     748    end; 
     749    NewHeader := Location + ' &b ' + Institution + ' &b Printed: &d &t';
     750    NewFooter := Name + ' &b DOB: ' + DOB + ' &b &p of &P';
     751    Reg := TRegistry.Create;  //to be freed in RestoreIEPrinting
     752    try
     753      Reg.Rootkey := HKEY_CURRENT_USER;
     754      if Reg.OpenKey('\Software\Microsoft\Internet Explorer\PageSetup', False) then begin
     755        StoredIEFooters := Reg.ReadString('footer');
     756        StoredIEHeader := Reg.ReadString('header');
     757        Reg.WriteString('header',NewHeader);
     758        Reg.WriteString('footer',NewFooter);
     759      end;
     760    finally
     761    end;
     762  end;
     763
     764  procedure RestoreIEPrinting;
     765  //Purpose: To restore the IE header and footer registry with the initial value
     766  //elh 6/19/09
     767  begin
     768    if not assigned(Reg) then Reg := TRegistry.Create;
     769    try
     770      Reg.WriteString('footer',StoredIEFooters);
     771      Reg.WriteString('header',StoredIEHeader);
     772      RestoreRegHTMLFontSize;
     773    finally
     774      Reg.Free;
     775    end;
     776  end;
     777
     778begin
     779  DesiredHTMLFontSize := 2; //probably overwritten in fNotes initialization
    261780end.
  • cprs/branches/tmg-cprs/CPRS-Chart/rReports.pas

    r453 r541  
    44interface
    55
    6 uses Windows, SysUtils, Classes, ORNet, ORFn, ComCtrls, Chart, graphics;
     6uses
     7  Windows, SysUtils, Classes, ORNet, ORFn,
     8  Forms, //kt 8/09
     9  ComCtrls, Chart, graphics;
    710
    811{ Consults }
     
    4750           aComponents: TStringlist; ARemoteSiteID, ARemoteQuery, AHSTag: string): TStrings;
    4851procedure PrintWindowsReport(ARichEdit: TRichEdit; APageBreak, ATitle: string;
    49   var ErrMsg: string);
     52                             var ErrMsg: string; Application : TApplication); //kt 8/09 added Application
    5053function DefaultToWindowsPrinter: Boolean;
    5154procedure PrintGraph(GraphImage: TChart; PageTitle: string);
     
    6366
    6467uses uCore, rCore, Printers, clipbrd, uReports, fReports,
     68      rHTMLTools,  //kt 8/09
    6569      DKLang  //kt
    6670      ;
     
    541545end;
    542546
    543 procedure PrintWindowsReport(ARichEdit: TRichEdit; APageBreak, Atitle: string; var ErrMsg: string);
     547procedure PrintWindowsReport(ARichEdit: TRichEdit; APageBreak, Atitle: string;
     548                             var ErrMsg: string;
     549                             Application : TApplication //kt added 8/09
     550                             );
    544551var
    545552  i, j, x, y, LineHeight: integer;
    546553  aGoHead: string;
    547554  aHeader: TStringList;
     555  Header,Footer,TempLines: TStringList;  //kt added 8/09
     556  IsHTML : Boolean;                      //kt added 8/09
     557
    548558const
    549559//TX_ERR_CAP = 'Print Error';  <-- original line.  //kt 8/20/2007
     
    566576    end;
    567577  CreatePatientHeader(aHeader ,ATitle);
    568   with ARichEdit do
    569     begin
    570 (*      if Lines[Lines.Count - 1] = APageBreak then      //  remove trailing form feed
     578  IsHTML := rHTMLTools.IsHTML(ARichEdit.Lines); //kt 8/09
     579  if not IsHTML then begin  //kt 8/09
     580    with ARichEdit do  begin
     581  (*  if Lines[Lines.Count - 1] = APageBreak then      //  remove trailing form feed
    571582        Lines.Delete(Lines.Count - 1);
    572583      while (Lines[0] = '') or (Lines[0] = APageBreak) do
    573584        Lines.Delete(0);                               //  remove leading blank lines and form feeds*)
    574585
    575         {v20.4 - SFC-0602-62899 - RV}
    576         while (Lines.Count > 0) and ((Lines[Lines.Count - 1] = '') or (Lines[Lines.Count - 1] = APageBreak)) do
    577           Lines.Delete(Lines.Count - 1);                 //  remove trailing blank lines and form feeds
    578         while (Lines.Count > 0) and ((Lines[0] = '') or (Lines[0] = APageBreak)) do
    579           Lines.Delete(0);                               //  remove leading blank lines and form feeds
    580 
    581       if Lines.Count > 1 then
    582         begin
    583 (*          i := Lines.IndexOf(APageBreak);
    584           if ((i >= 0 ) and (i < Lines.Count - 1)) then        // removed in v15.9 (RV)
    585             begin*)
    586               Printer.Canvas.Font.Size := TX_FONT_SIZE;
    587               Printer.Canvas.Font.Name := TX_FONT_NAME;
    588               Printer.Title := ATitle;
    589               x := Trunc(Printer.Canvas.TextWidth(StringOfChar('=', TX_FONT_SIZE)) * 0.75);
    590               LineHeight := Printer.Canvas.TextHeight(TX_FONT_NAME);
    591               y := LineHeight * 5;            // 5 lines = .83" top margin   v15.9 (RV)
    592               Printer.BeginDoc;
    593               for i := 0 to Lines.Count - 1 do
    594                 begin
    595                   if Lines[i] = APageBreak then
    596                     begin
    597                       Printer.NewPage;
    598                       y := LineHeight * 5;   // 5 lines = .83" top margin    v15.9 (RV)
    599                       if aGoHead = '1' then
    600                         begin
    601                           for j := 0 to aHeader.Count - 1 do
    602                             begin
    603                               Printer.Canvas.TextOut(x, y, aHeader[j]);
    604                               y := y + LineHeight;
    605                             end;
    606                         end;
    607                     end
    608                   else
    609                     begin
    610                       Printer.Canvas.TextOut(x, y, Lines[i]);
    611                       y := y + LineHeight;
    612                     end;
    613                 end;
    614               Printer.EndDoc;
    615 (*            end
    616           else                               // removed in v15.9 (RV)  TRichEdit.Print no longer used.
     586      {v20.4 - SFC-0602-62899 - RV}
     587      while (Lines.Count > 0) and ((Lines[Lines.Count - 1] = '') or (Lines[Lines.Count - 1] = APageBreak)) do
     588        Lines.Delete(Lines.Count - 1);                 //  remove trailing blank lines and form feeds
     589      while (Lines.Count > 0) and ((Lines[0] = '') or (Lines[0] = APageBreak)) do
     590        Lines.Delete(0);                               //  remove leading blank lines and form feeds
     591
     592      if Lines.Count > 1 then begin
     593  (*    i := Lines.IndexOf(APageBreak);
     594        if ((i >= 0 ) and (i < Lines.Count - 1)) then        // removed in v15.9 (RV)
     595              begin*)
     596        Printer.Canvas.Font.Size := TX_FONT_SIZE;
     597        Printer.Canvas.Font.Name := TX_FONT_NAME;
     598        Printer.Title := ATitle;
     599        x := Trunc(Printer.Canvas.TextWidth(StringOfChar('=', TX_FONT_SIZE)) * 0.75);
     600        LineHeight := Printer.Canvas.TextHeight(TX_FONT_NAME);
     601        y := LineHeight * 5;            // 5 lines = .83" top margin   v15.9 (RV)
     602        Printer.BeginDoc;
     603        for i := 0 to Lines.Count - 1 do begin
     604          if Lines[i] = APageBreak then begin
     605            Printer.NewPage;
     606            y := LineHeight * 5;   // 5 lines = .83" top margin    v15.9 (RV)
     607            if aGoHead = '1' then begin
     608              for j := 0 to aHeader.Count - 1 do begin
     609                Printer.Canvas.TextOut(x, y, aHeader[j]);
     610                y := y + LineHeight;
     611              end;
     612            end;
     613          end else begin
     614            Printer.Canvas.TextOut(x, y, Lines[i]);
     615            y := y + LineHeight;
     616          end;
     617        end;
     618        Printer.EndDoc;
     619(*      end
     620        else                               // removed in v15.9 (RV)  TRichEdit.Print no longer used.
    617621            try
    618622              Font.Size := TX_FONT_SIZE;
     
    622626              ErrMsg := TX_ERR_CAP;
    623627            end;*)
    624         end
    625       else if ARichEdit.Lines.Count = 1 then
     628      end else if ARichEdit.Lines.Count = 1 then
    626629        if Piece(ARichEdit.Lines[0], U, 1) <> '0' then
    627630          ErrMsg := Piece(ARichEdit.Lines[0], U, 2);
    628631    end;
     632  end else begin  //kt added this entire block. 8/09
     633    TempLines := TStringList.Create;
     634    Header := TStringList.Create;
     635    Footer := TStringList.Create;
     636    TempLines.Assign(ARichEdit.Lines);
     637    StripBeforeAfterHTML(TempLines,Header,Footer);
     638    //LoadDocumentText(TempLines, FNote);  //Get document without headers/footers
     639    PrintHTMLReport(TempLines,ErrMsg,
     640                    Patient.Name,
     641                    FormatFMDateTime('mm/dd/yyyy', Patient.DOB),
     642                    Encounter.LocationName, Application);
     643    TempLines.Free;
     644    Header.Free;
     645    Footer.Free;
     646  end;  //kt end of added block 8/09
    629647  aHeader.Free;
    630648end;
  • cprs/branches/tmg-cprs/CPRS-Chart/uReminders.pas

    r453 r541  
    77  Windows, Messages, Classes, Controls, StdCtrls, SysUtils, ComCtrls, Menus,
    88  Graphics, Forms, ORClasses, ORCtrls, ORDtTm, ORFn, ORNet, Dialogs, uPCE, uVitals,
     9  TMGHTML2, //kt added 8/09
    910  ExtCtrls, fDrawers, fDeviceSelect;
    1011
     
    289290    Drawers: TFrmDrawers;
    290291    NewNoteRE: TRichEdit;
     292    NewNoteHTMLE : THTMLObj; //kt 8/09
    291293    NoteList: TORListBox;
    292294  end;
Note: See TracChangeset for help on using the changeset viewer.