Changeset 729


Ignore:
Timestamp:
Mar 31, 2010, 5:06:56 PM (15 years ago)
Author:
Kevin Toppenberg
Message:

Added functions to Templates, and Images tab

Location:
cprs/branches/tmg-cprs/CPRS-Chart
Files:
12 added
36 edited

Legend:

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

    r686 r729  
    1313
    1414// PASTLWTR : 1.2
    15 // File generated on 1/22/2010 5:46:21 PM from Type Library described below.
     15// File generated on 3/29/2010 5:43:06 PM from Type Library described below.
    1616
    1717// ************************************************************************  //
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart.dof

    r654 r729  
    101101UsePackages=0
    102102[Parameters]
    103 RunParams=CCOW=disable s=192.168.3.97 p=9260 SPOOF-VER=1.0.26.69
     103RunParams=CCOW=disable s=192.168.3.99 p=9260
    104104HostApplication=
    105105Launcher=
     
    135135ProductVersion=1.0.0.0
    136136Comments=1.0.26.69
     137[Excluded Packages]
     138c:\program files\borland\delphi7\Projects\Bpl\SXSkin_D7_D.bpl=SXSkinComponents Design Time
     139C:\Program Files\Borland\Delphi7\Projects\Bpl\SXSkin_D7_R.bpl=SXSkinComponents
    137140[HistoryLists\hlDebugSourcePath]
    138141Count=1
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart.dpr

    r686 r729  
    307307  fImages in 'fImages.pas' {frmImages},
    308308  UploadImages in 'UploadImages.pas' {UploadForm},
    309   UploadProgress in 'UploadProgress.pas' {UploadProgressForm},
     309  frmImageTransferProgress in 'TMG_Extra\frmImageTransferProgress.pas' {ImageTransferForm},
    310310  fProbLex in 'fProbLex.pas' {frmPLLex},
    311311  fTIUView in 'fTIUView.pas' {frmTIUView},
     
    323323  EditTextU in 'TMG_Extra\EditTextU.pas' {EditTextForm},
    324324  ORNet in '..\CPRS-Lib\ORNet.pas',
    325   fTMGPrintingAnimation in 'TMG_Extra\fTMGPrintingAnimation.pas';
     325  fTMGPrintingAnimation in 'TMG_Extra\fTMGPrintingAnimation.pas',
     326  uTMGOptions in 'uTMGOptions.pas',
     327  fPtLabelPrint in 'TMG_Extra\fPtLabelPrint.pas' {frmPtLabelPrint},
     328  uEvaluate in 'uEvaluate.pas';
    326329
    327330{$R *.TLB}
     
    337340    Application.Initialize;
    338341    frmSplash := nil;
    339     if ParamSearch('SPLASH') <> 'OFF' then
    340     begin
     342    if ParamSearch('SPLASH') <> 'OFF' then begin
    341343      frmSplash := TfrmSplash.Create(Application);  // show splash screen
    342344      frmSplash.Show;                               //         "
     
    348350    Application.CreateForm(TdmodShared, dmodShared);
    349351  Application.CreateForm(TfrmFrame, frmFrame);
    350   if frmframe.TMGAbort = False then begin   //kt 3/25/09
     352  //kt <--- frmImages etc created here
     353    Application.CreateForm(TfrmPtLabelPrint, frmPtLabelPrint);
     354    if frmframe.TMGAbort = False then begin   //kt 3/25/09
    351355      Application.CreateForm(TfrmSearchStop, frmSearchStop);
    352       Application.CreateForm(TfrmImages, frmImages);
    353356      Application.CreateForm(TUploadForm, UploadForm);
    354       Application.CreateForm(TUploadProgressForm, UploadProgressForm);
     357      Application.CreateForm(TImageTransferForm, ImageTransferForm);
    355358      Application.CreateForm(TfrmODAllergy, frmODAllergy);
    356359      Application.CreateForm(TfrmDeviceSelect, frmDeviceSelect);
     
    364367      Application.CreateForm(TEditTextForm, EditTextForm);
    365368      Application.CreateForm(TfrmTMGPrinting,frmTMGPrinting);
    366       //kt Application.CreateForm(TfrmWebTab, frmWebTab);
    367369      frmSplash.Free;                               // close & free splash screen
    368370      Application.Run;
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart.drc

    r671 r729  
    99*/
    1010
    11 #define pnglang_EPNGSizeExceedsText 64928
    12 #define pnglang_EPNGUnknownPalEntryText 64929
    13 #define pnglang_EPNGUnknownCriticalChunkText 64930
    14 #define pnglang_EPNGUnknownCompressionText 64931
    15 #define pnglang_EPNGUnknownInterlaceText 64932
    16 #define pnglang_EPNGCannotAssignChunkText 64933
    17 #define pnglang_EPNGUnexpectedEndText 64934
    18 #define pnglang_EPNGNoImageDataText 64935
    19 #define pnglang_EPNGCannotChangeSizeText 64936
    20 #define pnglang_EPNGOutMemoryText 64937
    21 #define pnglang_EPNGHeaderNotPresentText 64938
    22 #define JConsts_sChangeJPGSize 64939
    23 #define JConsts_sJPEGError 64940
    24 #define JConsts_sJPEGImageFile 64941
    25 #define IdResourceStrings_RSStackETOOMANYREFS 64944
    26 #define IdResourceStrings_RSStackETIMEDOUT 64945
    27 #define IdResourceStrings_RSStackECONNREFUSED 64946
    28 #define IdResourceStrings_RSStackELOOP 64947
    29 #define IdResourceStrings_RSStackENAMETOOLONG 64948
    30 #define IdResourceStrings_RSStackEHOSTDOWN 64949
    31 #define IdResourceStrings_RSStackEHOSTUNREACH 64950
    32 #define IdResourceStrings_RSStackENOTEMPTY 64951
    33 #define IdResourceStrings_RSStackHOST_NOT_FOUND 64952
    34 #define pnglang_EPngInvalidCRCText 64953
    35 #define pnglang_EPNGInvalidIHDRText 64954
    36 #define pnglang_EPNGMissingMultipleIDATText 64955
    37 #define pnglang_EPNGZLIBErrorText 64956
    38 #define pnglang_EPNGInvalidPaletteText 64957
    39 #define pnglang_EPNGInvalidFileHeaderText 64958
    40 #define pnglang_EPNGIHDRNotFirstText 64959
    41 #define IdResourceStrings_RSStackEPROTONOSUPPORT 64960
    42 #define IdResourceStrings_RSStackESOCKTNOSUPPORT 64961
    43 #define IdResourceStrings_RSStackEOPNOTSUPP 64962
    44 #define IdResourceStrings_RSStackEPFNOSUPPORT 64963
    45 #define IdResourceStrings_RSStackEAFNOSUPPORT 64964
    46 #define IdResourceStrings_RSStackEADDRINUSE 64965
    47 #define IdResourceStrings_RSStackEADDRNOTAVAIL 64966
    48 #define IdResourceStrings_RSStackENETDOWN 64967
    49 #define IdResourceStrings_RSStackENETUNREACH 64968
    50 #define IdResourceStrings_RSStackENETRESET 64969
    51 #define IdResourceStrings_RSStackECONNABORTED 64970
    52 #define IdResourceStrings_RSStackECONNRESET 64971
    53 #define IdResourceStrings_RSStackENOBUFS 64972
    54 #define IdResourceStrings_RSStackEISCONN 64973
    55 #define IdResourceStrings_RSStackENOTCONN 64974
    56 #define IdResourceStrings_RSStackESHUTDOWN 64975
    57 #define IdResourceStrings_RSInvalidServiceName 64976
    58 #define IdResourceStrings_RSStackError 64977
    59 #define IdResourceStrings_RSStackEINTR 64978
    60 #define IdResourceStrings_RSStackEBADF 64979
    61 #define IdResourceStrings_RSStackEACCES 64980
    62 #define IdResourceStrings_RSStackEFAULT 64981
    63 #define IdResourceStrings_RSStackEINVAL 64982
    64 #define IdResourceStrings_RSStackEMFILE 64983
    65 #define IdResourceStrings_RSStackEWOULDBLOCK 64984
    66 #define IdResourceStrings_RSStackEINPROGRESS 64985
    67 #define IdResourceStrings_RSStackEALREADY 64986
    68 #define IdResourceStrings_RSStackENOTSOCK 64987
    69 #define IdResourceStrings_RSStackEDESTADDRREQ 64988
    70 #define IdResourceStrings_RSStackEMSGSIZE 64989
    71 #define IdResourceStrings_RSStackEPROTOTYPE 64990
    72 #define IdResourceStrings_RSStackENOPROTOOPT 64991
    73 #define DBConsts_SInvalidSqlTimeStamp 64992
    74 #define VDBConsts_SFirstRecord 64993
    75 #define VDBConsts_SPriorRecord 64994
    76 #define VDBConsts_SNextRecord 64995
    77 #define VDBConsts_SLastRecord 64996
    78 #define VDBConsts_SInsertRecord 64997
    79 #define VDBConsts_SDeleteRecord 64998
    80 #define VDBConsts_SEditRecord 64999
    81 #define VDBConsts_SPostEdit 65000
    82 #define VDBConsts_SCancelEdit 65001
    83 #define VDBConsts_SRefreshRecord 65002
    84 #define VDBConsts_SRemoteLogin 65003
    85 #define IdResourceStrings_RSWinsockInitializationError 65004
    86 #define IdResourceStrings_RSSetSizeExceeded 65005
    87 #define IdResourceStrings_RSWS2CallError 65006
    88 #define IdResourceStrings_RSWS2LoadError 65007
    89 #define QConsts_SSave 65008
    90 #define QConsts_SUnknownImageFormat 65009
    91 #define QConsts_SUnableToWrite 65010
    92 #define QConsts_SUndo 65011
    93 #define QConsts_SRedo 65012
    94 #define QConsts_SLine 65013
    95 #define QConsts_SCut 65014
    96 #define QConsts_SCopy 65015
    97 #define QConsts_SPaste 65016
    98 #define QConsts_SClear 65017
    99 #define QConsts_SSelectAll 65018
    100 #define QConsts_SNoAppInLib 65019
    101 #define QConsts_SDuplicateApp 65020
    102 #define DBConsts_SBcdOverflow 65021
    103 #define DBConsts_SInvalidBcdValue 65022
    104 #define DBConsts_SCouldNotParseTimeStamp 65023
    105 #define QConsts_SMsgDlgError 65024
    106 #define QConsts_SMsgDlgInformation 65025
    107 #define QConsts_SMsgDlgConfirm 65026
    108 #define QConsts_SUnnamed 65027
    109 #define QConsts_SName 65028
    110 #define QConsts_SSize 65029
    111 #define QConsts_SType 65030
    112 #define QConsts_SDate 65031
    113 #define QConsts_SAttributes 65032
    114 #define QConsts_SDuplicateMenus 65033
    115 #define QConsts_SImageIndexError 65034
    116 #define QConsts_SInvalidImageDimensions 65035
    117 #define QConsts_SInvalidImageDimension 65036
    118 #define QConsts_SInvalidMimeSourceStream 65037
    119 #define QConsts_SMimeNotSupportedForIcon 65038
    120 #define QConsts_SOpen 65039
    121 #define QConsts_SNoMDIForm 65040
    122 #define QConsts_SNotAnMDIForm 65041
    123 #define QConsts_SMDIChildNotVisible 65042
    124 #define QConsts_SControlParentSetToSelf 65043
    125 #define QConsts_SOKButton 65044
    126 #define QConsts_SCancelButton 65045
    127 #define QConsts_SYesButton 65046
    128 #define QConsts_SNoButton 65047
    129 #define QConsts_SHelpButton 65048
    130 #define QConsts_SCloseButton 65049
    131 #define QConsts_SIgnoreButton 65050
    132 #define QConsts_SRetryButton 65051
    133 #define QConsts_SAbortButton 65052
    134 #define QConsts_SAllButton 65053
    135 #define QConsts_SCannotDragForm 65054
    136 #define QConsts_SMsgDlgWarning 65055
    137 #define QConsts_SmkcCtrl 65056
    138 #define QConsts_SmkcAlt 65057
    139 #define QConsts_SInvalidPixelFormat 65058
    140 #define QConsts_SNoCanvasHandle 65059
    141 #define QConsts_SInvalidCanvasState 65060
    142 #define QConsts_SInvalidImageSize 65061
    143 #define QConsts_SInvalidColorDepth 65062
    144 #define QConsts_SCannotFocus 65063
    145 #define QConsts_SParentRequired 65064
    146 #define QConsts_SVisibleChanged 65065
    147 #define QConsts_SMenuIndexError 65066
    148 #define QConsts_SMenuReinserted 65067
    149 #define QConsts_SNoMenuRecursion 65068
    150 #define QConsts_SMenuNotFound 65069
    151 #define QConsts_SMenuSetFormError 65070
    152 #define QConsts_SGroupIndexTooLow 65071
    153 #define QConsts_SmkcBackTab 65072
    154 #define QConsts_SmkcEsc 65073
    155 #define QConsts_SmkcReturn 65074
    156 #define QConsts_SmkcEnter 65075
    157 #define QConsts_SmkcSpace 65076
    158 #define QConsts_SmkcPgUp 65077
    159 #define QConsts_SmkcPgDn 65078
    160 #define QConsts_SmkcEnd 65079
    161 #define QConsts_SmkcHome 65080
    162 #define QConsts_SmkcLeft 65081
    163 #define QConsts_SmkcUp 65082
    164 #define QConsts_SmkcRight 65083
    165 #define QConsts_SmkcDown 65084
    166 #define QConsts_SmkcIns 65085
    167 #define QConsts_SmkcDel 65086
    168 #define QConsts_SmkcShift 65087
    169 #define DKLang_SDKLangErrMsg_DuplicatePropValueID 65088
    170 #define DKLang_SDKLangErrMsg_ErrorLoadingTran 65089
    171 #define DKLang_SDKLangErrMsg_InvalidConstName 65090
    172 #define DKLang_SDKLangErrMsg_DuplicateConstName 65091
    173 #define DKLang_SDKLangErrMsg_ConstantNotFound 65092
    174 #define DKLang_SDKLangErrMsg_LangManagerCalledAtDT 65093
    175 #define DKLang_SDKLangErrMsg_StreamVersionTooHigh 65094
    176 #define OleConst_SCannotActivate 65095
    177 #define OleConst_SNoWindowHandle 65096
    178 #define OleConst_SInvalidLicense 65097
    179 #define OleConst_SNotLicensed 65098
    180 #define OleConst_sNoRunningObject 65099
    181 #define QConsts_SInvalidCreateWidget 65100
    182 #define QConsts_STooManyMessageBoxButtons 65101
    183 #define QConsts_SmkcBkSp 65102
    184 #define QConsts_SmkcTab 65103
    185 #define TeeConst_TeeMsg_DefaultFontName 65104
    186 #define TeeConst_TeeMsg_CheckPointerSize 65105
    187 #define TeeConst_TeeMsg_FunctionPeriod 65106
    188 #define TeeConst_TeeMsg_PieOther 65107
    189 #define TeeConst_TeeMsg_ValuesX 65108
    190 #define TeeConst_TeeMsg_ValuesY 65109
    191 #define TeeConst_TeeMsg_ValuesPie 65110
    192 #define TeeConst_TeeMsg_ValuesBar 65111
    193 #define TeeConst_TeeMsg_ValuesAngle 65112
    194 #define TeeConst_TeeMsg_ValuesGanttStart 65113
    195 #define TeeConst_TeeMsg_ValuesGanttEnd 65114
    196 #define TeeConst_TeeMsg_ValuesGanttNextTask 65115
    197 #define TeeConst_TeeMsg_ValuesArrowEndX 65116
    198 #define TeeConst_TeeMsg_ValuesArrowEndY 65117
    199 #define TntSystem_SBufferOverflow 65118
    200 #define TntSystem_SInvalidUTF7 65119
    201 #define TeeConst_TeeMsg_GanttSample3 65120
    202 #define TeeConst_TeeMsg_GanttSample4 65121
    203 #define TeeConst_TeeMsg_GanttSample5 65122
    204 #define TeeConst_TeeMsg_GanttSample6 65123
    205 #define TeeConst_TeeMsg_GanttSample7 65124
    206 #define TeeConst_TeeMsg_GanttSample8 65125
    207 #define TeeConst_TeeMsg_GanttSample9 65126
    208 #define TeeConst_TeeMsg_GanttSample10 65127
    209 #define TeeConst_TeeMsg_DefaultFontSize 65128
    210 #define TeeConst_TeeMsg_FunctionAdd 65129
    211 #define TeeConst_TeeMsg_FunctionSubtract 65130
    212 #define TeeConst_TeeMsg_FunctionMultiply 65131
    213 #define TeeConst_TeeMsg_FunctionDivide 65132
    214 #define TeeConst_TeeMsg_FunctionHigh 65133
    215 #define TeeConst_TeeMsg_FunctionLow 65134
    216 #define TeeConst_TeeMsg_FunctionAverage 65135
    217 #define TeeConst_TeeMsg_GalleryFastLine 65136
    218 #define TeeConst_TeeMsg_Rotation 65137
    219 #define TeeConst_TeeMsg_PieSample1 65138
    220 #define TeeConst_TeeMsg_PieSample2 65139
    221 #define TeeConst_TeeMsg_PieSample3 65140
    222 #define TeeConst_TeeMsg_PieSample4 65141
    223 #define TeeConst_TeeMsg_PieSample5 65142
    224 #define TeeConst_TeeMsg_PieSample6 65143
    225 #define TeeConst_TeeMsg_PieSample7 65144
    226 #define TeeConst_TeeMsg_PieSample8 65145
    227 #define TeeConst_TeeMsg_GalleryStandard 65146
    228 #define TeeConst_TeeMsg_GalleryFunctions 65147
    229 #define TeeConst_TeeMsg_GalleryArrow 65148
    230 #define TeeConst_TeeMsg_GalleryGantt 65149
    231 #define TeeConst_TeeMsg_GanttSample1 65150
    232 #define TeeConst_TeeMsg_GanttSample2 65151
    233 #define TeeConst_TeeMsg_MaxPointsPerPage 65152
    234 #define TeeConst_TeeMsg_3dPercent 65153
    235 #define TeeConst_TeeMsg_CircularSeries 65154
    236 #define TeeConst_TeeMsg_BarWidthPercent 65155
    237 #define TeeConst_TeeMsg_BarOffsetPercent 65156
    238 #define TeeConst_TeeMsg_DefaultPercentOf 65157
    239 #define TeeConst_TeeMsg_DefPercentFormat 65158
    240 #define TeeConst_TeeMsg_DefValueFormat 65159
    241 #define TeeConst_TeeMsg_AxisTitle 65160
    242 #define TeeConst_TeeMsg_AxisLabels 65161
    243 #define TeeConst_TeeMsg_GalleryLine 65162
    244 #define TeeConst_TeeMsg_GalleryPoint 65163
    245 #define TeeConst_TeeMsg_GalleryArea 65164
    246 #define TeeConst_TeeMsg_GalleryBar 65165
    247 #define TeeConst_TeeMsg_GalleryHorizBar 65166
    248 #define TeeConst_TeeMsg_GalleryPie 65167
    249 #define ComConst_SNoCloseActiveServer1 65168
    250 #define ComConst_SNoCloseActiveServer2 65169
    251 #define TeeConst_TeeMsg_LegendTopPos 65170
    252 #define TeeConst_TeeMsg_LegendFirstValue 65171
    253 #define TeeConst_TeeMsg_LegendColorWidth 65172
    254 #define TeeConst_TeeMsg_SeriesSetDataSource 65173
    255 #define TeeConst_TeeMsg_SeriesInvDataSource 65174
    256 #define TeeConst_TeeMsg_FillSample 65175
    257 #define TeeConst_TeeMsg_Angle 65176
    258 #define TeeConst_TeeMsg_AxisLogDateTime 65177
    259 #define TeeConst_TeeMsg_AxisLogNotPositive 65178
    260 #define TeeConst_TeeMsg_AxisLabelSep 65179
    261 #define TeeConst_TeeMsg_AxisIncrementNeg 65180
    262 #define TeeConst_TeeMsg_AxisMinMax 65181
    263 #define TeeConst_TeeMsg_AxisMaxMin 65182
    264 #define TeeConst_TeeMsg_AxisLogBase 65183
    265 #define ComStrs_sFailSetCalMaxSelRange 65184
    266 #define ComStrs_sFailSetCalMinMaxRange 65185
    267 #define ComStrs_sFailsetCalSelRange 65186
    268 #define WinHelpViewer_hNoKeyword 65187
    269 #define ComConst_SCreateRegKeyError 65188
    270 #define ComConst_SOleError 65189
    271 #define ComConst_SObjectFactoryMissing 65190
    272 #define ComConst_STypeInfoMissing 65191
    273 #define ComConst_SBadTypeInfo 65192
    274 #define ComConst_SDispIntfMissing 65193
    275 #define ComConst_SNoMethod 65194
    276 #define ComConst_SVarNotObject 65195
    277 #define ComConst_STooManyParams 65196
    278 #define ComConst_SDCOMNotInstalled 65197
    279 #define ComConst_SDAXError 65198
    280 #define ComConst_SAutomationWarning 65199
    281 #define ComStrs_sTabFailSet 65200
    282 #define ComStrs_sTabFailSetObject 65201
    283 #define ComStrs_sTabMustBeMultiLine 65202
    284 #define ComStrs_sInvalidIndex 65203
    285 #define ComStrs_sInsertError 65204
    286 #define ComStrs_sInvalidOwner 65205
    287 #define ComStrs_sRichEditInsertError 65206
    288 #define ComStrs_sRichEditLoadFail 65207
    289 #define ComStrs_sRichEditSaveFail 65208
    290 #define ComStrs_sUDAssociated 65209
    291 #define ComStrs_sPageIndexError 65210
    292 #define ComStrs_sInvalidComCtl32 65211
    293 #define ComStrs_sDateTimeMax 65212
    294 #define ComStrs_sDateTimeMin 65213
    295 #define ComStrs_sNeedAllowNone 65214
    296 #define ComStrs_sFailSetCalDateTime 65215
    297 #define ExtCtrls_clNameInactiveCaptionText 65216
    298 #define ExtCtrls_clNameInfoBk 65217
    299 #define ExtCtrls_clNameInfoText 65218
    300 #define ExtCtrls_clNameMenu 65219
    301 #define ExtCtrls_clNameMenuText 65220
    302 #define ExtCtrls_clNameNone 65221
    303 #define ExtCtrls_clNameScrollBar 65222
    304 #define ExtCtrls_clName3DDkShadow 65223
    305 #define ExtCtrls_clName3DLight 65224
    306 #define ExtCtrls_clNameWindow 65225
    307 #define ExtCtrls_clNameWindowFrame 65226
    308 #define ExtCtrls_clNameWindowText 65227
    309 #define ComStrs_sTabFailClear 65228
    310 #define ComStrs_sTabFailDelete 65229
    311 #define ComStrs_sTabFailRetrieve 65230
    312 #define ComStrs_sTabFailGetObject 65231
    313 #define ExtCtrls_clNameMedGray 65232
    314 #define ExtCtrls_clNameActiveBorder 65233
    315 #define ExtCtrls_clNameActiveCaption 65234
    316 #define ExtCtrls_clNameAppWorkSpace 65235
    317 #define ExtCtrls_clNameBackground 65236
    318 #define ExtCtrls_clNameBtnFace 65237
    319 #define ExtCtrls_clNameBtnHighlight 65238
    320 #define ExtCtrls_clNameBtnShadow 65239
    321 #define ExtCtrls_clNameBtnText 65240
    322 #define ExtCtrls_clNameCaptionText 65241
    323 #define ExtCtrls_clNameDefault 65242
    324 #define ExtCtrls_clNameGrayText 65243
    325 #define ExtCtrls_clNameHighlight 65244
    326 #define ExtCtrls_clNameHighlightText 65245
    327 #define ExtCtrls_clNameInactiveBorder 65246
    328 #define ExtCtrls_clNameInactiveCaption 65247
    329 #define ExtCtrls_clNameOlive 65248
    330 #define ExtCtrls_clNameNavy 65249
    331 #define ExtCtrls_clNamePurple 65250
    332 #define ExtCtrls_clNameTeal 65251
    333 #define ExtCtrls_clNameGray 65252
    334 #define ExtCtrls_clNameSilver 65253
    335 #define ExtCtrls_clNameRed 65254
    336 #define ExtCtrls_clNameLime 65255
    337 #define ExtCtrls_clNameYellow 65256
    338 #define ExtCtrls_clNameBlue 65257
    339 #define ExtCtrls_clNameFuchsia 65258
    340 #define ExtCtrls_clNameAqua 65259
    341 #define ExtCtrls_clNameWhite 65260
    342 #define ExtCtrls_clNameMoneyGreen 65261
    343 #define ExtCtrls_clNameSkyBlue 65262
    344 #define ExtCtrls_clNameCream 65263
    345 #define Consts_SDockedCtlNeedsName 65264
    346 #define Consts_SDockTreeRemoveError 65265
    347 #define Consts_SDockZoneNotFound 65266
    348 #define Consts_SDockZoneHasNoCtl 65267
    349 #define Consts_SMultiSelectRequired 65268
    350 #define Consts_SSeparator 65269
    351 #define Consts_SErrorSettingCount 65270
    352 #define Consts_SListBoxMustBeVirtual 65271
    353 #define Consts_SNoGetItemEventHandler 65272
    354 #define HelpIntfs_hNoTableOfContents 65273
    355 #define HelpIntfs_hNothingFound 65274
    356 #define HelpIntfs_hNoContext 65275
    357 #define HelpIntfs_hNoTopics 65276
    358 #define ExtCtrls_clNameBlack 65277
    359 #define ExtCtrls_clNameMaroon 65278
    360 #define ExtCtrls_clNameGreen 65279
    361 #define Consts_SmkcAlt 65280
    362 #define Consts_srNone 65281
    363 #define Consts_SOutOfRange 65282
    364 #define Consts_sAllFilter 65283
    365 #define Consts_SInsertLineError 65284
    366 #define Consts_SInvalidClipFmt 65285
    367 #define Consts_SIconToClipboard 65286
    368 #define Consts_SCannotOpenClipboard 65287
    369 #define Consts_SInvalidMemoSize 65288
    370 #define Consts_SInvalidPrinterOp 65289
    371 #define Consts_SNoDefaultPrinter 65290
    372 #define Consts_SDuplicateMenus 65291
    373 #define Consts_SPictureLabel 65292
    374 #define Consts_SPictureDesc 65293
    375 #define Consts_SPreviewLabel 65294
    376 #define Consts_SCannotOpenAVI 65295
    377 #define Consts_SmkcTab 65296
    378 #define Consts_SmkcEsc 65297
    379 #define Consts_SmkcEnter 65298
    380 #define Consts_SmkcSpace 65299
    381 #define Consts_SmkcPgUp 65300
    382 #define Consts_SmkcPgDn 65301
    383 #define Consts_SmkcEnd 65302
    384 #define Consts_SmkcHome 65303
    385 #define Consts_SmkcLeft 65304
    386 #define Consts_SmkcUp 65305
    387 #define Consts_SmkcRight 65306
    388 #define Consts_SmkcDown 65307
    389 #define Consts_SmkcIns 65308
    390 #define Consts_SmkcDel 65309
    391 #define Consts_SmkcShift 65310
    392 #define Consts_SmkcCtrl 65311
    393 #define Consts_SMsgDlgWarning 65312
    394 #define Consts_SMsgDlgError 65313
    395 #define Consts_SMsgDlgInformation 65314
    396 #define Consts_SMsgDlgConfirm 65315
    397 #define Consts_SMsgDlgYes 65316
    398 #define Consts_SMsgDlgNo 65317
    399 #define Consts_SMsgDlgOK 65318
    400 #define Consts_SMsgDlgCancel 65319
    401 #define Consts_SMsgDlgHelp 65320
    402 #define Consts_SMsgDlgAbort 65321
    403 #define Consts_SMsgDlgRetry 65322
    404 #define Consts_SMsgDlgIgnore 65323
    405 #define Consts_SMsgDlgAll 65324
    406 #define Consts_SMsgDlgNoToAll 65325
    407 #define Consts_SMsgDlgYesToAll 65326
    408 #define Consts_SmkcBkSp 65327
    409 #define Consts_SCancelButton 65328
    410 #define Consts_SYesButton 65329
    411 #define Consts_SNoButton 65330
    412 #define Consts_SHelpButton 65331
    413 #define Consts_SCloseButton 65332
    414 #define Consts_SIgnoreButton 65333
    415 #define Consts_SRetryButton 65334
    416 #define Consts_SAbortButton 65335
    417 #define Consts_SAllButton 65336
    418 #define Consts_SCannotDragForm 65337
    419 #define Consts_SVMetafiles 65338
    420 #define Consts_SVEnhMetafiles 65339
    421 #define Consts_SVIcons 65340
    422 #define Consts_SVBitmaps 65341
    423 #define Consts_SMaskErr 65342
    424 #define Consts_SMaskEditErr 65343
    425 #define Consts_SVisibleChanged 65344
    426 #define Consts_SCannotShowModal 65345
    427 #define Consts_SScrollBarRange 65346
    428 #define Consts_SPropertyOutOfRange 65347
    429 #define Consts_SMenuIndexError 65348
    430 #define Consts_SMenuReinserted 65349
    431 #define Consts_SMenuNotFound 65350
    432 #define Consts_SNoTimers 65351
    433 #define Consts_SNotPrinting 65352
    434 #define Consts_SPrinting 65353
    435 #define Consts_SInvalidPrinter 65354
    436 #define Consts_SDeviceOnPort 65355
    437 #define Consts_SGroupIndexTooLow 65356
    438 #define Consts_SNoMDIForm 65357
    439 #define Consts_SControlParentSetToSelf 65358
    440 #define Consts_SOKButton 65359
    441 #define Consts_SUnknownExtension 65360
    442 #define Consts_SUnknownClipboardFormat 65361
    443 #define Consts_SOutOfResources 65362
    444 #define Consts_SNoCanvasHandle 65363
    445 #define Consts_SInvalidImageSize 65364
    446 #define Consts_SInvalidImageList 65365
    447 #define Consts_SReplaceImage 65366
    448 #define Consts_SImageIndexError 65367
    449 #define Consts_SImageReadFail 65368
    450 #define Consts_SImageWriteFail 65369
    451 #define Consts_SWindowDCError 65370
    452 #define Consts_SWindowClass 65371
    453 #define Consts_SCannotFocus 65372
    454 #define Consts_SParentRequired 65373
    455 #define Consts_SParentGivenNotAParent 65374
    456 #define Consts_SMDIChildNotVisible 65375
    457 #define RTLConsts_STooManyDeleted 65376
    458 #define RTLConsts_SUnknownGroup 65377
    459 #define RTLConsts_SUnknownProperty 65378
    460 #define RTLConsts_SWriteError 65379
    461 #define RTLConsts_SThreadCreateError 65380
    462 #define RTLConsts_SThreadError 65381
    463 #define Consts_SInvalidTabPosition 65382
    464 #define Consts_SInvalidTabStyle 65383
    465 #define Consts_SInvalidBitmap 65384
    466 #define Consts_SInvalidIcon 65385
    467 #define Consts_SInvalidMetafile 65386
    468 #define Consts_SInvalidPixelFormat 65387
    469 #define Consts_SInvalidImage 65388
    470 #define Consts_SScanLine 65389
    471 #define Consts_SChangeIconSize 65390
    472 #define Consts_SOleGraphic 65391
    473 #define RTLConsts_SInvalidPropertyType 65392
    474 #define RTLConsts_SInvalidPropertyValue 65393
    475 #define RTLConsts_SInvalidRegType 65394
    476 #define RTLConsts_SInvalidStringGridOp 65395
    477 #define RTLConsts_SListCapacityError 65396
    478 #define RTLConsts_SListCountError 65397
    479 #define RTLConsts_SListIndexError 65398
    480 #define RTLConsts_SMemoryStreamError 65399
    481 #define RTLConsts_SPropertyException 65400
    482 #define RTLConsts_SReadError 65401
    483 #define RTLConsts_SReadOnlyProperty 65402
    484 #define RTLConsts_SRegGetDataFailed 65403
    485 #define RTLConsts_SRegSetDataFailed 65404
    486 #define RTLConsts_SResNotFound 65405
    487 #define RTLConsts_SSeekNotImplemented 65406
    488 #define RTLConsts_SSortedListError 65407
    489 #define RTLConsts_SDuplicateItem 65408
    490 #define RTLConsts_SDuplicateName 65409
    491 #define RTLConsts_SDuplicateString 65410
    492 #define RTLConsts_SFCreateErrorEx 65411
    493 #define RTLConsts_SFixedColTooBig 65412
    494 #define RTLConsts_SFixedRowTooBig 65413
    495 #define RTLConsts_SFOpenErrorEx 65414
    496 #define RTLConsts_SGridTooLarge 65415
    497 #define RTLConsts_SIndexOutOfRange 65416
    498 #define RTLConsts_SIniFileWriteError 65417
    499 #define RTLConsts_SInvalidImage 65418
    500 #define RTLConsts_SInvalidMask 65419
    501 #define RTLConsts_SInvalidName 65420
    502 #define RTLConsts_SInvalidProperty 65421
    503 #define RTLConsts_SInvalidPropertyElement 65422
    504 #define RTLConsts_SInvalidPropertyPath 65423
    505 #define SysConst_SShortDayNameSat 65424
    506 #define SysConst_SLongDayNameSun 65425
    507 #define SysConst_SLongDayNameMon 65426
    508 #define SysConst_SLongDayNameTue 65427
    509 #define SysConst_SLongDayNameWed 65428
    510 #define SysConst_SLongDayNameThu 65429
    511 #define SysConst_SLongDayNameFri 65430
    512 #define SysConst_SLongDayNameSat 65431
    513 #define SysConst_SCannotCreateDir 65432
    514 #define RTLConsts_SAncestorNotFound 65433
    515 #define RTLConsts_SAssignError 65434
    516 #define RTLConsts_SBitsIndexError 65435
    517 #define RTLConsts_SCantWriteResourceStreamError 65436
    518 #define RTLConsts_SCheckSynchronizeError 65437
    519 #define RTLConsts_SClassNotFound 65438
    520 #define RTLConsts_SDuplicateClass 65439
    521 #define SysConst_SLongMonthNameMar 65440
    522 #define SysConst_SLongMonthNameApr 65441
    523 #define SysConst_SLongMonthNameMay 65442
    524 #define SysConst_SLongMonthNameJun 65443
    525 #define SysConst_SLongMonthNameJul 65444
    526 #define SysConst_SLongMonthNameAug 65445
    527 #define SysConst_SLongMonthNameSep 65446
    528 #define SysConst_SLongMonthNameOct 65447
    529 #define SysConst_SLongMonthNameNov 65448
    530 #define SysConst_SLongMonthNameDec 65449
    531 #define SysConst_SShortDayNameSun 65450
    532 #define SysConst_SShortDayNameMon 65451
    533 #define SysConst_SShortDayNameTue 65452
    534 #define SysConst_SShortDayNameWed 65453
    535 #define SysConst_SShortDayNameThu 65454
    536 #define SysConst_SShortDayNameFri 65455
    537 #define SysConst_SOSError 65456
    538 #define SysConst_SUnkOSError 65457
    539 #define SysConst_SShortMonthNameJan 65458
    540 #define SysConst_SShortMonthNameFeb 65459
    541 #define SysConst_SShortMonthNameMar 65460
    542 #define SysConst_SShortMonthNameApr 65461
    543 #define SysConst_SShortMonthNameMay 65462
    544 #define SysConst_SShortMonthNameJun 65463
    545 #define SysConst_SShortMonthNameJul 65464
    546 #define SysConst_SShortMonthNameAug 65465
    547 #define SysConst_SShortMonthNameSep 65466
    548 #define SysConst_SShortMonthNameOct 65467
    549 #define SysConst_SShortMonthNameNov 65468
    550 #define SysConst_SShortMonthNameDec 65469
    551 #define SysConst_SLongMonthNameJan 65470
    552 #define SysConst_SLongMonthNameFeb 65471
    553 #define SysConst_SVarTypeNotUsableWithPrefix 65472
    554 #define SysConst_SVarTypeTooManyCustom 65473
    555 #define SysConst_SVarTypeCouldNotConvert 65474
    556 #define SysConst_SVarTypeConvertOverflow 65475
    557 #define SysConst_SVarOverflow 65476
    558 #define SysConst_SVarInvalid 65477
    559 #define SysConst_SVarBadType 65478
    560 #define SysConst_SVarNotImplemented 65479
    561 #define SysConst_SVarUnexpected 65480
    562 #define SysConst_SExternalException 65481
    563 #define SysConst_SAssertionFailed 65482
    564 #define SysConst_SIntfCastError 65483
    565 #define SysConst_SSafecallException 65484
    566 #define SysConst_SAssertError 65485
    567 #define SysConst_SAbstractError 65486
    568 #define SysConst_SModuleAccessViolation 65487
    569 #define SysConst_SExceptTitle 65488
    570 #define SysConst_SInvalidFormat 65489
    571 #define SysConst_SArgumentMissing 65490
    572 #define SysConst_SDispatchError 65491
    573 #define SysConst_SReadAccess 65492
    574 #define SysConst_SWriteAccess 65493
    575 #define SysConst_SFormatTooLong 65494
    576 #define SysConst_SVarArrayCreate 65495
    577 #define SysConst_SVarArrayBounds 65496
    578 #define SysConst_SVarArrayLocked 65497
    579 #define SysConst_SInvalidVarCast 65498
    580 #define SysConst_SInvalidVarOp 65499
    581 #define SysConst_SInvalidVarNullOp 65500
    582 #define SysConst_SInvalidVarOpWithHResultWithPrefix 65501
    583 #define SysConst_SVarTypeOutOfRangeWithPrefix 65502
    584 #define SysConst_SVarTypeAlreadyUsedWithPrefix 65503
    585 #define SysConst_SDivByZero 65504
    586 #define SysConst_SRangeError 65505
    587 #define SysConst_SIntOverflow 65506
    588 #define SysConst_SInvalidOp 65507
    589 #define SysConst_SZeroDivide 65508
    590 #define SysConst_SOverflow 65509
    591 #define SysConst_SUnderflow 65510
    592 #define SysConst_SInvalidPointer 65511
    593 #define SysConst_SInvalidCast 65512
    594 #define SysConst_SAccessViolationArg3 65513
    595 #define SysConst_SAccessViolationNoArg 65514
    596 #define SysConst_SStackOverflow 65515
    597 #define SysConst_SControlC 65516
    598 #define SysConst_SPrivilege 65517
    599 #define SysConst_SOperationAborted 65518
    600 #define SysConst_SException 65519
     11#define IdResourceStrings_RSStackENOBUFS 64928
     12#define IdResourceStrings_RSStackEISCONN 64929
     13#define IdResourceStrings_RSStackENOTCONN 64930
     14#define IdResourceStrings_RSStackESHUTDOWN 64931
     15#define IdResourceStrings_RSStackETOOMANYREFS 64932
     16#define IdResourceStrings_RSStackETIMEDOUT 64933
     17#define IdResourceStrings_RSStackECONNREFUSED 64934
     18#define IdResourceStrings_RSStackELOOP 64935
     19#define IdResourceStrings_RSStackENAMETOOLONG 64936
     20#define IdResourceStrings_RSStackEHOSTDOWN 64937
     21#define IdResourceStrings_RSStackEHOSTUNREACH 64938
     22#define IdResourceStrings_RSStackENOTEMPTY 64939
     23#define IdResourceStrings_RSStackHOST_NOT_FOUND 64940
     24#define JConsts_sChangeJPGSize 64941
     25#define JConsts_sJPEGError 64942
     26#define JConsts_sJPEGImageFile 64943
     27#define IdResourceStrings_RSStackEDESTADDRREQ 64944
     28#define IdResourceStrings_RSStackEMSGSIZE 64945
     29#define IdResourceStrings_RSStackEPROTOTYPE 64946
     30#define IdResourceStrings_RSStackENOPROTOOPT 64947
     31#define IdResourceStrings_RSStackEPROTONOSUPPORT 64948
     32#define IdResourceStrings_RSStackESOCKTNOSUPPORT 64949
     33#define IdResourceStrings_RSStackEOPNOTSUPP 64950
     34#define IdResourceStrings_RSStackEPFNOSUPPORT 64951
     35#define IdResourceStrings_RSStackEAFNOSUPPORT 64952
     36#define IdResourceStrings_RSStackEADDRINUSE 64953
     37#define IdResourceStrings_RSStackEADDRNOTAVAIL 64954
     38#define IdResourceStrings_RSStackENETDOWN 64955
     39#define IdResourceStrings_RSStackENETUNREACH 64956
     40#define IdResourceStrings_RSStackENETRESET 64957
     41#define IdResourceStrings_RSStackECONNABORTED 64958
     42#define IdResourceStrings_RSStackECONNRESET 64959
     43#define IdResourceStrings_RSWinsockInitializationError 64960
     44#define IdResourceStrings_RSSetSizeExceeded 64961
     45#define IdResourceStrings_RSWS2CallError 64962
     46#define IdResourceStrings_RSWS2LoadError 64963
     47#define IdResourceStrings_RSInvalidServiceName 64964
     48#define IdResourceStrings_RSStackError 64965
     49#define IdResourceStrings_RSStackEINTR 64966
     50#define IdResourceStrings_RSStackEBADF 64967
     51#define IdResourceStrings_RSStackEACCES 64968
     52#define IdResourceStrings_RSStackEFAULT 64969
     53#define IdResourceStrings_RSStackEINVAL 64970
     54#define IdResourceStrings_RSStackEMFILE 64971
     55#define IdResourceStrings_RSStackEWOULDBLOCK 64972
     56#define IdResourceStrings_RSStackEINPROGRESS 64973
     57#define IdResourceStrings_RSStackEALREADY 64974
     58#define IdResourceStrings_RSStackENOTSOCK 64975
     59#define pnglang_EPNGMissingMultipleIDATText 64976
     60#define pnglang_EPNGZLIBErrorText 64977
     61#define pnglang_EPNGInvalidPaletteText 64978
     62#define pnglang_EPNGInvalidFileHeaderText 64979
     63#define pnglang_EPNGIHDRNotFirstText 64980
     64#define pnglang_EPNGSizeExceedsText 64981
     65#define pnglang_EPNGUnknownPalEntryText 64982
     66#define pnglang_EPNGUnknownCriticalChunkText 64983
     67#define pnglang_EPNGUnknownCompressionText 64984
     68#define pnglang_EPNGUnknownInterlaceText 64985
     69#define pnglang_EPNGCannotAssignChunkText 64986
     70#define pnglang_EPNGUnexpectedEndText 64987
     71#define pnglang_EPNGNoImageDataText 64988
     72#define pnglang_EPNGCannotChangeSizeText 64989
     73#define pnglang_EPNGOutMemoryText 64990
     74#define pnglang_EPNGHeaderNotPresentText 64991
     75#define DBConsts_SInvalidBcdValue 64992
     76#define DBConsts_SCouldNotParseTimeStamp 64993
     77#define DBConsts_SInvalidSqlTimeStamp 64994
     78#define VDBConsts_SFirstRecord 64995
     79#define VDBConsts_SPriorRecord 64996
     80#define VDBConsts_SNextRecord 64997
     81#define VDBConsts_SLastRecord 64998
     82#define VDBConsts_SInsertRecord 64999
     83#define VDBConsts_SDeleteRecord 65000
     84#define VDBConsts_SEditRecord 65001
     85#define VDBConsts_SPostEdit 65002
     86#define VDBConsts_SCancelEdit 65003
     87#define VDBConsts_SRefreshRecord 65004
     88#define VDBConsts_SRemoteLogin 65005
     89#define pnglang_EPngInvalidCRCText 65006
     90#define pnglang_EPNGInvalidIHDRText 65007
     91#define QConsts_SMimeNotSupportedForIcon 65008
     92#define QConsts_SOpen 65009
     93#define QConsts_SSave 65010
     94#define QConsts_SUnknownImageFormat 65011
     95#define QConsts_SUnableToWrite 65012
     96#define QConsts_SUndo 65013
     97#define QConsts_SRedo 65014
     98#define QConsts_SLine 65015
     99#define QConsts_SCut 65016
     100#define QConsts_SCopy 65017
     101#define QConsts_SPaste 65018
     102#define QConsts_SClear 65019
     103#define QConsts_SSelectAll 65020
     104#define QConsts_SNoAppInLib 65021
     105#define QConsts_SDuplicateApp 65022
     106#define DBConsts_SBcdOverflow 65023
     107#define QConsts_SCannotDragForm 65024
     108#define QConsts_SMsgDlgWarning 65025
     109#define QConsts_SMsgDlgError 65026
     110#define QConsts_SMsgDlgInformation 65027
     111#define QConsts_SMsgDlgConfirm 65028
     112#define QConsts_SUnnamed 65029
     113#define QConsts_SName 65030
     114#define QConsts_SSize 65031
     115#define QConsts_SType 65032
     116#define QConsts_SDate 65033
     117#define QConsts_SAttributes 65034
     118#define QConsts_SDuplicateMenus 65035
     119#define QConsts_SImageIndexError 65036
     120#define QConsts_SInvalidImageDimensions 65037
     121#define QConsts_SInvalidImageDimension 65038
     122#define QConsts_SInvalidMimeSourceStream 65039
     123#define QConsts_SMenuSetFormError 65040
     124#define QConsts_SGroupIndexTooLow 65041
     125#define QConsts_SNoMDIForm 65042
     126#define QConsts_SNotAnMDIForm 65043
     127#define QConsts_SMDIChildNotVisible 65044
     128#define QConsts_SControlParentSetToSelf 65045
     129#define QConsts_SOKButton 65046
     130#define QConsts_SCancelButton 65047
     131#define QConsts_SYesButton 65048
     132#define QConsts_SNoButton 65049
     133#define QConsts_SHelpButton 65050
     134#define QConsts_SCloseButton 65051
     135#define QConsts_SIgnoreButton 65052
     136#define QConsts_SRetryButton 65053
     137#define QConsts_SAbortButton 65054
     138#define QConsts_SAllButton 65055
     139#define QConsts_SmkcDel 65056
     140#define QConsts_SmkcShift 65057
     141#define QConsts_SmkcCtrl 65058
     142#define QConsts_SmkcAlt 65059
     143#define QConsts_SInvalidPixelFormat 65060
     144#define QConsts_SNoCanvasHandle 65061
     145#define QConsts_SInvalidCanvasState 65062
     146#define QConsts_SInvalidImageSize 65063
     147#define QConsts_SInvalidColorDepth 65064
     148#define QConsts_SCannotFocus 65065
     149#define QConsts_SParentRequired 65066
     150#define QConsts_SVisibleChanged 65067
     151#define QConsts_SMenuIndexError 65068
     152#define QConsts_SMenuReinserted 65069
     153#define QConsts_SNoMenuRecursion 65070
     154#define QConsts_SMenuNotFound 65071
     155#define QConsts_SmkcBkSp 65072
     156#define QConsts_SmkcTab 65073
     157#define QConsts_SmkcBackTab 65074
     158#define QConsts_SmkcEsc 65075
     159#define QConsts_SmkcReturn 65076
     160#define QConsts_SmkcEnter 65077
     161#define QConsts_SmkcSpace 65078
     162#define QConsts_SmkcPgUp 65079
     163#define QConsts_SmkcPgDn 65080
     164#define QConsts_SmkcEnd 65081
     165#define QConsts_SmkcHome 65082
     166#define QConsts_SmkcLeft 65083
     167#define QConsts_SmkcUp 65084
     168#define QConsts_SmkcRight 65085
     169#define QConsts_SmkcDown 65086
     170#define QConsts_SmkcIns 65087
     171#define TntSystem_SBufferOverflow 65088
     172#define TntSystem_SInvalidUTF7 65089
     173#define DKLang_SDKLangErrMsg_DuplicatePropValueID 65090
     174#define DKLang_SDKLangErrMsg_ErrorLoadingTran 65091
     175#define DKLang_SDKLangErrMsg_InvalidConstName 65092
     176#define DKLang_SDKLangErrMsg_DuplicateConstName 65093
     177#define DKLang_SDKLangErrMsg_ConstantNotFound 65094
     178#define DKLang_SDKLangErrMsg_LangManagerCalledAtDT 65095
     179#define DKLang_SDKLangErrMsg_StreamVersionTooHigh 65096
     180#define OleConst_SCannotActivate 65097
     181#define OleConst_SNoWindowHandle 65098
     182#define OleConst_SInvalidLicense 65099
     183#define OleConst_SNotLicensed 65100
     184#define OleConst_sNoRunningObject 65101
     185#define QConsts_SInvalidCreateWidget 65102
     186#define QConsts_STooManyMessageBoxButtons 65103
     187#define TeeConst_TeeMsg_FunctionLow 65104
     188#define TeeConst_TeeMsg_FunctionAverage 65105
     189#define TeeConst_TeeMsg_DefaultFontName 65106
     190#define TeeConst_TeeMsg_CheckPointerSize 65107
     191#define TeeConst_TeeMsg_FunctionPeriod 65108
     192#define TeeConst_TeeMsg_PieOther 65109
     193#define TeeConst_TeeMsg_ValuesX 65110
     194#define TeeConst_TeeMsg_ValuesY 65111
     195#define TeeConst_TeeMsg_ValuesPie 65112
     196#define TeeConst_TeeMsg_ValuesBar 65113
     197#define TeeConst_TeeMsg_ValuesAngle 65114
     198#define TeeConst_TeeMsg_ValuesGanttStart 65115
     199#define TeeConst_TeeMsg_ValuesGanttEnd 65116
     200#define TeeConst_TeeMsg_ValuesGanttNextTask 65117
     201#define TeeConst_TeeMsg_ValuesArrowEndX 65118
     202#define TeeConst_TeeMsg_ValuesArrowEndY 65119
     203#define TeeConst_TeeMsg_GanttSample1 65120
     204#define TeeConst_TeeMsg_GanttSample2 65121
     205#define TeeConst_TeeMsg_GanttSample3 65122
     206#define TeeConst_TeeMsg_GanttSample4 65123
     207#define TeeConst_TeeMsg_GanttSample5 65124
     208#define TeeConst_TeeMsg_GanttSample6 65125
     209#define TeeConst_TeeMsg_GanttSample7 65126
     210#define TeeConst_TeeMsg_GanttSample8 65127
     211#define TeeConst_TeeMsg_GanttSample9 65128
     212#define TeeConst_TeeMsg_GanttSample10 65129
     213#define TeeConst_TeeMsg_DefaultFontSize 65130
     214#define TeeConst_TeeMsg_FunctionAdd 65131
     215#define TeeConst_TeeMsg_FunctionSubtract 65132
     216#define TeeConst_TeeMsg_FunctionMultiply 65133
     217#define TeeConst_TeeMsg_FunctionDivide 65134
     218#define TeeConst_TeeMsg_FunctionHigh 65135
     219#define TeeConst_TeeMsg_GalleryHorizBar 65136
     220#define TeeConst_TeeMsg_GalleryPie 65137
     221#define TeeConst_TeeMsg_GalleryFastLine 65138
     222#define TeeConst_TeeMsg_Rotation 65139
     223#define TeeConst_TeeMsg_PieSample1 65140
     224#define TeeConst_TeeMsg_PieSample2 65141
     225#define TeeConst_TeeMsg_PieSample3 65142
     226#define TeeConst_TeeMsg_PieSample4 65143
     227#define TeeConst_TeeMsg_PieSample5 65144
     228#define TeeConst_TeeMsg_PieSample6 65145
     229#define TeeConst_TeeMsg_PieSample7 65146
     230#define TeeConst_TeeMsg_PieSample8 65147
     231#define TeeConst_TeeMsg_GalleryStandard 65148
     232#define TeeConst_TeeMsg_GalleryFunctions 65149
     233#define TeeConst_TeeMsg_GalleryArrow 65150
     234#define TeeConst_TeeMsg_GalleryGantt 65151
     235#define TeeConst_TeeMsg_AxisMaxMin 65152
     236#define TeeConst_TeeMsg_AxisLogBase 65153
     237#define TeeConst_TeeMsg_MaxPointsPerPage 65154
     238#define TeeConst_TeeMsg_3dPercent 65155
     239#define TeeConst_TeeMsg_CircularSeries 65156
     240#define TeeConst_TeeMsg_BarWidthPercent 65157
     241#define TeeConst_TeeMsg_BarOffsetPercent 65158
     242#define TeeConst_TeeMsg_DefaultPercentOf 65159
     243#define TeeConst_TeeMsg_DefPercentFormat 65160
     244#define TeeConst_TeeMsg_DefValueFormat 65161
     245#define TeeConst_TeeMsg_AxisTitle 65162
     246#define TeeConst_TeeMsg_AxisLabels 65163
     247#define TeeConst_TeeMsg_GalleryLine 65164
     248#define TeeConst_TeeMsg_GalleryPoint 65165
     249#define TeeConst_TeeMsg_GalleryArea 65166
     250#define TeeConst_TeeMsg_GalleryBar 65167
     251#define ComConst_SDAXError 65168
     252#define ComConst_SAutomationWarning 65169
     253#define ComConst_SNoCloseActiveServer1 65170
     254#define ComConst_SNoCloseActiveServer2 65171
     255#define TeeConst_TeeMsg_LegendTopPos 65172
     256#define TeeConst_TeeMsg_LegendFirstValue 65173
     257#define TeeConst_TeeMsg_LegendColorWidth 65174
     258#define TeeConst_TeeMsg_SeriesSetDataSource 65175
     259#define TeeConst_TeeMsg_SeriesInvDataSource 65176
     260#define TeeConst_TeeMsg_FillSample 65177
     261#define TeeConst_TeeMsg_Angle 65178
     262#define TeeConst_TeeMsg_AxisLogDateTime 65179
     263#define TeeConst_TeeMsg_AxisLogNotPositive 65180
     264#define TeeConst_TeeMsg_AxisLabelSep 65181
     265#define TeeConst_TeeMsg_AxisIncrementNeg 65182
     266#define TeeConst_TeeMsg_AxisMinMax 65183
     267#define ComStrs_sNeedAllowNone 65184
     268#define ComStrs_sFailSetCalDateTime 65185
     269#define ComStrs_sFailSetCalMaxSelRange 65186
     270#define ComStrs_sFailSetCalMinMaxRange 65187
     271#define ComStrs_sFailsetCalSelRange 65188
     272#define WinHelpViewer_hNoKeyword 65189
     273#define ComConst_SCreateRegKeyError 65190
     274#define ComConst_SOleError 65191
     275#define ComConst_SObjectFactoryMissing 65192
     276#define ComConst_STypeInfoMissing 65193
     277#define ComConst_SBadTypeInfo 65194
     278#define ComConst_SDispIntfMissing 65195
     279#define ComConst_SNoMethod 65196
     280#define ComConst_SVarNotObject 65197
     281#define ComConst_STooManyParams 65198
     282#define ComConst_SDCOMNotInstalled 65199
     283#define ComStrs_sTabFailRetrieve 65200
     284#define ComStrs_sTabFailGetObject 65201
     285#define ComStrs_sTabFailSet 65202
     286#define ComStrs_sTabFailSetObject 65203
     287#define ComStrs_sTabMustBeMultiLine 65204
     288#define ComStrs_sInvalidIndex 65205
     289#define ComStrs_sInsertError 65206
     290#define ComStrs_sInvalidOwner 65207
     291#define ComStrs_sRichEditInsertError 65208
     292#define ComStrs_sRichEditLoadFail 65209
     293#define ComStrs_sRichEditSaveFail 65210
     294#define ComStrs_sUDAssociated 65211
     295#define ComStrs_sPageIndexError 65212
     296#define ComStrs_sInvalidComCtl32 65213
     297#define ComStrs_sDateTimeMax 65214
     298#define ComStrs_sDateTimeMin 65215
     299#define ExtCtrls_clNameInactiveBorder 65216
     300#define ExtCtrls_clNameInactiveCaption 65217
     301#define ExtCtrls_clNameInactiveCaptionText 65218
     302#define ExtCtrls_clNameInfoBk 65219
     303#define ExtCtrls_clNameInfoText 65220
     304#define ExtCtrls_clNameMenu 65221
     305#define ExtCtrls_clNameMenuText 65222
     306#define ExtCtrls_clNameNone 65223
     307#define ExtCtrls_clNameScrollBar 65224
     308#define ExtCtrls_clName3DDkShadow 65225
     309#define ExtCtrls_clName3DLight 65226
     310#define ExtCtrls_clNameWindow 65227
     311#define ExtCtrls_clNameWindowFrame 65228
     312#define ExtCtrls_clNameWindowText 65229
     313#define ComStrs_sTabFailClear 65230
     314#define ComStrs_sTabFailDelete 65231
     315#define ExtCtrls_clNameSkyBlue 65232
     316#define ExtCtrls_clNameCream 65233
     317#define ExtCtrls_clNameMedGray 65234
     318#define ExtCtrls_clNameActiveBorder 65235
     319#define ExtCtrls_clNameActiveCaption 65236
     320#define ExtCtrls_clNameAppWorkSpace 65237
     321#define ExtCtrls_clNameBackground 65238
     322#define ExtCtrls_clNameBtnFace 65239
     323#define ExtCtrls_clNameBtnHighlight 65240
     324#define ExtCtrls_clNameBtnShadow 65241
     325#define ExtCtrls_clNameBtnText 65242
     326#define ExtCtrls_clNameCaptionText 65243
     327#define ExtCtrls_clNameDefault 65244
     328#define ExtCtrls_clNameGrayText 65245
     329#define ExtCtrls_clNameHighlight 65246
     330#define ExtCtrls_clNameHighlightText 65247
     331#define ExtCtrls_clNameMaroon 65248
     332#define ExtCtrls_clNameGreen 65249
     333#define ExtCtrls_clNameOlive 65250
     334#define ExtCtrls_clNameNavy 65251
     335#define ExtCtrls_clNamePurple 65252
     336#define ExtCtrls_clNameTeal 65253
     337#define ExtCtrls_clNameGray 65254
     338#define ExtCtrls_clNameSilver 65255
     339#define ExtCtrls_clNameRed 65256
     340#define ExtCtrls_clNameLime 65257
     341#define ExtCtrls_clNameYellow 65258
     342#define ExtCtrls_clNameBlue 65259
     343#define ExtCtrls_clNameFuchsia 65260
     344#define ExtCtrls_clNameAqua 65261
     345#define ExtCtrls_clNameWhite 65262
     346#define ExtCtrls_clNameMoneyGreen 65263
     347#define Consts_SPreviewLabel 65264
     348#define Consts_SCannotOpenAVI 65265
     349#define Consts_SDockedCtlNeedsName 65266
     350#define Consts_SDockTreeRemoveError 65267
     351#define Consts_SDockZoneNotFound 65268
     352#define Consts_SDockZoneHasNoCtl 65269
     353#define Consts_SMultiSelectRequired 65270
     354#define Consts_SSeparator 65271
     355#define Consts_SErrorSettingCount 65272
     356#define Consts_SListBoxMustBeVirtual 65273
     357#define Consts_SNoGetItemEventHandler 65274
     358#define HelpIntfs_hNoTableOfContents 65275
     359#define HelpIntfs_hNothingFound 65276
     360#define HelpIntfs_hNoContext 65277
     361#define HelpIntfs_hNoTopics 65278
     362#define ExtCtrls_clNameBlack 65279
     363#define Consts_SmkcShift 65280
     364#define Consts_SmkcCtrl 65281
     365#define Consts_SmkcAlt 65282
     366#define Consts_srNone 65283
     367#define Consts_SOutOfRange 65284
     368#define Consts_sAllFilter 65285
     369#define Consts_SInsertLineError 65286
     370#define Consts_SInvalidClipFmt 65287
     371#define Consts_SIconToClipboard 65288
     372#define Consts_SCannotOpenClipboard 65289
     373#define Consts_SInvalidMemoSize 65290
     374#define Consts_SInvalidPrinterOp 65291
     375#define Consts_SNoDefaultPrinter 65292
     376#define Consts_SDuplicateMenus 65293
     377#define Consts_SPictureLabel 65294
     378#define Consts_SPictureDesc 65295
     379#define Consts_SMsgDlgYesToAll 65296
     380#define Consts_SmkcBkSp 65297
     381#define Consts_SmkcTab 65298
     382#define Consts_SmkcEsc 65299
     383#define Consts_SmkcEnter 65300
     384#define Consts_SmkcSpace 65301
     385#define Consts_SmkcPgUp 65302
     386#define Consts_SmkcPgDn 65303
     387#define Consts_SmkcEnd 65304
     388#define Consts_SmkcHome 65305
     389#define Consts_SmkcLeft 65306
     390#define Consts_SmkcUp 65307
     391#define Consts_SmkcRight 65308
     392#define Consts_SmkcDown 65309
     393#define Consts_SmkcIns 65310
     394#define Consts_SmkcDel 65311
     395#define Consts_SMaskErr 65312
     396#define Consts_SMaskEditErr 65313
     397#define Consts_SMsgDlgWarning 65314
     398#define Consts_SMsgDlgError 65315
     399#define Consts_SMsgDlgInformation 65316
     400#define Consts_SMsgDlgConfirm 65317
     401#define Consts_SMsgDlgYes 65318
     402#define Consts_SMsgDlgNo 65319
     403#define Consts_SMsgDlgOK 65320
     404#define Consts_SMsgDlgCancel 65321
     405#define Consts_SMsgDlgHelp 65322
     406#define Consts_SMsgDlgAbort 65323
     407#define Consts_SMsgDlgRetry 65324
     408#define Consts_SMsgDlgIgnore 65325
     409#define Consts_SMsgDlgAll 65326
     410#define Consts_SMsgDlgNoToAll 65327
     411#define Consts_SControlParentSetToSelf 65328
     412#define Consts_SOKButton 65329
     413#define Consts_SCancelButton 65330
     414#define Consts_SYesButton 65331
     415#define Consts_SNoButton 65332
     416#define Consts_SHelpButton 65333
     417#define Consts_SCloseButton 65334
     418#define Consts_SIgnoreButton 65335
     419#define Consts_SRetryButton 65336
     420#define Consts_SAbortButton 65337
     421#define Consts_SAllButton 65338
     422#define Consts_SCannotDragForm 65339
     423#define Consts_SVMetafiles 65340
     424#define Consts_SVEnhMetafiles 65341
     425#define Consts_SVIcons 65342
     426#define Consts_SVBitmaps 65343
     427#define Consts_SMDIChildNotVisible 65344
     428#define Consts_SVisibleChanged 65345
     429#define Consts_SCannotShowModal 65346
     430#define Consts_SScrollBarRange 65347
     431#define Consts_SPropertyOutOfRange 65348
     432#define Consts_SMenuIndexError 65349
     433#define Consts_SMenuReinserted 65350
     434#define Consts_SMenuNotFound 65351
     435#define Consts_SNoTimers 65352
     436#define Consts_SNotPrinting 65353
     437#define Consts_SPrinting 65354
     438#define Consts_SPrinterIndexError 65355
     439#define Consts_SInvalidPrinter 65356
     440#define Consts_SDeviceOnPort 65357
     441#define Consts_SGroupIndexTooLow 65358
     442#define Consts_SNoMDIForm 65359
     443#define Consts_SOleGraphic 65360
     444#define Consts_SUnknownExtension 65361
     445#define Consts_SUnknownClipboardFormat 65362
     446#define Consts_SOutOfResources 65363
     447#define Consts_SNoCanvasHandle 65364
     448#define Consts_SInvalidImageSize 65365
     449#define Consts_SInvalidImageList 65366
     450#define Consts_SReplaceImage 65367
     451#define Consts_SImageIndexError 65368
     452#define Consts_SImageReadFail 65369
     453#define Consts_SImageWriteFail 65370
     454#define Consts_SWindowDCError 65371
     455#define Consts_SWindowClass 65372
     456#define Consts_SCannotFocus 65373
     457#define Consts_SParentRequired 65374
     458#define Consts_SParentGivenNotAParent 65375
     459#define RTLConsts_SSortedListError 65376
     460#define RTLConsts_STooManyDeleted 65377
     461#define RTLConsts_SUnknownGroup 65378
     462#define RTLConsts_SUnknownProperty 65379
     463#define RTLConsts_SWriteError 65380
     464#define RTLConsts_SThreadCreateError 65381
     465#define RTLConsts_SThreadError 65382
     466#define Consts_SInvalidTabPosition 65383
     467#define Consts_SInvalidTabStyle 65384
     468#define Consts_SInvalidBitmap 65385
     469#define Consts_SInvalidIcon 65386
     470#define Consts_SInvalidMetafile 65387
     471#define Consts_SInvalidPixelFormat 65388
     472#define Consts_SInvalidImage 65389
     473#define Consts_SScanLine 65390
     474#define Consts_SChangeIconSize 65391
     475#define RTLConsts_SInvalidPropertyPath 65392
     476#define RTLConsts_SInvalidPropertyType 65393
     477#define RTLConsts_SInvalidPropertyValue 65394
     478#define RTLConsts_SInvalidRegType 65395
     479#define RTLConsts_SInvalidStringGridOp 65396
     480#define RTLConsts_SListCapacityError 65397
     481#define RTLConsts_SListCountError 65398
     482#define RTLConsts_SListIndexError 65399
     483#define RTLConsts_SMemoryStreamError 65400
     484#define RTLConsts_SPropertyException 65401
     485#define RTLConsts_SReadError 65402
     486#define RTLConsts_SReadOnlyProperty 65403
     487#define RTLConsts_SRegGetDataFailed 65404
     488#define RTLConsts_SRegSetDataFailed 65405
     489#define RTLConsts_SResNotFound 65406
     490#define RTLConsts_SSeekNotImplemented 65407
     491#define RTLConsts_SDuplicateClass 65408
     492#define RTLConsts_SDuplicateItem 65409
     493#define RTLConsts_SDuplicateName 65410
     494#define RTLConsts_SDuplicateString 65411
     495#define RTLConsts_SFCreateErrorEx 65412
     496#define RTLConsts_SFixedColTooBig 65413
     497#define RTLConsts_SFixedRowTooBig 65414
     498#define RTLConsts_SFOpenErrorEx 65415
     499#define RTLConsts_SGridTooLarge 65416
     500#define RTLConsts_SIndexOutOfRange 65417
     501#define RTLConsts_SIniFileWriteError 65418
     502#define RTLConsts_SInvalidImage 65419
     503#define RTLConsts_SInvalidMask 65420
     504#define RTLConsts_SInvalidName 65421
     505#define RTLConsts_SInvalidProperty 65422
     506#define RTLConsts_SInvalidPropertyElement 65423
     507#define SysConst_SShortDayNameFri 65424
     508#define SysConst_SShortDayNameSat 65425
     509#define SysConst_SLongDayNameSun 65426
     510#define SysConst_SLongDayNameMon 65427
     511#define SysConst_SLongDayNameTue 65428
     512#define SysConst_SLongDayNameWed 65429
     513#define SysConst_SLongDayNameThu 65430
     514#define SysConst_SLongDayNameFri 65431
     515#define SysConst_SLongDayNameSat 65432
     516#define SysConst_SCannotCreateDir 65433
     517#define RTLConsts_SAncestorNotFound 65434
     518#define RTLConsts_SAssignError 65435
     519#define RTLConsts_SBitsIndexError 65436
     520#define RTLConsts_SCantWriteResourceStreamError 65437
     521#define RTLConsts_SCheckSynchronizeError 65438
     522#define RTLConsts_SClassNotFound 65439
     523#define SysConst_SLongMonthNameFeb 65440
     524#define SysConst_SLongMonthNameMar 65441
     525#define SysConst_SLongMonthNameApr 65442
     526#define SysConst_SLongMonthNameMay 65443
     527#define SysConst_SLongMonthNameJun 65444
     528#define SysConst_SLongMonthNameJul 65445
     529#define SysConst_SLongMonthNameAug 65446
     530#define SysConst_SLongMonthNameSep 65447
     531#define SysConst_SLongMonthNameOct 65448
     532#define SysConst_SLongMonthNameNov 65449
     533#define SysConst_SLongMonthNameDec 65450
     534#define SysConst_SShortDayNameSun 65451
     535#define SysConst_SShortDayNameMon 65452
     536#define SysConst_SShortDayNameTue 65453
     537#define SysConst_SShortDayNameWed 65454
     538#define SysConst_SShortDayNameThu 65455
     539#define SysConst_SModuleAccessViolation 65456
     540#define SysConst_SOSError 65457
     541#define SysConst_SUnkOSError 65458
     542#define SysConst_SShortMonthNameJan 65459
     543#define SysConst_SShortMonthNameFeb 65460
     544#define SysConst_SShortMonthNameMar 65461
     545#define SysConst_SShortMonthNameApr 65462
     546#define SysConst_SShortMonthNameMay 65463
     547#define SysConst_SShortMonthNameJun 65464
     548#define SysConst_SShortMonthNameJul 65465
     549#define SysConst_SShortMonthNameAug 65466
     550#define SysConst_SShortMonthNameSep 65467
     551#define SysConst_SShortMonthNameOct 65468
     552#define SysConst_SShortMonthNameNov 65469
     553#define SysConst_SShortMonthNameDec 65470
     554#define SysConst_SLongMonthNameJan 65471
     555#define SysConst_SVarTypeAlreadyUsedWithPrefix 65472
     556#define SysConst_SVarTypeNotUsableWithPrefix 65473
     557#define SysConst_SVarTypeTooManyCustom 65474
     558#define SysConst_SVarTypeCouldNotConvert 65475
     559#define SysConst_SVarTypeConvertOverflow 65476
     560#define SysConst_SVarOverflow 65477
     561#define SysConst_SVarInvalid 65478
     562#define SysConst_SVarBadType 65479
     563#define SysConst_SVarNotImplemented 65480
     564#define SysConst_SVarUnexpected 65481
     565#define SysConst_SExternalException 65482
     566#define SysConst_SAssertionFailed 65483
     567#define SysConst_SIntfCastError 65484
     568#define SysConst_SSafecallException 65485
     569#define SysConst_SAssertError 65486
     570#define SysConst_SAbstractError 65487
     571#define SysConst_SException 65488
     572#define SysConst_SExceptTitle 65489
     573#define SysConst_SInvalidFormat 65490
     574#define SysConst_SArgumentMissing 65491
     575#define SysConst_SDispatchError 65492
     576#define SysConst_SReadAccess 65493
     577#define SysConst_SWriteAccess 65494
     578#define SysConst_SFormatTooLong 65495
     579#define SysConst_SVarArrayCreate 65496
     580#define SysConst_SVarArrayBounds 65497
     581#define SysConst_SVarArrayLocked 65498
     582#define SysConst_SInvalidVarCast 65499
     583#define SysConst_SInvalidVarOp 65500
     584#define SysConst_SInvalidVarNullOp 65501
     585#define SysConst_SInvalidVarOpWithHResultWithPrefix 65502
     586#define SysConst_SVarTypeOutOfRangeWithPrefix 65503
     587#define SysConst_SInvalidInput 65504
     588#define SysConst_SDivByZero 65505
     589#define SysConst_SRangeError 65506
     590#define SysConst_SIntOverflow 65507
     591#define SysConst_SInvalidOp 65508
     592#define SysConst_SZeroDivide 65509
     593#define SysConst_SOverflow 65510
     594#define SysConst_SUnderflow 65511
     595#define SysConst_SInvalidPointer 65512
     596#define SysConst_SInvalidCast 65513
     597#define SysConst_SAccessViolationArg3 65514
     598#define SysConst_SAccessViolationNoArg 65515
     599#define SysConst_SStackOverflow 65516
     600#define SysConst_SControlC 65517
     601#define SysConst_SPrivilege 65518
     602#define SysConst_SOperationAborted 65519
    601603#define SysConst_SInvalidInteger 65520
    602604#define SysConst_SInvalidFloat 65521
     
    604606#define SysConst_SInvalidTime 65523
    605607#define SysConst_SInvalidDateTime 65524
    606 #define SysConst_STimeEncodeError 65525
    607 #define SysConst_SDateEncodeError 65526
    608 #define SysConst_SOutOfMemory 65527
    609 #define SysConst_SInOutError 65528
    610 #define SysConst_SFileNotFound 65529
    611 #define SysConst_SInvalidFilename 65530
    612 #define SysConst_STooManyOpenFiles 65531
    613 #define SysConst_SAccessDenied 65532
    614 #define SysConst_SEndOfFile 65533
    615 #define SysConst_SDiskFull 65534
    616 #define SysConst_SInvalidInput 65535
     608#define SysConst_SInvalidBoolean 65525
     609#define SysConst_STimeEncodeError 65526
     610#define SysConst_SDateEncodeError 65527
     611#define SysConst_SOutOfMemory 65528
     612#define SysConst_SInOutError 65529
     613#define SysConst_SFileNotFound 65530
     614#define SysConst_SInvalidFilename 65531
     615#define SysConst_STooManyOpenFiles 65532
     616#define SysConst_SAccessDenied 65533
     617#define SysConst_SEndOfFile 65534
     618#define SysConst_SDiskFull 65535
    617619STRINGTABLE
    618620BEGIN
    619         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."
    620         pnglang_EPNGUnknownPalEntryText,        "There is no such palette entry."
    621         pnglang_EPNGUnknownCriticalChunkText,   "This \"Portable Network Graphics\" image contains an unknown critical part which could not be decoded."
    622         pnglang_EPNGUnknownCompressionText,     "This \"Portable Network Graphics\" image is encoded with an unknown compression scheme which could not be decoded."
    623         pnglang_EPNGUnknownInterlaceText,       "This \"Portable Network Graphics\" image uses an unknown interlace scheme which could not be decoded."
    624         pnglang_EPNGCannotAssignChunkText,      "The chunks must be compatible to be assigned."
    625         pnglang_EPNGUnexpectedEndText,  "This \"Portable Network Graphics\" image is invalid because the decoder found an unexpected end of the file."
    626         pnglang_EPNGNoImageDataText,    "This \"Portable Network Graphics\" image contains no data."
    627         pnglang_EPNGCannotChangeSizeText,       "The \"Portable Network Graphics\" image can not be resize by changing width and height properties. Try assigning the image from a bitmap."
    628         pnglang_EPNGOutMemoryText,      "Some operation could not be performed because the system is out of resources. Close some windows and try again."
    629         pnglang_EPNGHeaderNotPresentText,       "This operation is not valid because the current image contains no valid header."
    630         JConsts_sChangeJPGSize, "Cannot change the size of a JPEG image"
    631         JConsts_sJPEGError,     "JPEG error #%d"
    632         JConsts_sJPEGImageFile, "JPEG Image File"
     621        IdResourceStrings_RSStackENOBUFS,       "No buffer space available."
     622        IdResourceStrings_RSStackEISCONN,       "Socket is already connected."
     623        IdResourceStrings_RSStackENOTCONN,      "Socket is not connected."
     624        IdResourceStrings_RSStackESHUTDOWN,     "Cannot send or receive after socket is closed."
    633625        IdResourceStrings_RSStackETOOMANYREFS,  "Too many references, cannot splice."
    634626        IdResourceStrings_RSStackETIMEDOUT,     "Connection timed out."
     
    640632        IdResourceStrings_RSStackENOTEMPTY,     "Directory not empty"
    641633        IdResourceStrings_RSStackHOST_NOT_FOUND,        "Host not found."
    642         pnglang_EPngInvalidCRCText,     "This \"Portable Network Graphics\" image is not valid because it contains invalid pieces of data (crc error)"
    643         pnglang_EPNGInvalidIHDRText,    "The \"Portable Network Graphics\" image could not be loaded because one of its main piece of data (ihdr) might be corrupted"
    644         pnglang_EPNGMissingMultipleIDATText,    "This \"Portable Network Graphics\" image is invalid because it has missing image parts."
    645         pnglang_EPNGZLIBErrorText,      "Could not decompress the image because it contains invalid compressed data.\r\n Description: "
    646         pnglang_EPNGInvalidPaletteText, "The \"Portable Network Graphics\" image contains an invalid palette."
    647         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."
    648         pnglang_EPNGIHDRNotFirstText,   "This \"Portable Network Graphics\" image is not supported or it might be invalid.\r\n(IHDR chunk is not the first)"
     634        JConsts_sChangeJPGSize, "Cannot change the size of a JPEG image"
     635        JConsts_sJPEGError,     "JPEG error #%d"
     636        JConsts_sJPEGImageFile, "JPEG Image File"
     637        IdResourceStrings_RSStackEDESTADDRREQ,  "Destination address required."
     638        IdResourceStrings_RSStackEMSGSIZE,      "Message too long."
     639        IdResourceStrings_RSStackEPROTOTYPE,    "Protocol wrong type for socket."
     640        IdResourceStrings_RSStackENOPROTOOPT,   "Bad protocol option."
    649641        IdResourceStrings_RSStackEPROTONOSUPPORT,       "Protocol not supported."
    650642        IdResourceStrings_RSStackESOCKTNOSUPPORT,       "Socket type not supported."
     
    659651        IdResourceStrings_RSStackECONNABORTED,  "Software caused connection abort."
    660652        IdResourceStrings_RSStackECONNRESET,    "Connection reset by peer."
    661         IdResourceStrings_RSStackENOBUFS,       "No buffer space available."
    662         IdResourceStrings_RSStackEISCONN,       "Socket is already connected."
    663         IdResourceStrings_RSStackENOTCONN,      "Socket is not connected."
    664         IdResourceStrings_RSStackESHUTDOWN,     "Cannot send or receive after socket is closed."
     653        IdResourceStrings_RSWinsockInitializationError, "Winsock Initialization Error."
     654        IdResourceStrings_RSSetSizeExceeded,    "Set Size Exceeded."
     655        IdResourceStrings_RSWS2CallError,       "Error on call Winsock2 library function %s"
     656        IdResourceStrings_RSWS2LoadError,       "Error on loading Winsock2 library (%s)"
    665657        IdResourceStrings_RSInvalidServiceName, "%s is not a valid service."
    666658        IdResourceStrings_RSStackError, "Socket Error # %d\r\n%s"
     
    675667        IdResourceStrings_RSStackEALREADY,      "Operation already in progress."
    676668        IdResourceStrings_RSStackENOTSOCK,      "Socket operation on non-socket."
    677         IdResourceStrings_RSStackEDESTADDRREQ,  "Destination address required."
    678         IdResourceStrings_RSStackEMSGSIZE,      "Message too long."
    679         IdResourceStrings_RSStackEPROTOTYPE,    "Protocol wrong type for socket."
    680         IdResourceStrings_RSStackENOPROTOOPT,   "Bad protocol option."
     669        pnglang_EPNGMissingMultipleIDATText,    "This \"Portable Network Graphics\" image is invalid because it has missing image parts."
     670        pnglang_EPNGZLIBErrorText,      "Could not decompress the image because it contains invalid compressed data.\r\n Description: "
     671        pnglang_EPNGInvalidPaletteText, "The \"Portable Network Graphics\" image contains an invalid palette."
     672        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."
     673        pnglang_EPNGIHDRNotFirstText,   "This \"Portable Network Graphics\" image is not supported or it might be invalid.\r\n(IHDR chunk is not the first)"
     674        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."
     675        pnglang_EPNGUnknownPalEntryText,        "There is no such palette entry."
     676        pnglang_EPNGUnknownCriticalChunkText,   "This \"Portable Network Graphics\" image contains an unknown critical part which could not be decoded."
     677        pnglang_EPNGUnknownCompressionText,     "This \"Portable Network Graphics\" image is encoded with an unknown compression scheme which could not be decoded."
     678        pnglang_EPNGUnknownInterlaceText,       "This \"Portable Network Graphics\" image uses an unknown interlace scheme which could not be decoded."
     679        pnglang_EPNGCannotAssignChunkText,      "The chunks must be compatible to be assigned."
     680        pnglang_EPNGUnexpectedEndText,  "This \"Portable Network Graphics\" image is invalid because the decoder found an unexpected end of the file."
     681        pnglang_EPNGNoImageDataText,    "This \"Portable Network Graphics\" image contains no data."
     682        pnglang_EPNGCannotChangeSizeText,       "The \"Portable Network Graphics\" image can not be resize by changing width and height properties. Try assigning the image from a bitmap."
     683        pnglang_EPNGOutMemoryText,      "Some operation could not be performed because the system is out of resources. Close some windows and try again."
     684        pnglang_EPNGHeaderNotPresentText,       "This operation is not valid because the current image contains no valid header."
     685        DBConsts_SInvalidBcdValue,      "%s is not a valid BCD value"
     686        DBConsts_SCouldNotParseTimeStamp,       "Could not parse SQL TimeStamp string"
    681687        DBConsts_SInvalidSqlTimeStamp,  "Invalid SQL date/time values"
    682688        VDBConsts_SFirstRecord, "First record"
     
    691697        VDBConsts_SRefreshRecord,       "Refresh data"
    692698        VDBConsts_SRemoteLogin, "Remote Login"
    693         IdResourceStrings_RSWinsockInitializationError, "Winsock Initialization Error."
    694         IdResourceStrings_RSSetSizeExceeded,    "Set Size Exceeded."
    695         IdResourceStrings_RSWS2CallError,       "Error on call Winsock2 library function %s"
    696         IdResourceStrings_RSWS2LoadError,       "Error on loading Winsock2 library (%s)"
     699        pnglang_EPngInvalidCRCText,     "This \"Portable Network Graphics\" image is not valid because it contains invalid pieces of data (crc error)"
     700        pnglang_EPNGInvalidIHDRText,    "The \"Portable Network Graphics\" image could not be loaded because one of its main piece of data (ihdr) might be corrupted"
     701        QConsts_SMimeNotSupportedForIcon,       "Mime format not supported for TIcon"
     702        QConsts_SOpen,  "Open"
    697703        QConsts_SSave,  "Save"
    698704        QConsts_SUnknownImageFormat,    "Image format not recognized"
     
    709715        QConsts_SDuplicateApp,  "Fatal error: Cannot create more than one TApplication instance"
    710716        DBConsts_SBcdOverflow,  "BCD overflow"
    711         DBConsts_SInvalidBcdValue,      "%s is not a valid BCD value"
    712         DBConsts_SCouldNotParseTimeStamp,       "Could not parse SQL TimeStamp string"
     717        QConsts_SCannotDragForm,        "Cannot drag a form"
     718        QConsts_SMsgDlgWarning, "Warning"
    713719        QConsts_SMsgDlgError,   "Error"
    714720        QConsts_SMsgDlgInformation,     "Information"
     
    725731        QConsts_SInvalidImageDimension, "Invalid image dimension"
    726732        QConsts_SInvalidMimeSourceStream,       "MimeSource format must have an associated data stream"
    727         QConsts_SMimeNotSupportedForIcon,       "Mime format not supported for TIcon"
    728         QConsts_SOpen,  "Open"
     733        QConsts_SMenuSetFormError,      "TMenu.SetForm: argument must be TCustomForm"
     734        QConsts_SGroupIndexTooLow,      "GroupIndex cannot be less than a previous menu item's GroupIndex"
    729735        QConsts_SNoMDIForm,     "Cannot create form. No MDI forms are currently active"
    730736        QConsts_SNotAnMDIForm,  "Invalid MDIParent for class %s"
     
    741747        QConsts_SAbortButton,   "Abort"
    742748        QConsts_SAllButton,     "&All"
    743         QConsts_SCannotDragForm,        "Cannot drag a form"
    744         QConsts_SMsgDlgWarning, "Warning"
     749        QConsts_SmkcDel,        "Del"
     750        QConsts_SmkcShift,      "Shift+"
    745751        QConsts_SmkcCtrl,       "Ctrl+"
    746752        QConsts_SmkcAlt,        "Alt+"
     
    757763        QConsts_SNoMenuRecursion,       "Menu insertion recursion not allowed"
    758764        QConsts_SMenuNotFound,  "Sub-menu is not in menu"
    759         QConsts_SMenuSetFormError,      "TMenu.SetForm: argument must be TCustomForm"
    760         QConsts_SGroupIndexTooLow,      "GroupIndex cannot be less than a previous menu item's GroupIndex"
     765        QConsts_SmkcBkSp,       "Backspace"
     766        QConsts_SmkcTab,        "Tab"
    761767        QConsts_SmkcBackTab,    "BackTab"
    762768        QConsts_SmkcEsc,        "Esc"
     
    773779        QConsts_SmkcDown,       "Down"
    774780        QConsts_SmkcIns,        "Ins"
    775         QConsts_SmkcDel,        "Del"
    776         QConsts_SmkcShift,      "Shift+"
     781        TntSystem_SBufferOverflow,      "Buffer overflow"
     782        TntSystem_SInvalidUTF7, "Invalid UTF7"
    777783        DKLang_SDKLangErrMsg_DuplicatePropValueID,      "Duplicate property value translation ID (%d)"
    778784        DKLang_SDKLangErrMsg_ErrorLoadingTran,  "Loading translations failed.\r\nLine %d: %s"
     
    789795        QConsts_SInvalidCreateWidget,   "Class %s could not create QT widget"
    790796        QConsts_STooManyMessageBoxButtons,      "Too many buttons specified for message box"
    791         QConsts_SmkcBkSp,       "Backspace"
    792         QConsts_SmkcTab,        "Tab"
     797        TeeConst_TeeMsg_FunctionLow,    "Low"
     798        TeeConst_TeeMsg_FunctionAverage,        "Average"
    793799        TeeConst_TeeMsg_DefaultFontName,        "Arial"
    794800        TeeConst_TeeMsg_CheckPointerSize,       "Pointer size must be greater than zero"
     
    805811        TeeConst_TeeMsg_ValuesArrowEndX,        "EndX"
    806812        TeeConst_TeeMsg_ValuesArrowEndY,        "EndY"
    807         TntSystem_SBufferOverflow,      "Buffer overflow"
    808         TntSystem_SInvalidUTF7, "Invalid UTF7"
     813        TeeConst_TeeMsg_GanttSample1,   "Design"
     814        TeeConst_TeeMsg_GanttSample2,   "Prototyping"
    809815        TeeConst_TeeMsg_GanttSample3,   "Development"
    810816        TeeConst_TeeMsg_GanttSample4,   "Sales"
     
    821827        TeeConst_TeeMsg_FunctionDivide, "Divide"
    822828        TeeConst_TeeMsg_FunctionHigh,   "High"
    823         TeeConst_TeeMsg_FunctionLow,    "Low"
    824         TeeConst_TeeMsg_FunctionAverage,        "Average"
     829        TeeConst_TeeMsg_GalleryHorizBar,        "Horiz. Bar"
     830        TeeConst_TeeMsg_GalleryPie,     "Pie"
    825831        TeeConst_TeeMsg_GalleryFastLine,        "Fast Line"
    826832        TeeConst_TeeMsg_Rotation,       "Rotation"
     
    837843        TeeConst_TeeMsg_GalleryArrow,   "Arrow"
    838844        TeeConst_TeeMsg_GalleryGantt,   "Gantt"
    839         TeeConst_TeeMsg_GanttSample1,   "Design"
    840         TeeConst_TeeMsg_GanttSample2,   "Prototyping"
     845        TeeConst_TeeMsg_AxisMaxMin,     "Axis Maximum Value must be >= Minimum"
     846        TeeConst_TeeMsg_AxisLogBase,    "Axis Logarithmic Base should be >= 2"
    841847        TeeConst_TeeMsg_MaxPointsPerPage,       "MaxPointsPerPage must be >= 0"
    842848        TeeConst_TeeMsg_3dPercent,      "3D effect percent must be between %d and %d"
     
    853859        TeeConst_TeeMsg_GalleryArea,    "Area"
    854860        TeeConst_TeeMsg_GalleryBar,     "Bar"
    855         TeeConst_TeeMsg_GalleryHorizBar,        "Horiz. Bar"
    856         TeeConst_TeeMsg_GalleryPie,     "Pie"
     861        ComConst_SDAXError,     "DAX Error"
     862        ComConst_SAutomationWarning,    "COM Server Warning"
    857863        ComConst_SNoCloseActiveServer1, "There are still active COM objects in this application.  One or more clients may have references to these objects, so manually closing "
    858864        ComConst_SNoCloseActiveServer2, "this application may cause those client application(s) to fail.\r\n\r\nAre you sure you want to close this application?"
     
    869875        TeeConst_TeeMsg_AxisIncrementNeg,       "Axis increment must be >= 0"
    870876        TeeConst_TeeMsg_AxisMinMax,     "Axis Minimum Value must be <= Maximum"
    871         TeeConst_TeeMsg_AxisMaxMin,     "Axis Maximum Value must be >= Minimum"
    872         TeeConst_TeeMsg_AxisLogBase,    "Axis Logarithmic Base should be >= 2"
     877        ComStrs_sNeedAllowNone, "You must be in ShowCheckbox mode to set to this date"
     878        ComStrs_sFailSetCalDateTime,    "Failed to set calendar date or time"
    873879        ComStrs_sFailSetCalMaxSelRange, "Failed to set maximum selection range"
    874880        ComStrs_sFailSetCalMinMaxRange, "Failed to set calendar min/max range"
     
    885891        ComConst_STooManyParams,        "Dispatch methods do not support more than 64 parameters"
    886892        ComConst_SDCOMNotInstalled,     "DCOM not installed"
    887         ComConst_SDAXError,     "DAX Error"
    888         ComConst_SAutomationWarning,    "COM Server Warning"
     893        ComStrs_sTabFailRetrieve,       "Failed to retrieve tab at index %d"
     894        ComStrs_sTabFailGetObject,      "Failed to get object at index %d"
    889895        ComStrs_sTabFailSet,    "Failed to set tab \"%s\" at index %d"
    890896        ComStrs_sTabFailSetObject,      "Failed to set object at index %d"
     
    901907        ComStrs_sDateTimeMax,   "Date exceeds maximum of %s"
    902908        ComStrs_sDateTimeMin,   "Date is less than minimum of %s"
    903         ComStrs_sNeedAllowNone, "You must be in ShowCheckbox mode to set to this date"
    904         ComStrs_sFailSetCalDateTime,    "Failed to set calendar date or time"
     909        ExtCtrls_clNameInactiveBorder,  "Inactive Border"
     910        ExtCtrls_clNameInactiveCaption, "Inactive Caption"
    905911        ExtCtrls_clNameInactiveCaptionText,     "Inactive Caption Text"
    906912        ExtCtrls_clNameInfoBk,  "Info Background"
     
    917923        ComStrs_sTabFailClear,  "Failed to clear tab control"
    918924        ComStrs_sTabFailDelete, "Failed to delete tab at index %d"
    919         ComStrs_sTabFailRetrieve,       "Failed to retrieve tab at index %d"
    920         ComStrs_sTabFailGetObject,      "Failed to get object at index %d"
     925        ExtCtrls_clNameSkyBlue, "Sky Blue"
     926        ExtCtrls_clNameCream,   "Cream"
    921927        ExtCtrls_clNameMedGray, "Medium Gray"
    922928        ExtCtrls_clNameActiveBorder,    "Active Border"
     
    933939        ExtCtrls_clNameHighlight,       "Highlight Background"
    934940        ExtCtrls_clNameHighlightText,   "Highlight Text"
    935         ExtCtrls_clNameInactiveBorder,  "Inactive Border"
    936         ExtCtrls_clNameInactiveCaption, "Inactive Caption"
     941        ExtCtrls_clNameMaroon,  "Maroon"
     942        ExtCtrls_clNameGreen,   "Green"
    937943        ExtCtrls_clNameOlive,   "Olive"
    938944        ExtCtrls_clNameNavy,    "Navy"
     
    949955        ExtCtrls_clNameWhite,   "White"
    950956        ExtCtrls_clNameMoneyGreen,      "Money Green"
    951         ExtCtrls_clNameSkyBlue, "Sky Blue"
    952         ExtCtrls_clNameCream,   "Cream"
     957        Consts_SPreviewLabel,   "Preview"
     958        Consts_SCannotOpenAVI,  "Cannot open AVI"
    953959        Consts_SDockedCtlNeedsName,     "Docked control must have a name"
    954960        Consts_SDockTreeRemoveError,    "Error removing control from dock tree"
     
    965971        HelpIntfs_hNoTopics,    "No topic-based help system installed"
    966972        ExtCtrls_clNameBlack,   "Black"
    967         ExtCtrls_clNameMaroon,  "Maroon"
    968         ExtCtrls_clNameGreen,   "Green"
     973        Consts_SmkcShift,       "Shift+"
     974        Consts_SmkcCtrl,        "Ctrl+"
    969975        Consts_SmkcAlt, "Alt+"
    970976        Consts_srNone,  "(None)"
     
    981987        Consts_SPictureLabel,   "Picture:"
    982988        Consts_SPictureDesc,    " (%dx%d)"
    983         Consts_SPreviewLabel,   "Preview"
    984         Consts_SCannotOpenAVI,  "Cannot open AVI"
     989        Consts_SMsgDlgYesToAll, "Yes to &All"
     990        Consts_SmkcBkSp,        "BkSp"
    985991        Consts_SmkcTab, "Tab"
    986992        Consts_SmkcEsc, "Esc"
     
    9971003        Consts_SmkcIns, "Ins"
    9981004        Consts_SmkcDel, "Del"
    999         Consts_SmkcShift,       "Shift+"
    1000         Consts_SmkcCtrl,        "Ctrl+"
     1005        Consts_SMaskErr,        "Invalid input value"
     1006        Consts_SMaskEditErr,    "Invalid input value.  Use escape key to abandon changes"
    10011007        Consts_SMsgDlgWarning,  "Warning"
    10021008        Consts_SMsgDlgError,    "Error"
     
    10131019        Consts_SMsgDlgAll,      "&All"
    10141020        Consts_SMsgDlgNoToAll,  "N&o to All"
    1015         Consts_SMsgDlgYesToAll, "Yes to &All"
    1016         Consts_SmkcBkSp,        "BkSp"
     1021        Consts_SControlParentSetToSelf, "A control cannot have itself as its parent"
     1022        Consts_SOKButton,       "OK"
    10171023        Consts_SCancelButton,   "Cancel"
    10181024        Consts_SYesButton,      "&Yes"
     
    10291035        Consts_SVIcons, "Icons"
    10301036        Consts_SVBitmaps,       "Bitmaps"
    1031         Consts_SMaskErr,        "Invalid input value"
    1032         Consts_SMaskEditErr,    "Invalid input value.  Use escape key to abandon changes"
     1037        Consts_SMDIChildNotVisible,     "Cannot hide an MDI Child Form"
    10331038        Consts_SVisibleChanged, "Cannot change Visible in OnShow or OnHide"
    10341039        Consts_SCannotShowModal,        "Cannot make a visible window modal"
     
    10411046        Consts_SNotPrinting,    "Printer is not currently printing"
    10421047        Consts_SPrinting,       "Printing in progress"
     1048        Consts_SPrinterIndexError,      "Printer index out of range"
    10431049        Consts_SInvalidPrinter, "Printer selected is not valid"
    10441050        Consts_SDeviceOnPort,   "%s on %s"
    10451051        Consts_SGroupIndexTooLow,       "GroupIndex cannot be less than a previous menu item's GroupIndex"
    10461052        Consts_SNoMDIForm,      "Cannot create form. No MDI forms are currently active"
    1047         Consts_SControlParentSetToSelf, "A control cannot have itself as its parent"
    1048         Consts_SOKButton,       "OK"
     1053        Consts_SOleGraphic,     "Invalid operation on TOleGraphic"
    10491054        Consts_SUnknownExtension,       "Unknown picture file extension (.%s)"
    10501055        Consts_SUnknownClipboardFormat, "Unsupported clipboard format"
     
    10621067        Consts_SParentRequired, "Control '%s' has no parent window"
    10631068        Consts_SParentGivenNotAParent,  "Parent given is not a parent of '%s'"
    1064         Consts_SMDIChildNotVisible,     "Cannot hide an MDI Child Form"
     1069        RTLConsts_SSortedListError,     "Operation not allowed on sorted list"
    10651070        RTLConsts_STooManyDeleted,      "Too many rows or columns deleted"
    10661071        RTLConsts_SUnknownGroup,        "%s not in a class registration group"
     
    10781083        Consts_SScanLine,       "Scan line index out of range"
    10791084        Consts_SChangeIconSize, "Cannot change the size of an icon"
    1080         Consts_SOleGraphic,     "Invalid operation on TOleGraphic"
     1085        RTLConsts_SInvalidPropertyPath, "Invalid property path"
    10811086        RTLConsts_SInvalidPropertyType, "Invalid property type: %s"
    10821087        RTLConsts_SInvalidPropertyValue,        "Invalid property value"
     
    10941099        RTLConsts_SResNotFound, "Resource %s not found"
    10951100        RTLConsts_SSeekNotImplemented,  "%s.Seek not implemented"
    1096         RTLConsts_SSortedListError,     "Operation not allowed on sorted list"
     1101        RTLConsts_SDuplicateClass,      "A class named %s already exists"
    10971102        RTLConsts_SDuplicateItem,       "List does not allow duplicates ($0%x)"
    10981103        RTLConsts_SDuplicateName,       "A component named %s already exists"
     
    11101115        RTLConsts_SInvalidProperty,     "Invalid property value"
    11111116        RTLConsts_SInvalidPropertyElement,      "Invalid property element: %s"
    1112         RTLConsts_SInvalidPropertyPath, "Invalid property path"
     1117        SysConst_SShortDayNameFri,      "Fri"
    11131118        SysConst_SShortDayNameSat,      "Sat"
    11141119        SysConst_SLongDayNameSun,       "Sunday"
     
    11261131        RTLConsts_SCheckSynchronizeError,       "CheckSynchronize called from thread $%x, which is NOT the main thread"
    11271132        RTLConsts_SClassNotFound,       "Class %s not found"
    1128         RTLConsts_SDuplicateClass,      "A class named %s already exists"
     1133        SysConst_SLongMonthNameFeb,     "February"
    11291134        SysConst_SLongMonthNameMar,     "March"
    11301135        SysConst_SLongMonthNameApr,     "April"
     
    11421147        SysConst_SShortDayNameWed,      "Wed"
    11431148        SysConst_SShortDayNameThu,      "Thu"
    1144         SysConst_SShortDayNameFri,      "Fri"
     1149        SysConst_SModuleAccessViolation,        "Access violation at address %p in module '%s'. %s of address %p"
    11451150        SysConst_SOSError,      "System Error.  Code: %d.\r\n%s"
    11461151        SysConst_SUnkOSError,   "A call to an OS function failed"
     
    11581163        SysConst_SShortMonthNameDec,    "Dec"
    11591164        SysConst_SLongMonthNameJan,     "January"
    1160         SysConst_SLongMonthNameFeb,     "February"
     1165        SysConst_SVarTypeAlreadyUsedWithPrefix, "Custom variant type (%s%.4x) already used by %s"
    11611166        SysConst_SVarTypeNotUsableWithPrefix,   "Custom variant type (%s%.4x) is not usable"
    11621167        SysConst_SVarTypeTooManyCustom, "Too many custom variant types have been registered"
     
    11741179        SysConst_SAssertError,  "%s (%s, line %d)"
    11751180        SysConst_SAbstractError,        "Abstract Error"
    1176         SysConst_SModuleAccessViolation,        "Access violation at address %p in module '%s'. %s of address %p"
     1181        SysConst_SException,    "Exception %s in module %s at %p.\r\n%s%s\r\n"
    11771182        SysConst_SExceptTitle,  "Application Error"
    11781183        SysConst_SInvalidFormat,        "Format '%s' invalid or incompatible with argument"
     
    11901195        SysConst_SInvalidVarOpWithHResultWithPrefix,    "Invalid variant operation (%s%.8x)\n%s"
    11911196        SysConst_SVarTypeOutOfRangeWithPrefix,  "Custom variant type (%s%.4x) is out of range"
    1192         SysConst_SVarTypeAlreadyUsedWithPrefix, "Custom variant type (%s%.4x) already used by %s"
     1197        SysConst_SInvalidInput, "Invalid numeric input"
    11931198        SysConst_SDivByZero,    "Division by zero"
    11941199        SysConst_SRangeError,   "Range check error"
     
    12061211        SysConst_SPrivilege,    "Privileged instruction"
    12071212        SysConst_SOperationAborted,     "Operation aborted"
    1208         SysConst_SException,    "Exception %s in module %s at %p.\r\n%s%s\r\n"
    12091213        SysConst_SInvalidInteger,       "'%s' is not a valid integer value"
    12101214        SysConst_SInvalidFloat, "'%s' is not a valid floating point value"
     
    12121216        SysConst_SInvalidTime,  "'%s' is not a valid time"
    12131217        SysConst_SInvalidDateTime,      "'%s' is not a valid date and time"
     1218        SysConst_SInvalidBoolean,       "'%s' is not a valid boolean value"
    12141219        SysConst_STimeEncodeError,      "Invalid argument to time encode"
    12151220        SysConst_SDateEncodeError,      "Invalid argument to date encode"
     
    12221227        SysConst_SEndOfFile,    "Read beyond end of file"
    12231228        SysConst_SDiskFull,     "Disk full"
    1224         SysConst_SInvalidInput, "Invalid numeric input"
    12251229END
    12261230
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart.dsk

    r698 r729  
    11[Closed Files]
    2 File_0=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Options\fOptionsReportsCustom.pas',0,1,676,42,670,0,0
    3 File_1=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Consults\fEditConsult.pas',0,1,714,1,718,0,0
    4 File_2=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Consults\fConsults.pas',0,1,4875,1,4882,0,0
    5 File_3=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\fPtSel.pas',0,1,1069,12,1061,0,0
    6 File_4=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\rHTMLTools.pas',0,1,51,17,58,0,0
    7 File_5=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Templates\mTemplateFieldButton.pas',0,1,104,12,111,0,0
    8 File_6=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\Consults\fODConsult.pas',0,1,1472,38,1360,0,0
    9 File_7=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\fNotePrt.pas',0,1,303,43,310,0,0
    10 File_8=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\fPtSelOptns.pas',0,1,223,15,230,0,0
     2File_0=SourceModule,'P:\Vista\tmg-cprs\CPRS-Lib\ORNet.pas',0,1,345,1,357,0,0
     3File_1=SourceModule,'c:\program files\borland\delphi7\source\rtl\common\classes.pas',0,1,4192,1,4214,0,0
     4File_2=SourceModule,'P:\Vista\tmg-cprs\dklang-package-3.01\DKLang.pas',0,1,826,1,840,0,0
     5File_3=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\uTMGOptions.pas',0,1,62,19,73,0,0
     6File_4=SourceModule,'P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',0,1,1290,20,1298,0,0
    117
    128[Modules]
    13 Module0=P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas
    14 Module1=P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas
    15 Module2=P:\vista\tmg-cprs\CPRS-Chart\Templates\fTemplateDialog.pas
    16 Module3=P:\vista\tmg-cprs\CPRS-Chart\fOptionsNotes.pas
    17 Module4=P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\TMGHTML2.pas
    18 Module5=P:\vista\tmg-cprs\CPRS-Chart\fDrawers.pas
    19 Module6=P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplateFields.pas
    20 Module7=P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplates.pas
    21 Module8=P:\vista\tmg-cprs\CPRS-Chart\uReminders.pas
    22 Module9=P:\vista\tmg-cprs\CPRS-Chart\Templates\rTemplates.pas
    23 Module10=c:\program files\borland\delphi7\source\vcl\Controls.pas
    24 Module11=P:\vista\tmg-cprs\CPRS-Chart\fReports.pas
    25 Count=12
     9Module0=P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplateFields.pas
     10Module1=P:\vista\tmg-cprs\CPRS-Chart\Templates\fTemplateDialog.pas
     11Module2=P:\vista\tmg-cprs\CPRS-Chart\uEvaluate.pas
     12Module3=c:\program files\borland\delphi7\source\rtl\Sys\system.pas
     13Module4=c:\program files\borland\delphi7\source\rtl\Sys\sysutils.pas
     14Module5=c:\program files\borland\delphi7\source\rtl\common\StrUtils.pas
     15Module6=P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplates.pas
     16Module7=P:\vista\tmg-cprs\CPRS-Chart\Templates\rTemplates.pas
     17Module8=C:\PROGRA~1\VISTA\BDK32\Source\Trpcb.pas
     18Module9=C:\PROGRA~1\VISTA\BDK32\Source\Wsockc.pas
     19Count=10
    2620EditWindowCount=1
    2721TypeLibWindowCount=1
    2822
    29 [P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas]
    30 ModuleType=SourceModule
    31 FormState=1
    32 FormOnTop=0
    33 
    34 [P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas]
     23[P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplateFields.pas]
    3524ModuleType=SourceModule
    3625FormState=0
     
    3928[P:\vista\tmg-cprs\CPRS-Chart\Templates\fTemplateDialog.pas]
    4029ModuleType=SourceModule
    41 FormState=1
    42 FormOnTop=0
    43 
    44 [P:\vista\tmg-cprs\CPRS-Chart\fOptionsNotes.pas]
    45 ModuleType=SourceModule
    46 FormState=0
    47 FormOnTop=0
    48 
    49 [P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\TMGHTML2.pas]
    50 ModuleType=SourceModule
    51 FormState=0
    52 FormOnTop=0
    53 
    54 [P:\vista\tmg-cprs\CPRS-Chart\fDrawers.pas]
    55 ModuleType=SourceModule
    56 FormState=0
    57 FormOnTop=0
    58 
    59 [P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplateFields.pas]
     30FormState=0
     31FormOnTop=0
     32
     33[P:\vista\tmg-cprs\CPRS-Chart\uEvaluate.pas]
     34ModuleType=SourceModule
     35FormState=0
     36FormOnTop=0
     37
     38[c:\program files\borland\delphi7\source\rtl\Sys\system.pas]
     39ModuleType=SourceModule
     40FormState=0
     41FormOnTop=0
     42
     43[c:\program files\borland\delphi7\source\rtl\Sys\sysutils.pas]
     44ModuleType=SourceModule
     45FormState=0
     46FormOnTop=0
     47
     48[c:\program files\borland\delphi7\source\rtl\common\StrUtils.pas]
    6049ModuleType=SourceModule
    6150FormState=0
     
    6756FormOnTop=0
    6857
    69 [P:\vista\tmg-cprs\CPRS-Chart\uReminders.pas]
    70 ModuleType=SourceModule
    71 FormState=0
    72 FormOnTop=0
    73 
    7458[P:\vista\tmg-cprs\CPRS-Chart\Templates\rTemplates.pas]
    7559ModuleType=SourceModule
     
    7761FormOnTop=0
    7862
    79 [c:\program files\borland\delphi7\source\vcl\Controls.pas]
    80 ModuleType=SourceModule
    81 FormState=0
    82 FormOnTop=0
    83 
    84 [P:\vista\tmg-cprs\CPRS-Chart\fReports.pas]
     63[C:\PROGRA~1\VISTA\BDK32\Source\Trpcb.pas]
     64ModuleType=SourceModule
     65FormState=0
     66FormOnTop=0
     67
     68[C:\PROGRA~1\VISTA\BDK32\Source\Wsockc.pas]
    8569ModuleType=SourceModule
    8670FormState=0
     
    9983FormOnTop=0
    10084
    101 [P:\vista\tmg-cprs\CPRS-Chart\fHSplit.pas]
    102 FormState=0
    103 FormOnTop=0
    104 
    105 [P:\vista\tmg-cprs\CPRS-Chart\fPage.pas]
    106 FormState=0
    107 FormOnTop=0
    108 
    109 [P:\vista\tmg-cprs\CPRS-Chart\Orders\fODBase.pas]
    110 FormState=0
    111 FormOnTop=0
    112 
    113 [P:\vista\tmg-cprs\CPRS-Chart\fAutoSz.pas]
    114 FormState=0
    115 FormOnTop=0
    116 
    117 [P:\vista\tmg-cprs\CPRS-Chart\dShared.pas]
    118 FormState=0
    119 FormOnTop=0
    120 
    12185[EditWindow0]
    122 ViewCount=12
    123 CurrentView=0
     86ViewCount=10
     87CurrentView=3
    12488View0=0
    12589View1=1
     
    13296View8=8
    13397View9=9
    134 View10=10
    135 View11=11
    13698CodeExplorer=CodeExplorer@EditWindow0
    13799MessageView=MessageView@EditWindow0
     
    139101Visible=1
    140102State=0
    141 Left=3
    142 Top=125
    143 Width=1009
    144 Height=731
    145 MaxLeft=-136
    146 MaxTop=126
    147 ClientWidth=1001
    148 ClientHeight=697
     103Left=7
     104Top=130
     105Width=1005
     106Height=623
     107MaxLeft=-1
     108MaxTop=-1
     109ClientWidth=997
     110ClientHeight=589
    149111LeftPanelSize=140
    150 LeftPanelClients=CodeExplorer@EditWindow0
    151 LeftPanelData=00000400000000008C000000000000000250010000000000000100000000000000000000000001000000008C0000000C000000436F64654578706C6F726572FFFFFFFF
     112LeftPanelClients=CodeExplorer@EditWindow0,DockSite1
     113LeftPanelData=00000400010000000C000000436F64654578706C6F7265728C0000000000000002E10100000000000001000000008C00000009000000446F636B536974653101000000000000000000000000FFFFFFFF
    152114RightPanelSize=0
    153 BottomPanelSize=358
    154 BottomPanelClients=MessageView@EditWindow0,DockSite1
    155 BottomPanelData=0000040000000000660100000000000001E90300000000000001000000002A00000000000000010000000266010000000000000200000001E9030000000000000300000000900000000B0000004D6573736167655669657703000000006601000009000000446F636B5369746531020000000000040000000000000200000000000400000000000002000000000004000000000000FFFFFFFF
     115BottomPanelSize=105
     116BottomPanelClients=MessageView@EditWindow0
     117BottomPanelData=000004000000000000000000000000000000000000000000000100000000000000000B0000004D65737361676556696577FFFFFFFF
    156118
    157119[View0]
    158 Module=P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas
    159 CursorX=1
    160 CursorY=4156
    161 TopLine=4149
    162 LeftCol=1
    163 
    164 [View1]
    165 Module=P:\vista\tmg-cprs\CPRS-Chart\fOptionsNotes.pas
    166 CursorX=1
    167 CursorY=292
    168 TopLine=285
    169 LeftCol=1
    170 
    171 [View2]
    172 Module=P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\HTMLEdit\TMGHTML2.pas
    173 CursorX=1
    174 CursorY=180
    175 TopLine=173
    176 LeftCol=1
    177 
    178 [View3]
    179 Module=P:\vista\tmg-cprs\CPRS-Chart\fReports.pas
    180 CursorX=1
    181 CursorY=2966
    182 TopLine=2959
    183 LeftCol=1
    184 
    185 [View4]
    186 Module=c:\program files\borland\delphi7\source\vcl\Controls.pas
    187 CursorX=1
    188 CursorY=6245
    189 TopLine=6232
    190 LeftCol=1
    191 
    192 [View5]
    193120Module=P:\vista\tmg-cprs\CPRS-Chart\Templates\fTemplateDialog.pas
    194121CursorX=1
    195 CursorY=269
    196 TopLine=256
    197 LeftCol=1
    198 
    199 [View6]
    200 Module=P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas
    201 CursorX=1
    202 CursorY=3959
    203 TopLine=3952
    204 LeftCol=1
    205 
    206 [View7]
    207 Module=P:\vista\tmg-cprs\CPRS-Chart\Templates\rTemplates.pas
    208 CursorX=1
    209 CursorY=161
    210 TopLine=152
    211 LeftCol=1
    212 
    213 [View8]
    214 Module=P:\vista\tmg-cprs\CPRS-Chart\uReminders.pas
    215 CursorX=1
    216 CursorY=4507
    217 TopLine=4543
    218 LeftCol=1
    219 
    220 [View9]
     122CursorY=281
     123TopLine=269
     124LeftCol=1
     125
     126[View1]
    221127Module=P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplates.pas
    222128CursorX=1
    223 CursorY=1956
    224 TopLine=1949
    225 LeftCol=1
    226 
    227 [View10]
     129CursorY=2167
     130TopLine=2157
     131LeftCol=1
     132
     133[View2]
     134Module=P:\vista\tmg-cprs\CPRS-Chart\Templates\rTemplates.pas
     135CursorX=25
     136CursorY=103
     137TopLine=90
     138LeftCol=1
     139
     140[View3]
    228141Module=P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplateFields.pas
    229 CursorX=58
    230 CursorY=515
    231 TopLine=509
    232 LeftCol=1
    233 
    234 [View11]
    235 Module=P:\vista\tmg-cprs\CPRS-Chart\fDrawers.pas
    236 CursorX=29
    237 CursorY=208
    238 TopLine=202
     142CursorX=26
     143CursorY=1098
     144TopLine=1082
     145LeftCol=1
     146
     147[View4]
     148Module=c:\program files\borland\delphi7\source\rtl\common\StrUtils.pas
     149CursorX=1
     150CursorY=264
     151TopLine=250
     152LeftCol=1
     153
     154[View5]
     155Module=c:\program files\borland\delphi7\source\rtl\Sys\system.pas
     156CursorX=1
     157CursorY=11719
     158TopLine=11701
     159LeftCol=1
     160
     161[View6]
     162Module=c:\program files\borland\delphi7\source\rtl\Sys\sysutils.pas
     163CursorX=1
     164CursorY=10667
     165TopLine=10652
     166LeftCol=1
     167
     168[View7]
     169Module=C:\PROGRA~1\VISTA\BDK32\Source\Wsockc.pas
     170CursorX=1
     171CursorY=1479
     172TopLine=1464
     173LeftCol=1
     174
     175[View8]
     176Module=C:\PROGRA~1\VISTA\BDK32\Source\Trpcb.pas
     177CursorX=1
     178CursorY=52
     179TopLine=40
     180LeftCol=1
     181
     182[View9]
     183Module=P:\vista\tmg-cprs\CPRS-Chart\uEvaluate.pas
     184CursorX=5
     185CursorY=303
     186TopLine=292
    239187LeftCol=1
    240188
     
    254202
    255203[Watches]
    256 Count=5
    257 Watch0='frmPtSel',256,0,18,1,0,'Watches'
    258 Watch1='FRealType',256,0,18,1,0,'Watches'
    259 Watch2='FDialog',256,0,18,1,0,'Watches'
    260 Watch3='TmpSL.Text',256,0,18,1,0,'Watches'
    261 Watch4='SL.text',256,0,18,1,0,'Watches'
     204Count=16
     205Watch0='Txt',256,0,18,1,0,'Watches'
     206Watch1='i',256,0,18,1,0,'Watches'
     207Watch2='NumStr',256,0,18,1,0,'Watches'
     208Watch3='p1',256,0,18,1,0,'Watches'
     209Watch4='SL.Text',256,0,18,1,0,'Watches'
     210Watch5='Temp',256,0,18,1,0,'Watches'
     211Watch6='Txt[i]',256,0,18,1,0,'Watches'
     212Watch7='CloseMatchesNeeded',256,0,18,1,0,'Watches'
     213Watch8='FnObjStr',256,0,18,1,0,'Watches'
     214Watch9='str1',256,0,18,1,0,'Watches'
     215Watch10='st1',256,0,18,1,0,'Watches'
     216Watch11='en1',256,0,18,1,0,'Watches'
     217Watch12='str1',256,0,18,1,0,'Watches'
     218Watch13='val1',256,0,18,1,0,'Watches'
     219Watch14='val2',256,0,18,1,0,'Watches'
     220Watch15='pos2',256,0,18,1,0,'Watches'
    262221
    263222[WatchWindow]
     
    269228Left=0
    270229Top=0
    271 Width=981
    272 Height=185
    273 MaxLeft=-1
    274 MaxTop=-1
    275 ClientWidth=981
    276 ClientHeight=185
     230Width=769
     231Height=407
     232MaxLeft=-1
     233MaxTop=-1
     234ClientWidth=769
     235ClientHeight=407
    277236TBDockHeight=264
    278237LRDockWidth=421
     
    280239
    281240[Breakpoints]
    282 Count=28
    283 Breakpoint0='P:\vista\tmg-cprs\CPRS-Chart\rCover.pas',315,'',0,1,'',1,0,0,'',1,'','',''
    284 Breakpoint1='P:\vista\tmg-cprs\TMG_Extra\HTMLEdit\EmbeddedED\EmbeddedED.pas',1516,'',0,1,'',1,0,0,'',1,'','',''
    285 Breakpoint2='P:\vista\tmg-cprs\TMG_Extra\HTMLEdit\EmbeddedED\EmbeddedED.pas',1540,'',0,1,'',1,0,0,'',1,'','',''
    286 Breakpoint3='P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas',1710,'',0,1,'',1,0,0,'',1,'','',''
    287 Breakpoint4='P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas',1787,'',0,1,'',1,0,0,'',1,'','',''
    288 Breakpoint5='P:\vista\tmg-cprs\CPRS-Chart\fDrawers.pas',1068,'',0,1,'',1,0,0,'',1,'','',''
    289 Breakpoint6='P:\vista\tmg-cprs\CPRS-Chart\fPtSelOptns.pas',286,'',0,1,'',1,0,0,'',1,'','',''
    290 Breakpoint7='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4424,'',0,1,'',1,0,0,'',1,'','',''
    291 Breakpoint8='P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas',3692,'',0,1,'',1,0,0,'',1,'','',''
    292 Breakpoint9='P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas',1059,'',0,1,'',1,0,0,'',1,'','',''
    293 Breakpoint10='P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas',1076,'',0,1,'',1,0,0,'',1,'','',''
    294 Breakpoint11='P:\vista\tmg-cprs\CPRS-Chart\Templates\fTemplateDialog.pas',375,'',0,1,'',1,0,0,'',1,'','',''
    295 Breakpoint12='P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplates.pas',2167,'',0,1,'',1,0,0,'',1,'','',''
    296 Breakpoint13='P:\vista\tmg-cprs\CPRS-Chart\fOptionsNotes.pas',292,'',0,1,'',1,0,0,'',1,'','',''
    297 Breakpoint14='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',3281,'',0,1,'',1,0,0,'',1,'','',''
    298 Breakpoint15='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',3287,'',0,1,'',1,0,0,'',1,'','',''
    299 Breakpoint16='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4423,'',0,1,'',1,0,0,'',1,'','',''
    300 Breakpoint17='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4381,'',0,1,'',1,0,0,'',1,'','',''
    301 Breakpoint18='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4783,'',0,1,'',1,0,0,'',1,'','',''
    302 Breakpoint19='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4803,'',0,1,'',1,0,0,'',1,'','',''
    303 Breakpoint20='P:\vista\tmg-cprs\CPRS-Chart\fLabs.pas',2419,'',0,1,'',1,0,0,'',1,'','',''
    304 Breakpoint21='P:\vista\tmg-cprs\CPRS-Chart\fReports.pas',2966,'',0,1,'',1,0,0,'',1,'','',''
    305 Breakpoint22='P:\vista\tmg-cprs\CPRS-Chart\Consults\fConsults.pas',4882,'',0,1,'',1,0,0,'',1,'','',''
    306 Breakpoint23='P:\vista\tmg-cprs\CPRS-Chart\Consults\fEditConsult.pas',718,'',0,1,'',1,0,0,'',1,'','',''
    307 Breakpoint24='P:\vista\tmg-cprs\CPRS-Chart\Encounter\fEncounterFrame.pas',846,'',0,1,'',1,0,0,'',1,'','',''
    308 Breakpoint25='P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas',3959,'',0,1,'',1,0,0,'',1,'','',''
    309 Breakpoint26='P:\vista\tmg-cprs\CPRS-Chart\Templates\rTemplates.pas',161,'',0,1,'',1,0,0,'',1,'','',''
    310 Breakpoint27='P:\vista\tmg-cprs\CPRS-Chart\Templates\fTemplateDialog.pas',264,'',0,1,'',1,0,0,'',1,'','',''
     241Count=34
     242Breakpoint0='P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas',1710,'',0,1,'',1,0,0,'',1,'','',''
     243Breakpoint1='P:\vista\tmg-cprs\CPRS-Chart\TMG_Extra\fPtDemoEdit.pas',1787,'',0,1,'',1,0,0,'',1,'','',''
     244Breakpoint2='P:\vista\tmg-cprs\CPRS-Chart\fDrawers.pas',1068,'',0,1,'',1,0,0,'',1,'','',''
     245Breakpoint3='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4424,'',0,1,'',1,0,0,'',1,'','',''
     246Breakpoint4='P:\vista\tmg-cprs\CPRS-Chart\fOptionsNotes.pas',291,'',0,1,'',1,0,0,'',1,'','',''
     247Breakpoint5='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',3281,'',0,1,'',1,0,0,'',1,'','',''
     248Breakpoint6='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',3287,'',0,1,'',1,0,0,'',1,'','',''
     249Breakpoint7='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4423,'',0,1,'',1,0,0,'',1,'','',''
     250Breakpoint8='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4381,'',0,1,'',1,0,0,'',1,'','',''
     251Breakpoint9='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4783,'',0,1,'',1,0,0,'',1,'','',''
     252Breakpoint10='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4803,'',0,1,'',1,0,0,'',1,'','',''
     253Breakpoint11='P:\vista\tmg-cprs\CPRS-Chart\fLabs.pas',2419,'',0,1,'',1,0,0,'',1,'','',''
     254Breakpoint12='P:\vista\tmg-cprs\CPRS-Chart\fReports.pas',2966,'',0,1,'',1,0,0,'',1,'','',''
     255Breakpoint13='P:\vista\tmg-cprs\CPRS-Chart\Consults\fConsults.pas',4882,'',0,1,'',1,0,0,'',1,'','',''
     256Breakpoint14='P:\vista\tmg-cprs\CPRS-Chart\Consults\fEditConsult.pas',718,'',0,1,'',1,0,0,'',1,'','',''
     257Breakpoint15='P:\vista\tmg-cprs\CPRS-Chart\Encounter\fEncounterFrame.pas',846,'',0,1,'',1,0,0,'',1,'','',''
     258Breakpoint16='P:\vista\tmg-cprs\CPRS-Chart\fImages.pas',584,'',0,1,'',1,0,0,'',1,'','',''
     259Breakpoint17='P:\vista\tmg-cprs\CPRS-Chart\fImages.pas',599,'',0,1,'',1,0,0,'',1,'','',''
     260Breakpoint18='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',1298,'',0,1,'',1,0,0,'',1,'','',''
     261Breakpoint19='P:\vista\tmg-cprs\CPRS-Chart\fReview.pas',1350,'',0,1,'',1,0,0,'',1,'','',''
     262Breakpoint20='P:\vista\tmg-cprs\CPRS-Chart\fPtDemo.pas',63,'',0,1,'',1,0,0,'',1,'','',''
     263Breakpoint21='P:\vista\tmg-cprs\CPRS-Chart\rCover.pas',439,'',0,1,'',1,0,0,'',1,'','',''
     264Breakpoint22='P:\vista\tmg-cprs\CPRS-Chart\fVitals.pas',204,'',0,1,'',1,0,0,'',1,'','',''
     265Breakpoint23='P:\vista\tmg-cprs\CPRS-Chart\fFrame.pas',2922,'',0,1,'',1,0,0,'',1,'','',''
     266Breakpoint24='P:\vista\tmg-cprs\CPRS-Chart\fNotes.pas',4550,'',0,1,'',1,0,0,'',1,'','',''
     267Breakpoint25='P:\vista\tmg-cprs\CPRS-Chart\rHTMLTools.pas',163,'',0,1,'',1,0,0,'',1,'','',''
     268Breakpoint26='P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplates.pas',2545,'',0,1,'',1,0,0,'',1,'','',''
     269Breakpoint27='P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplates.pas',2842,'',0,1,'',1,0,0,'',1,'','',''
     270Breakpoint28='P:\vista\tmg-cprs\CPRS-Chart\Templates\fTemplateFields.pas',143,'',0,1,'',1,0,0,'',1,'','',''
     271Breakpoint29='P:\vista\tmg-cprs\CPRS-Chart\Templates\fTemplateDialog.pas',281,'',0,1,'',1,0,0,'',1,'','',''
     272Breakpoint30='P:\vista\tmg-cprs\CPRS-Chart\Templates\fTemplateDialog.pas',267,'',0,1,'',1,0,0,'',1,'','',''
     273Breakpoint31='P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplateFields.pas',1094,'',0,1,'',1,0,0,'',1,'','',''
     274Breakpoint32='P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplateFields.pas',1138,'',0,1,'',1,0,0,'',1,'','',''
     275Breakpoint33='P:\vista\tmg-cprs\CPRS-Chart\Templates\uTemplateFields.pas',1133,'',0,1,'',1,0,0,'',1,'','',''
    311276
    312277[AddressBreakpoints]
     
    316281Create=1
    317282Visible=1
    318 State=2
    319 Left=0
    320 Top=0
    321 Width=1024
     283State=0
     284Left=8
     285Top=7
     286Width=988
    322287Height=112
    323288MaxLeft=-1
    324289MaxTop=-1
    325 MaxWidth=1032
    326 MaxHeight=112
    327 ClientWidth=1024
     290ClientWidth=980
    328291ClientHeight=78
    329292
     
    364327Visible=0
    365328State=0
    366 Left=78
    367 Top=201
     329Left=81
     330Top=152
    368331Width=731
    369332Height=488
     
    396359Left=0
    397360Top=0
    398 Width=425
    399 Height=349
    400 MaxLeft=-1
    401 MaxTop=-1
    402 ClientWidth=425
    403 ClientHeight=349
     361Width=132
     362Height=440
     363MaxLeft=-1
     364MaxTop=-1
     365ClientWidth=132
     366ClientHeight=440
    404367TBDockHeight=492
    405368LRDockWidth=190
    406369Dockable=1
    407 SplitPos=65
     370SplitPos=82
    408371ArrangeBy=Name
    409 SelectedItem=Caption
    410 ExpandedItems=CalColors,EdgeBorders,Options
     372SelectedItem=
     373ExpandedItems=Anchors,CalColors,Constraints,EdgeBorders,Font,Options
    411374HiddenCategories=Legacy
    412375
     
    415378Visible=0
    416379State=0
    417 Left=20
    418 Top=265
    419 Width=737
    420 Height=350
    421 MaxLeft=-1
    422 MaxTop=-1
    423 ClientWidth=729
    424 ClientHeight=324
     380Left=1164
     381Top=203
     382Width=539
     383Height=395
     384MaxLeft=-1
     385MaxTop=-1
     386ClientWidth=531
     387ClientHeight=369
    425388TBDockHeight=197
    426389LRDockWidth=737
     
    435398[CallStackWindow]
    436399Create=1
    437 Visible=1
    438 State=0
    439 Left=1226
    440 Top=182
    441 Width=338
    442 Height=416
    443 MaxLeft=-1
    444 MaxTop=-1
    445 ClientWidth=330
    446 ClientHeight=390
     400Visible=0
     401State=0
     402Left=357
     403Top=154
     404Width=553
     405Height=521
     406MaxLeft=-1
     407MaxTop=-1
     408ClientWidth=545
     409ClientHeight=495
    447410TBDockHeight=411
    448411LRDockWidth=155
     
    475438Left=0
    476439Top=0
    477 Width=425
    478 Height=349
    479 MaxLeft=-1
    480 MaxTop=-1
    481 ClientWidth=425
    482 ClientHeight=349
     440Width=132
     441Height=440
     442MaxLeft=-1
     443MaxTop=-1
     444ClientWidth=132
     445ClientHeight=440
    483446TBDockHeight=175
    484447LRDockWidth=108
     
    491454Left=0
    492455Top=0
    493 Width=981
    494 Height=185
    495 MaxLeft=-1
    496 MaxTop=-1
    497 ClientWidth=981
    498 ClientHeight=185
     456Width=769
     457Height=407
     458MaxLeft=-1
     459MaxTop=-1
     460ClientWidth=769
     461ClientHeight=407
    499462TBDockHeight=291
    500463LRDockWidth=417
     
    595558[CodeExplorer@EditWindow0]
    596559Create=1
    597 Visible=1
     560Visible=0
    598561State=0
    599562Left=0
    600563Top=12
    601564Width=140
    602 Height=324
     565Height=439
    603566MaxLeft=-1
    604567MaxTop=-1
    605568ClientWidth=140
    606 ClientHeight=324
    607 TBDockHeight=324
     569ClientHeight=439
     570TBDockHeight=305
    608571LRDockWidth=140
    609572Dockable=1
     
    615578Left=12
    616579Top=0
    617 Width=989
    618 Height=140
    619 MaxLeft=-1
    620 MaxTop=-1
    621 ClientWidth=989
    622 ClientHeight=140
    623 TBDockHeight=140
     580Width=985
     581Height=105
     582MaxLeft=-1
     583MaxTop=-1
     584ClientWidth=985
     585ClientHeight=105
     586TBDockHeight=105
    624587LRDockWidth=443
    625588Dockable=1
     
    633596Visible=1
    634597State=0
    635 Left=232
    636 Top=77
    637 Width=441
    638 Height=404
    639 MaxLeft=-1
    640 MaxTop=-1
    641 ClientWidth=433
    642 ClientHeight=378
    643 TBDockHeight=552
     598Left=-803
     599Top=210
     600Width=785
     601Height=462
     602MaxLeft=-1
     603MaxTop=-1
     604ClientWidth=777
     605ClientHeight=436
     606TBDockHeight=233
     607LRDockWidth=283
     608Dockable=1
     609TabPosition=0
     610ActiveTab=Watch List
     611TabDockClients=WatchWindow,DebugLogView
     612
     613[DockSite1]
     614DockSiteType=1
     615Create=1
     616Visible=1
     617State=0
     618Left=0
     619Top=12
     620Width=140
     621Height=469
     622MaxLeft=-1
     623MaxTop=-1
     624ClientWidth=140
     625ClientHeight=469
     626TBDockHeight=469
    644627LRDockWidth=140
    645628Dockable=1
     
    648631TabDockClients=PropertyInspector,ObjectTree
    649632
    650 [DockSite1]
    651 DockSiteType=1
    652 Create=1
    653 Visible=1
    654 State=0
    655 Left=12
    656 Top=144
    657 Width=989
    658 Height=214
    659 MaxLeft=-1
    660 MaxTop=-1
    661 ClientWidth=989
    662 ClientHeight=214
    663 TBDockHeight=214
    664 LRDockWidth=283
    665 Dockable=1
    666 TabPosition=0
    667 ActiveTab=Watch List
    668 TabDockClients=WatchWindow,DebugLogView
    669 
  • cprs/branches/tmg-cprs/CPRS-Chart/CPRSChart_TLB.pas

    r686 r729  
    1313
    1414// PASTLWTR : 1.2
    15 // File generated on 1/22/2010 5:46:21 PM from Type Library described below.
     15// File generated on 3/29/2010 5:43:06 PM from Type Library described below.
    1616
    1717// ************************************************************************  //
  • cprs/branches/tmg-cprs/CPRS-Chart/Encounter/fPCEBase.dfm

    r496 r729  
    4545    NumGlyphs = 2
    4646  end
    47   object DKLanguageController2: TDKLanguageController
     47  object DKLanguageController: TDKLanguageController
    4848    Left = 552
    4949    Top = 48
  • cprs/branches/tmg-cprs/CPRS-Chart/Encounter/fPCEBase.pas

    r496 r729  
    2424    btnOK: TBitBtn;
    2525    btnCancel: TBitBtn;
    26     DKLanguageController2: TDKLanguageController;
     26    DKLanguageController: TDKLanguageController;
    2727    procedure FormCreate(Sender: TObject);
    2828    procedure btnCancelClick(Sender: TObject);
  • cprs/branches/tmg-cprs/CPRS-Chart/Encounter/fPCEBaseGrid.dfm

    r453 r729  
    4646    end
    4747  end
    48   inherited DKLanguageController1: TDKLanguageController
     48  inherited DKLanguageController: TDKLanguageController
    4949    LangData = {
    5050      0E0066726D504345426173654772696401010000000100000007004361707469
  • cprs/branches/tmg-cprs/CPRS-Chart/Encounter/fPCEBaseMain.dfm

    r453 r729  
    163163    end
    164164  end
    165   inherited DKLanguageController1: TDKLanguageController
     165  inherited DKLanguageController: TDKLanguageController
    166166    LangData = {
    167167      0E0066726D504345426173654D61696E01010000000100000007004361707469
  • cprs/branches/tmg-cprs/CPRS-Chart/Encounter/fPCELex.dfm

    r453 r729  
    11inherited frmPCELex: TfrmPCELex
    2   Left = 639
    3   Top = 480
     2  Left = 388
     3  Top = 221
    44  BorderIcons = []
    55  BorderStyle = bsDialog
  • cprs/branches/tmg-cprs/CPRS-Chart/Options/fOptions.dfm

    r541 r729  
    11object frmOptions: TfrmOptions
    2   Left = 334
    3   Top = 229
     2  Left = 321
     3  Top = 155
    44  Width = 435
    55  Height = 397
     
    8787      Height = 323
    8888      HelpContext = 9999
    89       ActivePage = tsNotes
     89      ActivePage = tsAppearance
    9090      Align = alClient
    9191      TabOrder = 0
     
    17931793          State = cbChecked
    17941794          TabOrder = 1
     1795          OnClick = cbSkinAtStartupClick
    17951796        end
    17961797        object btnMoreSkins: TButton
  • cprs/branches/tmg-cprs/CPRS-Chart/Options/fOptions.pas

    r490 r729  
    172172    procedure FormShow(Sender: TObject);
    173173    procedure lbSkinsKeyPress(Sender: TObject; var Key: Char);
    174     procedure btnDisableSkinClick(Sender: TObject);  //kt added 6/29/07
     174    procedure btnDisableSkinClick(Sender: TObject);
     175    procedure cbSkinAtStartupClick(Sender: TObject);  //kt added 6/29/07
    175176  private
    176177    { Private declarations }
     
    209210       rOptions, rCore, uCore, uOptions, UBACore, fFrame,
    210211       //fTestDialog;
    211 
    212212    //kt mod 6/29/07 -----
    213213    ShellAPI, //kt 9/8/08
     214    uTMGOptions, //kt 2/10/10
    214215    ORNet, //allows access to RPCBrokerV
    215216    TntForms, TntSystem, TntSysUtils;
     
    340341
    341342    //kt begin modification 6/29/07 ---------------
    342 
    343343    // Fill cbLanguage with available languages
    344344    // Note: LangManager was populated at form creation of fFrame
     
    347347    cbLanguage.ItemIndex := LangManager.LanguageIndex;
    348348    //kt end modification 6/29/07 ---------------
    349 
    350349    cbSkinAtStartup.Checked := frmFrame.SkinAtStartup; //kt 9/8/08
    351 
    352350  end;
    353351
     
    867865  procedure TfrmOptions.cbLanguageChange(Sender: TObject);  //kt added 6/29/07
    868866  var iIndex: Integer;
    869   CPRSChartINI: TINIFile;
    870867  begin
    871868    iIndex := cbLanguage.ItemIndex;
     
    881878    frmFrame.RenameTabs;  //Resets names of tabs to correct translation  //kt
    882879    frmFrame.mnuFileRefreshClick(self); //elh 6/23/08
    883     CPRSChartINI := TINIFile.Create(ExtractFilePath(ParamStr(0)) + 'CPRSChart.ini');  // Write to INI  elh  6/23/08
    884     CPRSChartINI.WriteInteger('Options','Language',LangManager.LanguageID);
    885     CPRSChartINI.Free;
     880    uTMGOptions.WriteInteger('Language',LangManager.LanguageID);
    886881  end;
    887882
     
    945940  end;
    946941
     942  procedure TfrmOptions.cbSkinAtStartupClick(Sender: TObject);
     943  begin
     944    frmFrame.SkinAtStartup := cbSkinAtStartup.Checked;
     945    uTMGOptions.WriteBool('Load Skin At Startup',frmFrame.SkinAtStartup);  //kt 9/11/08
     946  end;
     947
    947948end.
    948949
  • cprs/branches/tmg-cprs/CPRS-Chart/Options/fOptionsOther.dfm

    r667 r729  
    11object frmOptionsOther: TfrmOptionsOther
    2   Left = 517
     2  Left = 522
    33  Top = 143
    44  Hint = 'Use system default settings'
     
    99  Caption = 'Other Parameters'
    1010  ClientHeight = 463
    11   ClientWidth = 391
     11  ClientWidth = 386
    1212  Color = clBtnFace
    1313  Font.Charset = DEFAULT_CHARSET
     
    8989    Left = 0
    9090    Top = 430
    91     Width = 391
     91    Width = 386
    9292    Height = 33
    9393    HelpContext = 9110
     
    9999      Left = 0
    100100      Top = 0
    101       Width = 391
     101      Width = 386
    102102      Height = 2
    103103      Align = alTop
  • cprs/branches/tmg-cprs/CPRS-Chart/Options/fOptionsOther.pas

    r667 r729  
    7070  public
    7171    { Public declarations }
     72    procedure SaveTabColors(ColorsList : TStringList); //kt
    7273  end;
    7374
     
    8081
    8182procedure DialogOptionsOther(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
    82 procedure SetTabPosition(Position : TTabPosition);
     83procedure SetTabPosition(Position : TTabPosition); //kt
    8384
    8485implementation
     
    8788
    8889uses
    89   rOptions, uOptions, rCore, rSurgery, uConst, fMeds, fFrame;
     90  rOptions, uOptions, rCore, rSurgery, uConst, fMeds, fFrame,
     91  uTMGOptions //kt
     92  ;
    9093
    9194procedure DialogOptionsOther(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
     
    124127begin
    125128  cboTabColors.Items.Assign(frmFrame.tabPage.Tabs);  //kt 8/09
    126   //cboTabColors.Items.Assign(uTabColorsList);       //kt added8808
     129  //cboTabColors.Items.Assign(TabColorsList);       //kt added8808
    127130  cboTabColors.ItemIndex := 0;                       //kt
    128131  cboTab.Items.Assign(rpcGetOtherTabs);              //kt
    129132  cboTabColorsChange(nil);                           //kt
    130   cbEnableTabColors.Checked := uTabColorsEnabled;    //kt 8/09
     133  cbEnableTabColors.Checked := TabColorsEnabled;    //kt 8/09
    131134//if (cboTab.Items.IndexOf('Surgery') > -1) and (not ShowSurgeryTab) then  <-- original line.  //kt 8/8/2007
    132135  if (cboTab.Items.IndexOf(DKLangConstW('fOptionsOther_Surgery')) > -1) and (not ShowSurgeryTab) then //kt added 8/8/2007
     
    199202procedure TfrmOptionsOther.FormCreate(Sender: TObject);
    200203begin
    201   cbEnableTabColors.checked := uTabColorsEnabled;
     204  cbEnableTabColors.checked := TabColorsEnabled;
    202205  FStartDT  := 0;
    203206  FStopDT   := 0;
     
    313316
    314317procedure SetTabPosition(Position : TTabPosition);
     318//NOTE: Don't make this a member function of TFrmOptionsOther, becuase frmFrame needs
     319//      to be able to call it, even if the OtionsOther form is not instantiated.
    315320//kt added 8/8/08
    316321begin
     
    322327    tpRight : frmFrame.tabPage.Align := alRight;
    323328  end; {case}
     329  uTMGOptions.WriteInteger('Tab Location',integer(frmFrame.tabPage.TabPosition));
     330end;
     331
     332procedure TfrmOptionsOther.SaveTabColors(ColorsList : TStringList);
     333//kt added 8/8/08  Entire function
     334var i : integer;
     335begin
     336  for i := 0 to ColorsList.Count-1 do begin
     337    uTMGOptions.WriteInteger('Tab '+IntToStr(i)+' Color',longword(ColorsList.Objects[i]));
     338  end;
     339  uTMGOptions.WriteBool('TAB_COLORS ENABLE',TabColorsEnabled); //kt 8/09
    324340end;
    325341
     
    345361    if selIndex < 0 then exit;
    346362    cboTabColors.Items.Objects[selIndex] := pointer(ColorDialog.Color);
    347     uTabColorsList.Objects[selIndex] := pointer(ColorDialog.Color);
     363    TabColorsList.Objects[selIndex] := pointer(ColorDialog.Color);
     364    uTMGOptions.WriteInteger('Tab '+IntToStr(selIndex)+' Color',longword(TabColorsList.Objects[selIndex]));
    348365  end;
    349366end;
     
    352369//kt added
    353370begin
    354   uTabColorsEnabled := cbEnableTabColors.Checked;          //elh 01/12/10
     371  TabColorsEnabled := cbEnableTabColors.Checked;          //elh 01/12/10
    355372  frmFrame.tabPage.OwnerDraw := cbEnableTabColors.Checked; //elh 01/12/10
    356   //cboTabColors.Enabled    := uTabColorsEnabled;
    357   //lblEditTabColor.Enabled := uTabColorsEnabled;
    358   //lblTabColors.Enabled    := uTabColorsEnabled;
    359   //pnlShowColor.Enabled    := uTabColorsEnabled;
     373  cboTabColors.Enabled    := TabColorsEnabled;
     374  lblEditTabColor.Enabled := TabColorsEnabled;
     375  lblTabColors.Enabled    := TabColorsEnabled;
     376  pnlShowColor.Enabled    := TabColorsEnabled;
     377  uTMGOptions.WriteBool('TAB_COLORS ENABLE',TabColorsEnabled); //kt 3/8/10
    360378end;
    361379
  • cprs/branches/tmg-cprs/CPRS-Chart/Templates/fTemplateDialog.pas

    r698 r729  
    4747    FAnswerOpenTag : string; //kt added 12/28/09
    4848    FAnswerCloseTag : string; //kt added 12/28/09
     49    NameToObjID : TStringList; //kt added 3/26/10
     50    Formulas  : TStringList; //kt added 3/26/10
     51    TxtObjects  : TStringList; //kt added 3/28/10
    4952    procedure SizeFormToCancelBtn();
    5053    procedure ChkAll(Chk: boolean);
     
    8184  frmTemplateDialog: TfrmTemplateDialog;
    8285
    83 const
    84   HTMLBEGINNINGTAG = '{HTML:';   //kt
    85   HTMLENDINGTAG = '}';       //kt
    86   HTMLBEGINNINGTAGLEN = length(HTMLBEGINNINGTAG);  //kt
    87   HTMLENDINGTAGLEN = length(HTMLENDINGTAG);   //kt
    88 
    8986implementation
    9087
     
    153150  i, j, idx, Indent: integer;
    154151  DlgProps, Txt: string;
     152  Temp : string; //kt
     153  Changed : boolean; //kt
    155154  DlgIDCounts: TStringList;
    156155  DlgInt: TIntStruc;
    157156  CancelDlg: Boolean;
    158157  CancelMsg: String;
    159 
    160158
    161159  procedure IncDlgID(var id: string); //Appends an item count in the form of id.0, id.1, id.2, etc
     
    221219    frmTemplateDialog.HTMLAnswerOpenTag := '<I>'; //kt 12/28/09
    222220    //SL.Text := RemoveHTMLTags(SL.Text);  //elh
    223     AssignFieldIDs(SL);
     221    AssignFieldIDs(SL,frmTemplateDialog.NameToObjID);   //kt  added NameToObjID param 3/26/10
     222    HideFormulas(SL,frmTemplateDialog.Formulas); //kt added 3/26/10
     223    HideTxtObjects(SL,frmTemplateDialog.TxtObjects); //kt added 3/28/10
    224224    frmTemplateDialog.SL := SL;
    225225    frmTemplateDialog.Index := '';
     
    231231    repeat
    232232      i := pos(ObjMarker, Txt);
    233       if(i > 1) then
    234       begin
     233      if(i > 1) then begin
    235234        j := pos(DlgPropMarker, Txt);
    236         if(j > 0) then
    237           begin
     235        if(j > 0) then begin
    238236          DlgProps := copy(Txt, j + DlgPropMarkerLen, (i - j - DlgPropMarkerLen));
    239237          CountDlgProps(DlgProps);
    240           end
    241         else
    242           begin
     238        end else begin
    243239          DlgProps := '';
    244240          j := i;
    245           end;
     241        end;
    246242        inc(frmTemplateDialog.Count);
    247243        frmTemplateDialog.Index := frmTemplateDialog.Index +
     
    249245        inc(idx,i+ObjMarkerLen-1);
    250246        Indent := StrToIntDef(Piece(DlgProps, ';', 5),0);
    251         if(frmTemplateDialog.FirstIndent > Indent) then
     247        if(frmTemplateDialog.FirstIndent > Indent) then begin
    252248          frmTemplateDialog.FirstIndent := Indent;
    253       end;
    254       if(i > 0) then
     249        end;
     250      end;
     251      if(i > 0) then begin
    255252        delete(txt, 1, i + ObjMarkerLen - 1);
     253      end;
    256254    until (i = 0);
    257     if(frmTemplateDialog.Count > 0) then
    258     begin
    259       if(frmTemplateDialog.OneOnly) then
    260       begin
     255    if(frmTemplateDialog.Count > 0) then begin
     256      if(frmTemplateDialog.OneOnly) then begin
    261257        frmTemplateDialog.btnNone.Visible := FALSE;
    262258        frmTemplateDialog.btnAll.Visible := FALSE;
     
    264260      frmTemplateDialog.BuildAllControls;
    265261      repeat
    266          if (assigned(frmNotes)) and (frmTemplateDialog.HTMLMode) then frmNotes.HTMLEditor.SetMsgActive(False);  //kt 2-1-10
    267          frmTemplateDialog.ShowModal;
    268          if (assigned(frmNotes)) and (frmTemplateDialog.HTMLMode) then frmNotes.HTMLEditor.SetMsgActive(True);   //kt 2-1-10
    269          if(frmTemplateDialog.ModalResult = mrOK) then begin
    270            GetText(SL, TRUE);     {TRUE = Include embedded fields}
    271            {
    272            if uTemplates.bUsingHTMLMode then begin
    273               SL.Text := FormatHTMLTags(SL.Text);
    274            end else begin
    275               SL.Text := RemoveHTMLTags(SL.Text);
    276            end;
    277            }
    278          end else begin
    279           if (not PreviewMode) and (not frmTemplateDialog.Silent) and (not uInit.TimedOut) then
    280             begin
    281 //            CancelMsg := 'If you cancel, your changes will not be saved.  Are you sure you want to cancel?';  <-- original line.  //kt 8/8/2007
    282               CancelMsg := DKLangConstW('fTemplateDialog_If_you_cancelx_your_changes_will_not_be_savedx__Are_you_sure_you_want_to_cancelx'); //kt added 8/8/2007
    283 //            if (InfoBox(CancelMsg, 'Cancel Dialog Processing', MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES) then   <-- original line.  //kt 8/8/2007
    284               if (InfoBox(CancelMsg, DKLangConstW('fTemplateDialog_Cancel_Dialog_Processing'), MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES) then  //kt added 8/8/2007
    285                 begin
    286                   SL.Clear;
    287                   Result := TRUE;
    288                   CancelDlg := TRUE;
    289                 end
    290               else
    291                 CancelDlg := FALSE;
    292             end
    293           else
    294             begin
     262        if (assigned(frmNotes)) and (frmTemplateDialog.HTMLMode) then frmNotes.HTMLEditor.SetMsgActive(False);  //kt 2-1-10
     263        frmTemplateDialog.ShowModal;
     264        if (assigned(frmNotes)) and (frmTemplateDialog.HTMLMode) then frmNotes.HTMLEditor.SetMsgActive(True);   //kt 2-1-10
     265        if(frmTemplateDialog.ModalResult = mrOK) then begin
     266          //kt -- begin mod --  3/27/10
     267          Changed := RestoreTransformTxtObjects(SL, frmTemplateDialog.TxtObjects, frmTemplateDialog.NameToObjID);
     268          Changed := RestoreTransformFormulas(SL, frmTemplateDialog.Formulas, frmTemplateDialog.NameToObjID) or Changed;
     269          if Changed then begin //kt 3/27/10
     270            Txt := SL.Text;
     271            i := pos(ObjMarker, Txt);
     272            if(i > 1) then begin
     273              j := pos(DlgPropMarker, Txt);
     274              if (j <= 0) then j := i;
     275              Temp := frmTemplateDialog.Index;
     276              SetPiece(Temp,'~',2,IntToStr(j-1));
     277              frmTemplateDialog.Index := Temp;
     278            end;
     279          end;
     280          //kt -- end mod --
     281          GetText(SL, TRUE);     {TRUE = Include embedded fields}
     282          {
     283          if uTemplates.bUsingHTMLMode then begin
     284             SL.Text := FormatHTMLTags(SL.Text);
     285          end else begin
     286             SL.Text := RemoveHTMLTags(SL.Text);
     287          end;
     288          }
     289        end else begin
     290          if (not PreviewMode) and (not frmTemplateDialog.Silent) and (not uInit.TimedOut) then begin
     291//          CancelMsg := 'If you cancel, your changes will not be saved.  Are you sure you want to cancel?';  <-- original line.  //kt 8/8/2007
     292            CancelMsg := DKLangConstW('fTemplateDialog_If_you_cancelx_your_changes_will_not_be_savedx__Are_you_sure_you_want_to_cancelx'); //kt added 8/8/2007
     293//          if (InfoBox(CancelMsg, 'Cancel Dialog Processing', MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES) then   <-- original line.  //kt 8/8/2007
     294            if (InfoBox(CancelMsg, DKLangConstW('fTemplateDialog_Cancel_Dialog_Processing'), MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES) then begin  //kt added 8/8/2007
    295295              SL.Clear;
    296296              Result := TRUE;
    297297              CancelDlg := TRUE;
     298            end else begin
     299              CancelDlg := FALSE;
    298300            end;
    299          end;     
     301          end else begin
     302            SL.Clear;
     303            Result := TRUE;
     304            CancelDlg := TRUE;
     305          end;
     306        end;
    300307      until CancelDlg or (frmTemplateDialog.ModalResult = mrOK)
    301     end
    302     else
     308    end else begin
    303309      SL.Clear;
     310    end;
    304311  finally
    305312    //frmTemplateDialog.Free;    v22.11e RV
     
    324331  tempString := Txt;
    325332  //here we will strip out all HTML formatting tags  //elh
    326   beginning := pos(HTMLBEGINNINGTAG, tempString);
     333  beginning := pos(HTML_BEGIN_TAG, tempString);
    327334  if beginning = 0 then begin
    328335     Result := Txt;
     
    331338    begin
    332339      tempResult := tempResult + Leftstr(tempString,beginning-1);
    333       tempString := Rightstr(tempString,length(tempString)-beginning-HTMLBEGINNINGTAGLEN);
    334       ending := pos(HTMLENDINGTAG, tempString);
     340      tempString := Rightstr(tempString,length(tempString)-beginning-HTML_BEGIN_TAGLEN);
     341      ending := pos(HTML_ENDING_TAG, tempString);
    335342      tempString := Rightstr(tempString,length(tempString)-ending);
    336       beginning := pos(HTMLBEGINNINGTAG, tempString);
    337   //    tempString := Midstr(Txt,i,HTMLBEGINNINGTAGLEN);
     343      beginning := pos(HTML_BEGIN_TAG, tempString);
     344  //    tempString := Midstr(Txt,i,HTML_BEGIN_TAGLEN);
    338345    end;
    339346    Result := tempResult + tempString;
     
    348355  tempString := Txt;
    349356  //here we will strip out all HTML formatting tags  //elh
    350   beginning := pos(HTMLBEGINNINGTAG, tempString);
     357  beginning := pos(HTML_BEGIN_TAG, tempString);
    351358  if beginning = 0 then begin
    352359     Result := Txt;
     
    355362    begin
    356363      tempResult := tempResult + Leftstr(tempString,beginning-1);
    357       tempString := Rightstr(tempString,length(tempString)-beginning-HTMLBEGINNINGTAGLEN+1);
    358       ending := pos(HTMLENDINGTAG, tempString);
     364      tempString := Rightstr(tempString,length(tempString)-beginning-HTML_BEGIN_TAGLEN+1);
     365      ending := pos(HTML_ENDING_TAG, tempString);
    359366      tempResult := tempResult + Leftstr(tempString,ending-1);
    360367      tempString := Rightstr(tempString,length(tempString)-ending);
    361       beginning := pos(HTMLBEGINNINGTAG, tempString);
    362   //    tempString := Midstr(Txt,i,HTMLBEGINNINGTAGLEN);
     368      beginning := pos(HTML_BEGIN_TAG, tempString);
     369  //    tempString := Midstr(Txt,i,HTML_BEGIN_TAGLEN);
    363370    end;
    364371    Result := tempResult + tempString;
     
    565572  end;
    566573  tmp := copy(SL.Text, p1, p2);
    567   tmp := RemoveHTMLTags(tmp);
     574  tmp := RemoveHTMLTags(tmp);  //kt
    568575  if(copy(tmp, length(tmp)-1, 2) = CRLF) then
    569576    delete(tmp, length(tmp)-1, 2);
     
    747754  Entries := TStringList.Create;
    748755  NoTextID := TStringList.Create;
     756  NameToObjID := TStringList.Create ; //kt
     757  Formulas  := TStringList.Create ; //kt
     758  TxtObjects  := TStringList.Create; //kt added 3/28/10
    749759  FOldHintEvent := Application.OnShowHint;
    750760  Application.OnShowHint := AppShowHint;
     
    774784  Entries.Free;
    775785  BuildIdx.Free;
     786  NameToObjID.Free; //kt
     787  Formulas.Free; //kt
     788  TxtObjects.Free; //kt
    776789end;
    777790
  • cprs/branches/tmg-cprs/CPRS-Chart/Templates/uTemplateFields.pas

    r694 r729  
    66uses
    77  Forms, SysUtils, StrUtils, Classes, Dialogs, StdCtrls, ExtCtrls, Controls, Contnrs,
    8   Graphics, ORClasses, ComCtrls, ORDtTm;
     8  Graphics, ORClasses, ComCtrls, ORDtTm, uEvaluate;
    99
    1010type
     
    166166function GetDialogEntry(AParent: TWinControl; AID, AText: string): TTemplateDialogEntry;
    167167procedure FreeEntries(SL: TStrings);
    168 procedure AssignFieldIDs(var Txt: string); overload;
    169 procedure AssignFieldIDs(SL: TStrings); overload;
     168//kt 3/26/10 --> original  procedure AssignFieldIDs(var Txt: string); overload;
     169procedure AssignFieldIDs(var Txt: string; NameToObjID : TStringList=nil); overload;  //kt 3/26/10
     170//kt 3/26/10 --> original procedure AssignFieldIDs(SL: TStrings); overload;
     171procedure AssignFieldIDs(SL: TStrings; NameToObjID : TStringList=nil); overload; //kt 3/26/10
     172procedure HideFormulas(SL : TStrings; Formulas : TStringList); //kt added 3/26/10
     173procedure HideTxtObjects(SL : TStrings; TxtObjects : TStringList); //kt added 3/28/10
     174//function RestoreTransformFormulas(var Txt : string; Formulas, NameToObjID : TStringList) : boolean; overload; //kt added 3/26/10
     175function RestoreTransformFormulas(SL : TStrings; Formulas, NameToObjID : TStringList) : boolean; {overload; }//kt added 3/26/10
    170176//kt 12/28/09 originial --> function ResolveTemplateFields(Text: string; AutoWrap: boolean; Hidden: boolean = FALSE; IncludeEmbedded: boolean = FALSE): string;
     177function RestoreTransformTxtObjects(SL : TStrings; TxtObjects, NameToObjID : TStringList) : boolean;
    171178function ResolveTemplateFields(Text: string;
    172179                               AutoWrap: boolean;
     
    190197procedure ConvertCodes2Text(sl: TStrings; Short: boolean);
    191198function StripEmbedded(iItems: string): string;
     199function CloseCharPos(OpenChar, CloseChar : char; var Txt : string; StartingPos : integer=1) : integer; //kt added
     200
     201type
     202  TMGExtension = (tmgeFN,tmgeOBJ);
     203  TMGExtMatch = record
     204    Signature : string;
     205    SigLen : integer;
     206    EndTag : char;
     207  end;
     208  TMGExtArray = array[tmgeFN..tmgeOBJ] of TMGExtMatch;
    192209
    193210const
    194211  TemplateFieldBeginSignature = '{FLD:';
    195212  TemplateFieldEndSignature = '}';
    196   HTMLBEGINNINGTAG = '{HTML:';
    197   HTMLENDINGTAG = '}';
    198   HTMLBEGINNINGTAGLEN = length(HTMLBEGINNINGTAG);
    199   HTMLENDINGTAGLEN = length(HTMLENDINGTAG);
     213  HTML_BEGIN_TAG = '{HTML:';                      //kt
     214  HTML_ENDING_TAG = '}';                          //kt
     215  HTML_BEGIN_TAGLEN = length(HTML_BEGIN_TAG);     //kt
     216  HTML_ENDING_TAGLEN = length(HTML_ENDING_TAG);   //kt
     217  FN_BEGIN_SIGNATURE = '{FN:';                    //kt
     218  FN_BEGIN_TAG = '{';                             //kt
     219  FN_END_TAG = '}';                               //kt
     220  FN_BEGIN_SIGNATURE_LEN = length(FN_BEGIN_SIGNATURE);//kt
     221  FN_END_TAGLEN = length(FN_END_TAG);             //kt
     222  FN_SHOW_TEXT = '{%_____%-#';                    //kt
     223  FN_SHOW_TEXT_END = '}';                         //kt
     224  FN_SHOW_TEXT_LEN = length(FN_SHOW_TEXT);        //kt
     225  FN_SHOW_TEXT_END_LEN = length(FN_SHOW_TEXT_END);//kt
     226  FN_FIELD_TAG = '[FLD:';                         //kt
     227  FN_FIELD_TAG_LEN = length(FN_FIELD_TAG);        //kt
     228  FN_OBJ_TAG = '[OBJ:';                           //kt
     229  FN_OBJ_TAG_LEN = length(FN_OBJ_TAG);            //kt
     230  FLD_OBJ_SIGNATURE = '{OBJ:';                    //kt
     231  FLD_OBJ_END_TAG = '}';                          //kt
     232  FLD_OBJ_SIG_LEN = length(FLD_OBJ_SIGNATURE);    //kt
     233  OBJ_SHOW_TEXT = '{OBJ%_____%-#';                //kt
     234  OBJ_SHOW_TEXT_END = '}';                        //kt
     235  OBJ_SHOW_TEXT_LEN = length(OBJ_SHOW_TEXT);      //kt
     236  TMG_MATCH : TMGExtArray =
     237   (  (Signature : FN_BEGIN_SIGNATURE;
     238       SigLen    : FN_BEGIN_SIGNATURE_LEN;
     239       EndTag    : FN_END_TAG),
     240
     241      (Signature : FLD_OBJ_SIGNATURE;
     242       SigLen    : FLD_OBJ_SIG_LEN;
     243       EndTag    : FLD_OBJ_END_TAG)
     244   );
     245
     246
    200247  //MissingFieldsTxt = 'One or more required fields must still be entered.';  <-- original line.  //kt 8/8/2007
    201248  function MissingFieldsTxt : string;  //kt added
     
    289336uses
    290337  ORFn, rTemplates, ORCtrls, mTemplateFieldButton, dShared, uConst, uCore, rCore, Windows,
     338  ORNet,  //kt
     339  TRPCB, //kt
    291340  DKLang; //kt
    292341
     
    296345  TemplateFieldSignatureEndLen = length(TemplateFieldEndSignature);
    297346
    298 
    299347var
    300348  uTmplFlds: TList = nil;
     
    305353
    306354  uInternalFieldIDCount: integer = 0;
     355  uInternalFormulaCount: integer = 0;  //kt
     356  uInternalTxtObjCount : integer = 0; //kt
    307357
    308358const
     
    416466    if(uEntries.Count = 0) then
    417467      uInternalFieldIDCount := 0;
    418   end;
    419 end;
    420 
    421 procedure AssignFieldIDs(var Txt: string);
     468      uInternalFormulaCount := 0; //kt
     469      uInternalTxtObjCount := 0; //kt
     470  end;
     471end;
     472
     473//kt original line --> procedure AssignFieldIDs(var Txt: string);
     474procedure AssignFieldIDs(var Txt: string; NameToObjID : TStringList); //kt
    422475var
    423476  i: integer;
     477  p2 : integer; //kt
     478  FldName : string; //kt
     479  FldID : string; //kt
    424480
    425481begin
    426482  i := 0;
    427   while (i < length(Txt)) do
    428   begin
     483  while (i < length(Txt)) do begin
    429484    inc(i);
    430     if(copy(Txt,i,TemplateFieldSignatureLen) = TemplateFieldBeginSignature) then
    431     begin
     485    if copy(Txt,i,TemplateFieldSignatureLen) = TemplateFieldBeginSignature then begin
    432486      inc(i,TemplateFieldSignatureLen);
    433       if(i < length(Txt)) and (copy(Txt,i,1) <> FieldIDDelim) then
    434       begin
     487      if(i < length(Txt)) and (copy(Txt,i,1) <> FieldIDDelim) then begin
     488        p2 := PosEx(TemplateFieldEndSignature,Txt,i);           //kt
     489        FldName := '';                                          //kt
     490        if p2 > 0 then FldName := Trim(copy(Txt,i,(p2-i)));  //kt
    435491        insert(GetNewFieldID, Txt, i);
    436492        inc(i, FieldIDLen);
    437       end;
    438     end;
    439   end;
    440 end;
    441 
    442 procedure AssignFieldIDs(SL: TStrings);
     493        if (FldName <> '') and Assigned(NameToObjID) then begin                                      //kt
     494          NameToObjID.AddObject(FldName,Pointer(uInternalFieldIDCount)); //kt
     495        end;                                                             //kt
     496      end;
     497    end;
     498  end;
     499end;
     500
     501procedure AssignFieldIDs(SL: TStrings; NameToObjID : TStringList);
    443502var
    444503  i: integer;
     
    449508  begin
    450509    txt := SL[i];
    451     AssignFieldIDs(txt);
     510    //kt AssignFieldIDs(txt);
     511    AssignFieldIDs(txt, NameToObjID); //kt
    452512    SL[i] := txt;
    453513  end;
    454514end;
     515
     516function CloseCharPos(OpenChar, CloseChar : char; var Txt : string; StartingPos : integer=1) : integer;
     517//kt added function
     518//Return the position of a closing character, ignoring all intervening nested open and close chars
     519//NOTE: It is expected that StartingPos is pointing to the first opening character.
     520var i : integer;
     521    CloseMatchesNeeded : integer;
     522begin
     523  Result := 0;
     524  CloseMatchesNeeded := 1;
     525  for i := StartingPos to Length(Txt) do begin
     526    if (Txt[i] = OpenChar) and (i <> StartingPos) then Inc(CloseMatchesNeeded);
     527    if Txt[i] = CloseChar then Dec(CloseMatchesNeeded);
     528    if CloseMatchesNeeded = 0 then begin
     529      Result := i;
     530      break;
     531    end;
     532  end;
     533end;
     534
     535
     536procedure HideFormulas(SL : TStrings; Formulas : TStringList);
     537//kt added function
     538//NOTE: formulas will not be allowed to use the '}' character
     539var p1,p2 : integer;
     540    FnStr : string;
     541    SubStrA,SubStrB : string;
     542    Txt : String;
     543begin
     544  Txt := SL.Text;
     545  p1 := Pos(FN_BEGIN_SIGNATURE,Txt);
     546  while (p1>0) do begin
     547    SubStrA := MidStr(Txt,1,p1-1);
     548    p1 := p1 + FN_BEGIN_SIGNATURE_LEN;
     549    //p2 := PosEx(FN_END_TAG,Txt,p1);
     550    p2 := CloseCharPos(FN_BEGIN_TAG, FN_END_TAG, Txt, p1);
     551    SubStrB := MidStr(Txt,p2+1,999);
     552    FnStr := MidStr(Txt,p1, (p2-p1));
     553    FnStr := AnsiReplaceText(FnStr,#9,'');
     554    FnStr := AnsiReplaceText(FnStr,#10,'');
     555    FnStr := AnsiReplaceText(FnStr,#13,'');
     556    //FnStr := AnsiReplaceText(FnStr,' ','');
     557    inc(uInternalFormulaCount);
     558    Formulas.AddObject(FnStr,Pointer(uInternalFormulaCount));
     559    Txt := SubStrA + FN_SHOW_TEXT + IntToStr(uInternalFormulaCount) + FN_SHOW_TEXT_END + SubStrB;
     560    p1 := PosEx(FN_BEGIN_SIGNATURE,Txt,p1);
     561  end;
     562  SL.Text := Txt;
     563end;
     564
     565procedure HideTxtObjects(SL : TStrings; TxtObjects : TStringList); //kt added 3/28/10
     566//kt added function
     567var p1,p2 : integer;
     568    FnStr : string;
     569    SubStrA,SubStrB : string;
     570    Txt : String;
     571begin
     572  Txt := SL.Text;
     573  p1 := Pos(FLD_OBJ_SIGNATURE,Txt);
     574  while (p1>0) do begin
     575    SubStrA := MidStr(Txt,1,p1-1);
     576    p1 := p1 + FN_OBJ_TAG_LEN;
     577    p2 := CloseCharPos(FN_BEGIN_TAG, FN_END_TAG, Txt, p1);
     578    SubStrB := MidStr(Txt,p2+1,999);
     579    FnStr := MidStr(Txt,p1, (p2-p1));
     580    FnStr := AnsiReplaceText(FnStr,#9,'');
     581    FnStr := AnsiReplaceText(FnStr,#10,'');
     582    FnStr := AnsiReplaceText(FnStr,#13,'');
     583    inc(uInternalTxtObjCount);
     584    TxtObjects.AddObject(FnStr,Pointer(uInternalTxtObjCount));
     585    Txt := SubStrA + OBJ_SHOW_TEXT + IntToStr(uInternalTxtObjCount) + OBJ_SHOW_TEXT_END + SubStrB;
     586    p1 := PosEx(FLD_OBJ_SIGNATURE,Txt,p1);
     587  end;
     588  SL.Text := Txt;
     589end;
     590
     591function InsideMarkers(var S : string; MarkerCh : char; P : integer) : boolean;
     592//Function returns if position P is inside characters MarkerCh.
     593//e.g. S =  'xxx|xxxxx|xxxxx'  MarkerCh='|'
     594//     P = 2  ==> result is false
     595//     P = 5  ==> result is true
     596//     P = 12 ==> result is false
     597
     598var p1,p2 : integer;
     599    Inside : boolean;
     600begin
     601  Inside := false;
     602  p1 := Pos(MarkerCh,S);
     603  while (p1 > 0) do begin
     604    if (p1 >= P) then break;
     605    p1 := PosEx(MarkerCh,S,p1+1);
     606    if (p1 > 0) and (p1 > P) then Inside := not Inside;
     607  end;
     608  Result := Inside;
     609end;
     610
     611function SubstuteIDs(Txt : string; NameToObjID : TStringList) : string;
     612//kt added function
     613//Prefix any field names with their FldID's, in format of FieldIDDelim+FldID
     614// E.g. [FLD:1:NUM1-16] --> `00001NUM1-16`
     615//Note: Field ID's are started with character FieldIDDelim, and are of a fixed length (FieldIDLen)
     616
     617(*  Syntax examples:
     618
     619 {FN:[FLD:1:NUMB1-16]-[FLD:2:NUMB1-16]-[FLD:3:NUMB1-16]}, or
     620 {FN:[OBJ:TABLE1]-[FLD:2:NUMB1-16]-[FLD:3:NUMB1-16]}, or
     621 {FN:[OBJ:TABLE2("POTASSIUM")]-[FLD:2:NUMB1-16]-[FLD:3:NUMB1-16]}, or
     622 {FN:[OBJ:TABLE2([FLD:1:NUMB1-16])]-[FLD:2:NUMB1-16]-[FLD:3:NUMB1-16]}
     623 {FN:[OBJ:TABLE2((5+3)/2)]-[FLD:2:NUMB1-16]-[FLD:3:NUMB1-16]}
     624 (arbitrary deep nesting)
     625 Note: arguments should be round by matching [ ]'s
     626       An argument will start with a TYPE (so far, FLD or OBJ) and ':'
     627
     628       If TYPE is FLD, there will be :number:, with number being same
     629       as number in old format (i.e. ...]#2).
     630       If number not provided, then default value is 1
     631
     632       If TYPE is OBJ, then this indicates that the parameter name (e.g. TABLE) is
     633       the name of a TIU TEXT object, that will be processed on the server.
     634       Parameters should be resolved before passing to the server.
     635*)
     636
     637var i,j,p1,p2 : integer;
     638    SubStrA,SubStrB, NumStr : string;
     639    FldIDNum,CountofSimilar : integer;
     640    FldIDNumStr : string;
     641    CountOfSimStr : string;
     642    Temp,FldName : string;
     643    Skip : boolean;
     644begin
     645  for i := 0 to NameToObjID.Count-1 do begin
     646    CountofSimilar := 0;
     647    FldName := NameToObjID.Strings[i];
     648    for j := 0 to i do begin
     649      if NameToObjID.Strings[i] = FldName then inc(CountofSimilar);
     650    end;
     651    CountOfSimStr := IntToStr(CountofSimilar);
     652    FldIDNum := Integer(NameToObjID.Objects[i]);
     653    FldIDNumStr := IntToStr(FldIDNum);
     654    FldIDNumStr := FieldIDDelim + StringOfChar('0', FieldIDLen-1-Length(FldIDNumStr)) + FldIDNumStr;
     655    p1 := 1;
     656    p1 := PosEx(FldName,Txt,p1);
     657    while InsideMarkers(Txt, FieldIDDelim, p1) do begin //Ignore included fieldnames from prior cycle.
     658      p2 := PosEx(FieldIDDelim,Txt,p1+1);
     659      if p2 >0 then begin
     660         p1 := p2+1;
     661         p1 := PosEx(FldName,Txt,p1);
     662      end else p1 := 999;  //error condition.
     663    end;
     664    while (p1>0) and (p1 < 999) do begin
     665      Skip := false;
     666      SubStrA := MidStr(Txt,1,p1-1);
     667      SubStrB := MidStr(Txt, p1+Length(FldName), 999);
     668      if (LeftStr(SubStrB,1)=']') and (Pos(FN_FIELD_TAG,SubStrA) > 0) then begin
     669        NumStr := piece(RightStr(SubStrA,7),':',2);
     670        SubStrA := LeftStr(SubStrA,Length(SubStrA)-7);
     671        p2 := 2;
     672        SubStrB := MidStr(SubStrB,p2,999);
     673        if NumStr <> CountOfSimStr then begin
     674          Skip := true;
     675          Inc(p1);
     676        end;
     677      end else begin
     678         Skip := true;
     679         Inc(p1);
     680      end;
     681      if not Skip then begin
     682        Txt := SubStrA + FldIDNumStr +FldName + FieldIDDelim;
     683        p1 := Length(Txt);
     684        Txt := Txt + SubStrB;
     685      end;
     686      p1 := PosEx(FldName,Txt,p1);
     687    end;
     688  end;
     689  Result := Txt;
     690end;
     691
     692
     693function RestoreTransformFormulas(SL : TStrings; Formulas, NameToObjID : TStringList) : boolean;
     694//kt added 3/26/10
     695//Returns if any changes made
     696//Replace formula text back in, and change field names into FldID's
     697
     698  function GetFormula(NumStr : string) : string;
     699  //Return formula text based on provided index number of formula
     700  var num, i : integer;
     701      PtrNum : Pointer;
     702  begin
     703    Result := '';
     704    try
     705      Num := StrToInt(NumStr);
     706      PtrNum := Pointer(Num);
     707      for i := 0 to Formulas.Count-1 do begin
     708        if Formulas.Objects[i] = PtrNum then begin
     709          Result := Formulas.Strings[i];
     710          break;
     711        end;
     712      end;
     713    except
     714      on EConvertError do Result := '??';
     715    end;
     716  end;
     717
     718var p1,p2 : integer;
     719    count : integer;
     720    FnStr : string;
     721    Txt : string;
     722    SubStrA,SubStrB : string;
     723begin
     724  Txt := SL.Text;
     725  Result := false;
     726  p1 := Pos(FN_SHOW_TEXT,Txt);
     727  while (p1>0) do begin
     728    SubStrA := MidStr(Txt,1,p1-1);
     729    p1 := p1 + FN_SHOW_TEXT_LEN;
     730    p2 := PosEx(FN_SHOW_TEXT_END,Txt,p1);
     731    SubStrB := MidStr(Txt,p2+1,999);
     732    FnStr := MidStr(Txt,p1, (p2-p1));
     733    FnStr := GetFormula(FnStr);
     734    FnStr := SubstuteIDs(FnStr,NameToObjID);
     735    Txt := SubStrA + FN_BEGIN_SIGNATURE + FnStr + FN_END_TAG + SubStrB;
     736    Result := true;
     737    p1 := PosEx(FN_SHOW_TEXT,Txt,p1);
     738  end;
     739  SL.Text := Txt;
     740end;
     741
     742{
     743function RestoreTransformFormulas(SL : TStrings; Formulas, NameToObjID : TStringList) : boolean; overload;
     744//kt added 3/26/10
     745//Returns if any changes made
     746var
     747  i: integer;
     748  Changed : boolean;
     749  txt: string;
     750
     751begin
     752  Result := false;
     753  for i := 0 to SL.Count-1 do begin
     754    txt := SL[i];
     755    Changed := RestoreTransformFormulas(txt, Formulas, NameToObjID);
     756    Result := Result or Changed;
     757    SL[i] := txt;
     758  end;
     759end;
     760}
     761
     762function RestoreTransformTxtObjects(SL : TStrings; TxtObjects, NameToObjID : TStringList) : boolean;
     763//kt added 3/28/10
     764//Returns if any changes made
     765//Replace formula text back in, and change field names into FldID's
     766
     767  function GetTxtObjects(NumStr : string) : string;
     768  //Return TxtObject text based on provided index number of formula
     769  var num, i : integer;
     770      PtrNum : Pointer;
     771  begin
     772    Result := '';
     773    try
     774      Num := StrToInt(NumStr);
     775      PtrNum := Pointer(Num);
     776      for i := 0 to TxtObjects.Count-1 do begin
     777        if TxtObjects.Objects[i] = PtrNum then begin
     778          Result := TxtObjects.Strings[i];
     779          break;
     780        end;
     781      end;
     782    except
     783      on EConvertError do Result := '??';
     784    end;
     785  end;
     786
     787var p1,p2 : integer;
     788    count : integer;
     789    ObjStr : string;
     790    SubStrA,SubStrB : string;
     791    Txt : string;
     792begin
     793  Txt := SL.Text;
     794  Result := false;
     795  p1 := Pos(OBJ_SHOW_TEXT,Txt);
     796  while (p1>0) do begin
     797    SubStrA := MidStr(Txt,1,p1-1);
     798    p1 := p1 + OBJ_SHOW_TEXT_LEN;
     799    p2 := PosEx(OBJ_SHOW_TEXT_END,Txt,p1);
     800    SubStrB := MidStr(Txt,p2+1,999);
     801    ObjStr := MidStr(Txt,p1, (p2-p1));
     802    ObjStr := GetTxtObjects(ObjStr);
     803    ObjStr := SubstuteIDs(ObjStr,NameToObjID);
     804    Txt := SubStrA + FLD_OBJ_SIGNATURE + ObjStr + FLD_OBJ_END_TAG + SubStrB;
     805    Result := true;
     806    p1 := PosEx(OBJ_SHOW_TEXT,Txt,p1);
     807  end;
     808  SL.Text := Txt;
     809end;
     810
     811
     812function GetRPCTIUObj(TIUObjName : string) : string;
     813//kt added entire function 3/28/10
     814//Based on rTemplates.GetTemplateText(BoilerPlate: TStrings);
     815begin
     816  TIUObjName := AnsiReplaceText(TIUObjName,'|','');
     817  with RPCBrokerV do begin
     818    ClearParameters := True;
     819    RemoteProcedure := 'TIU TEMPLATE GETTEXT';
     820    Param[0].PType := literal;
     821    Param[0].Value := Patient.DFN;
     822    Param[1].PType := literal;
     823    Param[1].Value := Encounter.VisitStr;
     824    Param[2].PType := list;
     825    Param[2].Mult[IntToStr(1)+',0'] := '|' + TIUObjName + '|';
     826    CallBroker;
     827    RPCBrokerV.Results.Delete(0);
     828    if RPCBrokerV.Results.count > 0 then begin
     829      Result := RPCBrokerV.Results.Strings[0];
     830    end else Result := '';
     831    RPCBrokerV.Results.Clear;
     832  end;
     833end;
     834
     835
     836Procedure EvalTIUObjects(var Formula : string);
     837//kt added entire function 3/28/10
     838var p1,p2 : integer;
     839    OP1,OP2 : integer;
     840    Problem : boolean;
     841    SubStrA, SubStrB : string;
     842    TIUObj,Argument,s : string;
     843begin
     844  p1 := Pos(FN_OBJ_TAG, Formula);
     845  while (p1 > 0) do begin
     846    p2 := CloseCharPos('[',']',Formula, p1+1);
     847    if p2=0 then begin
     848      Formula := 'ERROR.  Matching "]" not found after ' + FN_OBJ_TAG + '.';
     849      Exit;
     850    end;
     851    SubStrA := MidStr(Formula,1,p1-1);
     852    p1 := p1+FN_OBJ_TAG_LEN;
     853    TIUObj := Trim(MidStr(Formula, p1, (p2-p1)));
     854    SubStrB := MidStr(Formula,p2+1,999);
     855    OP1 := Pos('{',TIUObj);
     856    if (OP1 > 0) then begin
     857      OP2 := CloseCharPos('{','}', TIUObj, OP1+1);
     858      if OP2=0 then begin
     859        Formula := 'ERROR.  Matching ")" not found after "(".';
     860        Exit;
     861      end;
     862      Argument := MidStr(TIUObj,OP1+1,(OP2-(OP1+1)));
     863      if Pos(FN_OBJ_TAG,Argument)>0 then begin
     864        EvalTIUObjects(Argument)
     865      end;
     866      Problem := false;
     867      s := FloatToStr(StringEval(Argument,Problem));
     868      if Problem then begin
     869        Formula := 'ERROR evaluating argument: [' + s + '].';
     870        Exit;
     871      end else begin
     872        Argument := s;
     873      end;
     874      TIUObj := MidStr(TIUObj,1,OP1-1) + '{' + Argument + '}';
     875    end;
     876    TIUObj := GetRPCTIUObj(TIUObj);
     877    Formula := SubStrA + TIUObj + SubStrB;
     878    p1 := Pos(FN_OBJ_TAG, Formula);
     879  end;
     880end;
     881
     882
    455883
    456884procedure WordWrapText(var Txt: string; HTMLMode : boolean);
     
    561989  Entry: TTemplateDialogEntry;
    562990  iField, Temp, NewTxt, Fld: string;
    563   FoundEntry: boolean;
     991  FoundEntry,Problem: boolean;
    564992  TmplFld: TTemplateField;
    565993  tempSL : TStringList;
     994  SubStrA, SubStrB : string;  //kt
     995  ExtMode : TMGExtension; //kt
     996  TempStr, FnObjStr,Argument : string; //kt
     997  FnP1,FnP2,p1,p2 : integer; //kt
    566998
    567999  procedure AddNewTxt;
     
    6481080    end;
    6491081  until(i = 0);
     1082
     1083  //kt -- begin mod ---  Entire section added.
     1084  Temp := Result;
     1085  for ExtMode := tmgeFN to tmgeOBJ do begin
     1086    repeat
     1087      i := pos(TMG_MATCH[ExtMode].Signature, Temp);
     1088      if(i > 0) then begin
     1089        FnP1 := i;
     1090        FnP2 := CloseCharPos('{', TMG_MATCH[ExtMode].EndTag, Temp, i);
     1091        //FnP2 := Pos(TMG_MATCH[ExtMode].EndTag,Temp);    //Should use CloseCharPos function
     1092        p1 := FnP1 + TMG_MATCH[ExtMode].SigLen;
     1093        FnObjStr := MidStr(Temp, p1, FnP2-p1);
     1094        p1 := Pos(FieldIDDelim,FnObjStr);
     1095        while (p1 > 0) do begin
     1096          SubStrA := MidStr(FnObjStr,1,p1-1);
     1097          p2 := PosEx(FieldIDDelim,FnObjStr,p1+1);
     1098          Argument := MidStr(FnObjStr,p1+1,(p2-p1)-1);
     1099          SubStrB := MidStr(FnObjStr,p2+1,999);
     1100          CtrlID := StrToIntDef(MidStr(Argument,1,FieldIDLen-1), 0);
     1101          Fld := MidStr(Argument,FieldIDLen,999);
     1102          if(CtrlID > 0) then begin
     1103            FoundEntry := FALSE;
     1104            for j := 0 to uEntries.Count-1 do begin
     1105              Entry := TTemplateDialogEntry(uEntries.Objects[j]);
     1106              if(assigned(Entry)) then begin
     1107                if IncludeEmbedded then
     1108                  iField := Fld
     1109                else
     1110                  iField := '';
     1111                NewTxt := Entry.GetControlText(CtrlID, FALSE, FoundEntry, AutoWrap, iField);
     1112                TmplFld := GetTemplateField(Fld, FALSE);
     1113                if (assigned(TmplFld)) and (TmplFld.DateType in DateComboTypes) then {if this is a TORDateBox}
     1114                   NewTxt := Piece(NewTxt,':',1);          {we only want the first piece of NewTxt}
     1115                Argument := Trim(NewTxt);
     1116              end;
     1117            end;
     1118          end else Argument := '??';
     1119          FnObjStr := SubStrA + Argument + SubStrB;
     1120          p1 := Pos(FieldIDDelim,FnObjStr);
     1121        end;
     1122        if (ExtMode = tmgeOBJ) then begin
     1123          FnObjStr := FN_OBJ_TAG + FnObjStr + ']';
     1124        end;
     1125        if (Pos(FN_OBJ_TAG,FnObjStr)>0) then begin
     1126          EvalTIUObjects(FnObjStr);
     1127        end;
     1128        if ExtMode = tmgeFN then begin
     1129          Problem := false;
     1130          TempStr := AnsiReplaceText(FnObjStr,' ','');
     1131          TempStr := FloatToStr(StringEval(TempStr,Problem));
     1132          if not Problem then FnObjStr := TempStr;
     1133        end;
     1134        SubStrA := MidStr(Temp,1,FnP1-1);
     1135        SubStrB := MidStr(Temp,FnP2+1,999);
     1136        if (HTMLMode=true) and (FnObjStr <> '') then begin
     1137          FnObjStr := HTMLAnswerOpenTag + FnObjStr + HTMLAnswerCloseTag;
     1138        end;
     1139        Temp := SubStrA + FnObjStr + SubStrB;
     1140      end else begin
     1141        if HTMLMode=true then begin
     1142          tempSL := TStringList.create;
     1143          tempSL.Text := Result;
     1144          if tempSL.Count < 3 then begin
     1145            Result := HTMLAnswerOpenTag + Result + HTMLAnswerCloseTag;
     1146          end;
     1147          tempSL.Free;
     1148        end;
     1149      end;
     1150    until(i = 0);
     1151  end;
     1152  Result := Temp;
     1153  //kt -- end mod --
     1154
    6501155  if not AutoWrap then
    6511156    WordWrapText(Result,HTMLMode);
     
    6601165  Temp, NewTxt, FldName: string;
    6611166  FoundEntry: boolean;
     1167  SubStrA,SubStrB : string;
    6621168
    6631169begin
     
    25103016end;
    25113017
     3018function EvaluateFormula(formula : string): string;
     3019begin
     3020//CloseCharPos(OpenChar, CloseChar : char; var Txt : string; StartingPos : integer=1) : integer;
     3021end;
     3022
    25123023initialization
    25133024
  • cprs/branches/tmg-cprs/CPRS-Chart/UploadImages.dfm

    r453 r729  
    11object UploadForm: TUploadForm
    2   Left = 224
    3   Top = 126
    4   Width = 800
     2  Left = 170
     3  Top = 169
     4  Width = 776
    55  Height = 493
    66  Caption = 'Upload Images to Server'
     
    1818  OnShow = FormShow
    1919  DesignSize = (
    20     792
     20    768
    2121    459)
    2222  PixelsPerInch = 96
     
    2828    Height = 229
    2929    AutoSize = True
     30    Picture.Data = {
     31      0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000008500
     32      0000E508060000010A2904F000000006624B474400FF00FF00FFA0BDA7930000
     33      00097048597300000B1300000B1301009A9C180000000774494D450000000000
     34      00000973942E000059374944415478DAEC5D077C8DD71B7EEEBDB937F3668A0C
     35      318384182146EDBDA955B4B46A46516A548D9A358A524A51A3AA46112BC42646
     36      891D249188C81291BDF7B8F77EFFF37E37374D22914DE29FD7EFF8BE7CE3DCF3
     37      3DE739EF79CF7A8F00652082BC177EFFFDF7B8B367CFEA5DB87001919191E8DC
     38      B973E376EDDA7D221008F6B27B080D0DC59C39732E9F3E7DBA4F81919C3A758A
     39      4B4949414646063B3F83376F82F0C9279FA05BB76E68D6AC19AE5EBD8A3FFFFC
     40      133D7B7E8175EBBE17E41B09899D9D5D84BDFD0CE3E3C71D70E5CA7975762983
     41      8561EEEEEE271C1C6E62D5AA198DD8DFDE05A644253EE77A730D075CCE75FFC5
     42      99AE9CD5A737DE7A27BF484CB38E9B58989DEB618974399791F8073B0DCBBA14
     43      F6CE94942A77F24A870BB5383ABAF40B12942892414E769C9595AE128F170970
     44      1AE42A287624AA88E8585004E58F09C7848E693260EE3F01D8FE75BDE2A78493
     45      6572E991C18893D641421A2360B356C68921AE51C58A64278BC7C6CE148D1B19
     46      6267B73F31798835B475F5317FD1515C72FEA7F98BC767DC0B8DE4DF0DF3B927
     47      CF3C317EE127D8F864386A37D083545F9FBFF768EF19AC5BFDB9A0D048562FBB
     48      CA690993F1752F17AC0E9A85DFFEAD0B59DC25405D1DDFEA7AE1F7DF26161EC9
     49      A3474A6055D27AB618426B0E2F366CC2EA39C05F7FCE2C3C929CE213C57109E9
     50      404C8A1C297211FE59B60E0E4717142F12CBE6FDFFE0A0804241D9A680502088
     51      F3F7B8B4A05891C09E95E65D7CA9CE570A8D64F49DA63C36FFECF3D8CE229A5E
     52      EC48742DECDACE73AD798FCED7DB060D4B0C7DEC481F54A448BA76FD823B756A
     53      3BA64DBB8073B77EEDCF293875C6D6D3F945506024F6F68FB88C8C68A4A747E3
     54      F0E1D1B99EE96CDDF9C72FE77CB9CADEDEFEDDB93368D072EEC48945F8FAEBE3
     55      D9910CC220F523C947D2AE5DBB066767676CDEBCF908BBFCC55B919C3B778E6B
     56      D3A60D5EBD7A0556CFE0E2C5CBACCA88C7F6ED6B051DD1D1CC6050ED90EFBE1B
     57      8F152B5620E656CC4A4F782ECD2F253ABEBEBE89BB77EF66A79A4848C8C08E1D
     58      6BB4FCFDFD53629233E17A27067DFB9A6374EDD1DD5DE072BDC8595C14A9C091
     59      BC78F182AB56AD1A643219222222D0B46953013B72E9E9E93034348444228158
     60      2C161418C94F3FFDC4B17A182D5BB644545414AB87AF4057571775EAD4E10355
     61      F2BFFEFA2BACACBA62DEBC2FDFC9133DF672DC82050BE0EAEA4A856E0E5DDCB7
     62      6F1FB775EB56F8F9F93D8C8B8B6B53244CDC4FF6E19A0DBB94EBBEA7830D6733
     63      D2B3D00ADD34C7F95B157A9E6B610545F296F4D81DD0D879725DAF62E54E2EB1
     64      C7930E436BD9BEAB327F672406F5ECF43AFE8638AAD0A932BF3E55619314FCC4
     65      AB589164A5841B34C80E37A6088624863C3A5DB2CF29A2E41B895C2EE7844221
     66      AFC6A81EB66ADB4727DCFD7272B122494C4CE4B4132390A46980588101AE9E04
     67      264E1014CF2A080F0FE7967FD50BDF66C641DF4003B747BDC08891CA54F53E0B
     68      3C182110141A49404000E7F0D30CF46B668E4C8936C2EAFC8A14EB54FE5E231D
     69      4D3431592102962BDE1989A7A72777EE5820BA367A065DAD3484E92EC5D287CE
     70      F8F7A9042E6B3AA143AD2244F2E85102C3549AFDB72B0B53E60BE0B8671DD465
     71      3FA05F83224492573CC29515BA2A8C6A528248EA35EFFB07ABCF21E714028E59
     72      7341CFAE4C458E8AACF00278D492731EE5A77CAEDD080DDC3D9656A42CCE1141
     73      AA494D2D0D3AFFA7BD47C9EC58A959CBA13F3CAD7572C91247E89E6FD53F21F8
     74      D185224572EF1EC7A5A5DDE41B4A1A1A1A42A9B9DD608150905E5004F94672F1
     75      22C79D3CE90A1F9F8DB871E370AEFBFDD04F6CBBD036E3A6E3CD5FEF3CBF33B7
     76      C048FEF987E31C1C2EA07AF5EAD8B5AB55F67D5695722E2E2E68D2A409828383
     77      59A53FE86D6DCF3439470FE8335B554B4B0B4E4E4EECAA11BEFF7E3CFFCCBC79
     78      F3B8FAF527B288C7E0B7DF7E43C78E1DF3AF3258AB3398455663FEFCA558B264
     79      3533765AEC66914DA60624ABD470FCB81B4E9FDCE01A1E15DEAA28B9439C4F44
     80      11E5FD57E89F7DF6D990BA75EBAEFAE5975F9A14F6ECFCF9F3DDEEDCB933EDD6
     81      AD5B2EA54E88A3A323479CA3E6536060201A366CC81B06642C9035A6A6A6CEAE
     82      87E2FAF57368DEBC396AD5AAC59A0FEA484A4A024B30FF5E5858187FFDEEDD30
     83      B8B99DC19327DED8BB776B919AD639A5F1E2C58B3DC78C198365CB9661FCF8F1
     84      2CC2FB78F9F2056F68181B1B233A5A8DB166914BCD9A3553CF9E3DDBF3F5EBD7
     85      3C194C4C4CB072E54AB46FDF9E7F8EE8191696203B73E6C82F2CDE45A5CD5F01
     86      B38015BB76ED624D27F47DD7833FFFFC3377E4C81186821BE991F45265CD3FAC
     87      24E6BDF645571F5CFC7B13626BEF7867C47D6D5D6160618EC367CD725D5FBE7C
     88      39D30E3EC5CE9AF726A54F883D5CAA75D26ADF3CCD53C40C324549A3297942EC
     89      7166FCA41683F25E0E723B69C01214F7BE1242558861E240D7C8B56B47645F5C
     90      D338E06B4EC89D4F34484B602645C6FB41A48CA57226242D2D8D23CD4942E53A
     91      5DA60C6972D626D99D02B3E70F60E8B25DDDD3F358B1B2A5D809898989E10C56
     92      F446865006492D63C0D210B01D0E789FC1B694B9D04FB245DF7E713032D4CF4E
     93      E8E2554E703AB3CBD6E7C959B7324B0853D39CE2E42CCC3AE4895D636B432CC8
     94      80744817449E7C80BF4CD6C04ADC8C190871D0D1D3CF464A85DA81ED27B072E9
     95      B35C86668913C23422F7E0D835DC7B650653ED78746C188C2E9F71B8725C0357
     96      7587A067F57AD88B38A8EB2A7BE0442C767D3F4F8CEE62837F361DC0AFBFF897
     97      4D429E3E7DCA89CC9A2BBF927D6D865CD9A3999EF5E5B51280F6DF89C1D59661
     98      CCD4317814D8152F2286E3DAE70638BA7E2776EE082B9B84181AB6D5CDD49049
     99      F2BB77CBE56AE4D9E00DA86EA8013D7535E88845D09508F9E3ABA85938B6FA57
     100      1C3A90583609799750C323272F22A262A1A96B90CD9193CB5732FB4651FE09C9
     101      4FAA7598208D72D95B249BB3D409A1C64F8C660A7FFEE46C683BECC2BD92C453
     102      E284F43EDE906BDCD824DF7B9B37DFBAC112D4AD5C12626767A7BF70E1C279CC
     103      445C646565037BFB53D40529DA963941AE7A66FAF4BD6009603C40B1CD812225
     104      E4C60D8E5BBE7C34D6AF9FCD8F70C9E56A9834C9E1AD0ED5D24891223A758AE3
     105      F6EE5D014BCB361838500207077D2426FAE49B90711827D9ABD89B7EECD831FE
     106      EFD8D858EA33E15B01999999F873D79F87E4907F59A484CC9933E7AF0D1B368C
     107      A31729383868B3C4AC00F50AB3F60AFAF7EF0F66B563D3A64D893B77EED463AF
     108      70F5EBD57FB176FDDA86D4F94B42EDC5F8F878FEFDB163C7F24D11D62280B5B5
     109      7576CF71A10959B26449FCE8D1A375131212101717C7072B2B2B5CBE7C19E1E1
     110      B1D8B8F167FEB9B3677DF1E0C115BC79F9686BF72F27CCE8D0B6053CA23591C8
     111      EADE734F2311EE750BDDA50D50A3C613FEF90E1D3A6054FD51935DE1BAA72459
     112      23608DAAED03070EFC66D8B0F99831A36F006BBB4C20EAE47C680666881F583C
     113      98B9C971C3861387AFC071E3A135E630BF740BB7FE2D338EBC0FA94A48891351
     114      D4D67D717A0C0A4D046B6C8F5FB76EDD5EEA9CA771162323A35C2D7BF663D963
     115      FE3447A057AF5E7ADF7DF71D0E1D3A94ABB7203C3C1C23468C68ECEDEDFDBC58
     116      89D8B8712357D4EE859A356BA0285D16FBF6EDC7962D6B9AB1E83D8A94883D7B
     117      F6704F9E3CC1D0A14379BD616B6B0B8542C10F9EDCB871038F1F3F06DDFFFCF3
     118      D9484DF5A7C1147E00859EEDDEBD3B2E5EBC8856AD5AE1C71F97A26BD74E3C3A
     119      4B971EC4E0C18D7AB0E8AF15393B1A376E7CC9C9C9A97711FA37FE621A727251
     120      FA4C18A2BD58D4A92521E6B07DFBF69DA01120FA817EFDC6310E2CA1C19AB1C8
     121      31FB82891EAB8D5FAE5DBBD6D8DFFF0D76EDDACAB2C584666ED0900A0DCDE6DB
     122      AE2956E92846074B913B6D8A9D089A3A224B8B447EA34D7985A69EA4A50B9077
     123      B4AAD889C8DB1B54500F4F5E496196F0C43EFEF9F61AB18A925E0ECB79ADB054
     124      9AE6F97B7ED6B5757922AACE4284EA0F91415D6D796CC0AAAC3FF30EB985E5FD
     125      91F253DB5D97ABE1C67259511E2DB74418B61DA31B73FF50C27B4944B5035A5C
     126      73895982F3283FBD5C37ECEC4570DD252F4A1CA54A846A9612894682F8224B48
     127      BF92C453E2448C7FD0E2AD7ED4A080846496109DF79208D5EC28D5542B121AA1
     128      2571727295B1B60935B4B9A2C657A244508B3E439CAAB1F8B955B8EADA8205C7
     129      A073BA998950AC2D4B08BE1B53EE4864899021924D3C8640F9B6CECA5BAA1251
     130      A244A866ECA92453AEECE77261056342879E9F87F8381F7DAF89502580BA8EEC
     131      AF0327EFBC82D9B1F1C3435F5E3F59FE8908F3879C25255D2442AA4EEDEC8450
     132      DF56DBE6AD1C13435C87967B223267B686585F1DA86F0458B22061A53220066E
     133      5D4E60EDC2EF7178EF865C48AD3DF50A2E7F8C1333E3B8C01AB55889C89473DC
     134      6C3B2BD81BA623312605B5EAE843475782B0374948F83B109B9628139137AB42
     135      BD7D60717FB1DAB163C7E4A54E44623AC7C5EF1A86A3AE3E18DFBA06D40DD4A1
     136      9068203E5406FF4F4F62FBF2EF7160CF0665C76C8ECED9C097C0E4A903FAF93D
     137      3E7FB1D489884EE138EFEDDF63CFC5EB98D9BF0D6AB431849A8E045E5793913A
     138      743D96CE9F8D39EBD6BCF59E518C26264DEA33C8DFEDF2D95227E24D02C7FDFB
     139      FB0E5CF0AE83E18D3DD1A865264C6BCA70E6A409F43FB3C79CF9DFA3DDC20DD9
     140      CF7F6E03F4EBF537AEFFFE35264E28A344F8C770DCD1DF2E4322CC80589089F6
     141      D62F61671584D52786A1D1E7DD31C1BE31EA0F3381EBFD258058CC6A17465A56
     142      8A6ECC6C8B09E3CA28115E91CAAE660A198AFF862154793F614C7DA4B5F643A7
     143      4E9D50CDBC1A4E3DDACD1221C48DFE06183BBACFA0A067659088BC5371F34AC7
     144      D19648ABE90FD464BFCD8AEEB375BF425B4D08B7906F317D781925426A6E572D
     145      EF354EA1108C1A3A35A2EF377511947E1BD5990EA1D100A958C882F2E815F61D
     146      E68C2CA3441424F6F63BB959ABED95D994357692770C65E1E89E2C11CEE59788
     147      F1E37FE766AE999E6B10272E3903023549F6B5E55FB04478976322485493A449
     148      F889D2749EC5208582838EB6C656AF874E9EE59A88D248E9C745760758DE1535
     149      F44D999059E2B84A950896009B1893F6CFB2FE543CF93454F45E13C112606462
     150      F3E95B4B18DE35C3AD4C136158BF9FE6D833492905DDDFDD3B433339F87E5A51
     151      E32B191236361269AC66BFC4818F1C57AE1C927D797D8BD76BD9E1BE5C8CFB29
     152      AF5C43CB3C11E3C68DEB396AD4A8653D7AF4E8387FBE37366D6A561BF678B56D
     153      DB84EC6716D4761BCACC3BC7E27E53911241F3FB3FFB2C861F7CA1BECA75EB62
     154      69565F27ADDA767EA24CB4553D575C048A9D8851A3E2F9A983D4533B7DBA1B9F
     155      0876EB76717FB05489509D87869E8599D9C042134163645248B9BBB6776F7F37
     156      F7BB364F1F3FF5F13DE2DBF774E8E980122762DE3C0B3C7D7A0B3D7BF6C4FCF9
     157      7E0526E2E1C3879C542AE5FBBF939393F99E609ACB7FFBF66DBE7777D1A245C5
     158      9FC73572E4C82DFAFA3FCC68D62C0863C674032D0458BA34385722E8ABF7615F
     159      465774959C4B3E97EEEEEECE6C8F47FC8F76E9D285667EF2133B6FDEBC996B16
     160      E83B1371E5CA15AE6BD7AEFCE81E75A87FFFBD0F56ACA88B949438EA78E73BDD
     161      69D6E8881123A6B9B9B9EDA8833AA65DC7750DFDE9A79FF8F769650775B8538F
     162      FFF5EBD7A16F698B864612F4EEDD9B06E78A96086767678E7AEBE92B2811B4C6
     163      9112A4ADAD4D431098366D1A8E1C398BE87697B17BF0BFD9BDF6D3304DB3E7C9
     164      9E29D4A3DFB5EB22961597F0F2E54D585858F0631EBFFCF20B1A356A54B444FC
     165      F9E79FFC920A1AEBA4C4A4A6A6A26DDBB6F8F9E7B50CD2DB2C4B9269581B3366
     166      EC42AFAEA6DD1DCF395E0BD6698C8E0DABA1B1A90E965D49C565B770748AD8C3
     167      4A5443D5645C1A01483B75EA9466713831947DD1491A78A184DCBE7D170B16CC
     168      A32FC1B66D37F1C5174DBDD8D74D1A81118FD7F9AFE355B45C2E879E9E1ECBCE
     169      87484AAA83BE7D75F0C30F3FC82E1EBDF8672BB4FAC119CEF9F66B16A574580C
     170      1830E0F5E79F8FC3E9D34E387E7CFF41766D0A0BB9EA8EAFF095C6D093435323
     171      2363F1FDAC59D7EBA5D6BB540DD57614F4C3C54D844A08C6D4C21EA2C41CC081
     172      22575EC54D44B94955222A54222A8A9419185F7EF9A53E53B05BFAF7EFFF1569
     173      68316B986B6A6AF281D686D3F8EEDEBD7BA91A597CE7CE1D1A3C2A744CA63CE2
     174      2C7330366DDAC4D9DBDBF3CA9D26B4D0B02D29739A0043336CD4D4D4F8EB7913
     175      4E812A7B030303BE668A8E8E66B593067C7C9C11121282B28E9355B149E7CE9D
     176      FB81AADA720363F1E2C55CAF5EBD7823232D2D8D3F9221DAA041037EE1205526
     177      54FDD2641D4A2C55429450EA0FA5590052A92E3FE07EE3C66D766E0C73F35A10
     178      0AE351D671D6AFDF8C5DBB8DAD5B57BE35505F66607CF6D967BB585360728B16
     179      2DF884938F05CA3DFA18320128D0C790954EB946FE16683A43EDDAB5A1A3A3C3
     180      E72C1DC906219932E56766C7FA80A6DD95659C4D9BD2CC8575ECD9E5ADD9A547
     181      E502461E3163AD8269CC8A9BBF64C912319917F431A74F9F86B7B73733479AC2
     182      D1F1383F2985684E1F20146AC1CAAA0D8E1EDD12E6E7E747B3A3688E18ADEB8D
     183      2BC7380B95F2A84D686CB069BD7AF5763113B9E58001C370F2E4455CBC7838DD
     184      D7D7973A9028D02AABE80F1CE77B01235B76EEDCC991D54B663B0BF9CE10AC08
     185      71961A8C80788ECBF932971599AA314BE77A4957A1AFAB035698716D736FD49B
     186      1052AC04E58D934EF4938B17679FD6563491FEAD0925650A46C3860D0B1D2677
     187      D92D463233C9154CE3BBDD7989F947EA96F4E77891410C973F0448CFE48A1567
     188      B983F1A144B3D1B006A9CF4FF8B2A41779CE4251A5D281C14BB3AFB4E17E20B9
     189      F411E5968A01863DDC7AF4B0AC8D84ABD59D27D72D7C6D92CD081D781E4BFAB8
     190      C0B0C76BABDE4616392F59C8F5FD9D47F9597E88E47C1830ECF1CFE031D6EFAC
     191      1293C232A319532C1953E23F4E30EC11387DFA27B58BF38AB77764FCFD05BA2D
     192      93029EF87F3460642D119BC64E69FD863071A0EBE065CB06E6FBEC8A1567213D
     193      6B771FCAEA9063FF12040A6C4F08777D8062CC7CABB060E4112163897CF3E6AF
     194      F2BD396BD6010283C67CCEA00493DE2A1B18025D0BBB36ACF93D1D9C40FAF65D
     195      2E9135BEB62504972F132A0A181552AAC0C821E50606A7147E49091D739EFF77
     196      E420A7252772E5F171920293FB8F9E9621D43B10590E46D5070323232383A30E
     197      DC7C81624126073F1F52463E8114CAE38557C0295681A606F8C26DEB379FCB35
     198      4467DFE516AAD280919C9CCC512F542E10B8FF00C809828C539E7B33759992CA
     199      428AF23867E92707E50AE177C59DC75DE1C0888B8BE3A8BB0EB35AFF77518B31
     200      C55013306020E9A903521634C44A249233D94BA9D8A1BB1C9DDBD982FC25FD79
     201      6A26BE9CF42D3419A8F28C4C286432C833E998C91F29BC7E93805F7EEC5B719C
     202      F7E5279191919C9151350866B7865338CBE91AA118A5554709862181C18E462C
     203      D82E01BCD640119E84370E9E3835643F3AB46F81973781D397BFC7EF1B16F3FE
     204      1C48F22B5ECB579D426AD7A1480AF4C7A31DB39B9BE92678BD6B56EF07012324
     205      248433303683632D1D248A25B85ED3028332436092C608A12B81B68E185A8C29
     206      12290384E5707ABA0229C9329C1979185D7AB645182B32C7CE29C13034D0577E
     207      3CF776F1DAFFE715C832658C2D725E09870547C0F9E1454B9F872702504C1BA5
     208      DCC078F5EA15A757BD1682FE9802A1408E0507FF85B59936BEE9D998FF5B0439
     209      F49B9941DAA21664B1C988BCF706B1A10A9CAA311B1D5BDB20D10358B5672606
     210      DBCF85B6AE5EA1BFD7A7913E42D9E75F39770C471DF70DF2776B73BE20C70AEF
     211      1D0C5F5F5F4E6A6A8987BFAF83887D3C01B0C1E13CAAE969634ABF36A8D95402
     212      75A918867535A0A92EC38BDB69F07F21C16D8BCFD0A9550308FC80AF367F0FFD
     213      2F1643A4A39F1DAF9A90C3969E1C3BE6FE3DDD042162DF00E74EFC8393E7FF66
     214      60B4AF38603C7FFE9CD336B786D36FC718100A44A5EBC3501C072D512AACEB45
     215      424B5B81865649D0D0542036460D1CA3FA43F71AB8AC31009D5BD586340498B7
     216      E31B8C5DB1163A06FAB9E27EE6118ECD1B5C580B47C8CF6FA6E3FD1D03911201
     217      381EFC1B4ECEFF542C30DCDDDD390DF3A67CB94ECBE41091988984543914DC7F
     218      55A92247B5AAC8AA76CD0D34797D601E0BF49A591FE936AFC06929F5A19AD66D
     219      A640F5942050D2B38020B9F96D03707180C39E3DB878E3D820FF6715080C5757
     220      574E62D1325F7B4291D7D6E0FE7B46F5B71553B45D4633300C1918A2ACCAA119
     221      B078E262A4A6A7425D431DA9B254A4CA539190A18EF1753643C2CCB303BF6FC7
     222      E53BA70705552430A4E676B426B94D117E23FB7E2D8BFA831B5859C037F4397C
     223      C3BCA1D04D41865924A09EB5EC8426F7D29819334FD64CFF12C35BB586BA4800
     224      0963876BF0749E5927D7FE861B8FCE572C304A22DF4CDFCBFDB0723CCF90ABCF
     225      CE22332D9DFC7033052C6047E43AE63CE714D5203669C7B3EAD4EA0DB8E371A5
     226      F2833169D20E6ECECFDFE42E32398A11E57C4858240C8D8CF9F3BC76071D4FAF
     227      5A8387DED718189D2A37185F7FBD85A37918D4AA553950A0D62D5D5309B56F52
     228      64E9D016ABBFF5BEEA39775F9701AF9E77B858A9C12896D419A781C07DC59A4F
     229      58985418307AEC0EA8EFFCB0EE8FD885F14579BE38CBE42B0D180C842ED0ED79
     230      E3852232FB5AF0F5846F1928DBDEFDE60896F66365DA3FFAC1C06020183210A2
     231      8546053E9276C5C16F0D0365E5FB4AD37B078381D08C81E06669A95FE47776ED
     232      72FD9D8132E3A30243AF565383F8BE1EB97AAD162EEC9DEFB33FFF7CF9AD6BDA
     233      67EDFA2487B85E45398DA57C886222C80A349094B971E3E87C1F9A3BF71F489D
     234      5AD2AE214E393E9E43651851A3C5AC3B76DC829FDF0EFCF5D71A7E36AF4824E2
     235      27B3D294455A0B32678EB7CA7D1D2D4EB943A36AEF8A53F74CAB0109618F2EE2
     236      3D8DAA951918B76F73DCFEFD4AC7ED3FFE38819FA86A6A6A0A7373737EF62FB9
     237      C2A2455339C02893855315128CAB57C901BD128CE5CBA7E0DA3517B8B8F83346
     238      D8C2C8A85DF673E509C6088C503785A9622BB6667E50309C9C388E3CA44447DF
     239      6566F103F4EDDB9D853E78F8D0859FD74D1E1E4B0AC6A7F8542BA541CAE038AD
     240      B849FD07F7EF4EF3C995EE2BE5D981F67C717575E5A756D3961CB4F88C587962
     241      F9894E1EF028D26F951918C78E71DC952BAEFCF2BD39733EC74F3F3D61C5C598
     242      9F0C4F4BB8BEFDD6BDA460080E1D3AA4204F94E4698EE4F8F1E3C8394045B387
     243      6BD4A8C1AF6124106892BDCA9DF3C891238B3C57B444607CFDF5D7436D6C6C36
     244      0F1F3EBC16AD39A346D5B1631A2C214A30860D6BC78A8916FEFCB32DB977E6E7
     245      806FDA948CB8B8A70808F827EDE1C36BDD593477F3C6BB60EE822B2BD6ACE849
     246      E7BFFDE68FB66DF511187899CF79F29A497B4050B874E912BF44CDD1D1915F75
     247      E0EFEFCF4FA22720484F797A7AF25BFA91AEEAD9B367D983F1CB2FBF700C00DE
     248      D71F79C3A3F9DA04828AA6274F1AB11A45A9334C4D397E5520E5240D2451A0D6
     249      27AD08D8B56B171F478F1E3D70E7CE3DDCBC79870179307B9EA63DECD5EEE2AE
     250      B116B43A855984CDAF6652AD25CD11B7B56D0D4BCB0E7C5ADCDC9C317AF450DC
     251      BF7F9FF7F7B069D3267EA58193742EBED0718291249DF75F4A3559B796DDF6C4
     252      237E72998241D3945BB76E9DBDFC818EAA736B6B6B7E3904AD15218068F1E8FE
     253      FDFBF9EBB4E0F4CC1927762D8651B90E4BA016634B2CCBE9160C3C17686848B0
     254      61C3027E09C4722C17DCC00DB1B8AED8A6C3980EEB6BD5AFD35364DA1C63FBD8
     255      E2F033C03B34157EE149C87C7E0E92206706F6E7A85DBB375253B7D3C2551E70
     256      5A86416CA18D1F4906D41990BD7B5759161311A3E892EEDDBB2F9A3B77AE9836
     257      A7222054C0A89640D0C655B4042235550E1D1D03383B5F62B5CA7F4B3DCE9E7D
     258      C95F8F8E8EC0BA7513931E3CB87BD50846B3AEB95D0B54B1283A31196A9A7A48
     259      9601FE093A18D8103C18CF8362502DFC1A84C9699048E86375E1E1F10F56AFFE
     260      82F74A4999C08A87ECC2D90B6E6951698F9AA0C9D15EE87583815C2443AD340A
     261      949FE9DFA04183AD23468C683771E2447E0904150563E31A4C815930C5495BB5
     262      E8333DE185BD7B57A4797979DD90C96464673BB04093BEB313F90DBED1BFA77E
     263      EF9B375A6FFAE9EAEBD658B06881E5902143F825A82F5FFA31BDC3F11FEFE3E3
     264      C5E28EA4F528B290D721D91FAD010DD7A22CD42C2F30F213AA3F87346AD4E897
     265      C0C0400FC6962BECEF032CD052F82279C7CB299FE013D334F5B4710CA001FAB1
     266      FA8E8DD068EF199C892DE334971B18955AAAC0C8215560E4902A30B2A40A882C
     267      293720860E1DBAA54B972E332E5FBEFCC7F9F3E7A9ABAE54AB90CB2BCE320762
     268      CC98317C1B8599DE7C1B85D696AA965692794C56E1D1A3471FB8BBBB7FF7E0C1
     269      8322ED4F511E7196391093264DD267A6EE962FBEF8E2AB3E7DFAE0E0C183B4DB
     270      2DB50AA9E1F656A2C9F822A1E63B2DBE5DBB762D7DC4A2A74F9FAE4796CD511E
     271      71962B1034E9845A8AD4E8F9F7DF7F797FE93366CCA0BD0CF9A6B26A7DFABB12
     272      4DADD6706A5364C6F12B92C78D1B87B28E9359B7C79C9C9CBE4611BC7B940808
     273      DACE98DA1CB41E9D12418D304A08B501A83D429D27D457F1AE447B7905B1069C
     274      36BBF798B54B2EA14F9FEE28CB38CF9FBFCA1A6C4DB06AD5AC73313131030BFB
     275      A61201C194153FC357B50E9D7A8FA8D54A6BD1A965481F41FB8D504B95068855
     276      0BF5FF9B082B8093D379763F91E5B602AD5A7D023BBBBA28CB387BF51ACCEEE9
     277      E1BBEF86DD624CE95C2E4030EA72D457403945FD05AA162905EA5BA08E156A25
     278      060404F01FA2DACBC0C1E1384B64326B56D76239763E3BBE050B76C3C4240965
     279      1D27B57E478F6E597E404C9B368D9B3E7D3A5F9E2931DBB76FE73B62A8A32667
     280      5F0675F4FCFDF7DF34AB8FEFCB50519B8EAADD6A487EFDF50A53728B51D6710A
     281      042274EEAC7782FDF959B900C184265C0E66D5DA96B973E7EAD5AB578FCF41DA
     282      4082B641275F589470BA76F7AE2B9E3D7BCC0F01E44C34E57E9D3A8D597130C0
     283      89133BC86301ED1712CCE21C578671DE80D20BC2E9C23EA8B47604F95B6A636B
     284      6BBB63FCF8F18D060C18C0E79A8787075FF591BF2EB95C9751F6103F304494A6
     285      72DEA9D34856BC4E323BE0CE7D56D6A937E72F166896AEAC9CE22C54CACAA0A2
     286      A964F54C4D4D57313A8F24AF04E4A68B3EC0D5350C3B762C46A346AD99E6AF07
     287      47C73D513E3E3EE4A782FC54D3E857DC7B8CB3DC81C829C6ACEE1F6F6565B5EC
     288      D75F7FD57AFD5A84DDBB97E2C50BAF675151513400FC370BB4E3797176502C8F
     289      38CB1D0895E8EC3E7C3A71DFEFEB79C5161E1EDE985D7B5E01E32C77201018CF
     290      71B7CE1CE4BD2315D5F5C28788B35C81703FDC80D3D46F88CCD47070F20CD88C
     291      706FC12E3FAD6871960A081AFFE8FDB9FD5B117039FE4EBE6A87C6FD77339D9D
     292      81C4F830444B87BC33CECB4776A1ACE324A9AB27D88CB777BC293B20684CE35D
     293      D242B214D69D270099E948888BC639B7F6EF7C9EAAC077C5999E29436BCD9F60
     294      D3B5E871928C1E3DBA48C3822502A2286E619C7E8E8544DB189C80838E3A878E
     295      F6A59B23C2B1A4EE5F920C5363DD62C5C9F448F9019125A645B83F3FC7DFA4D4
     296      D615F24EAE0D9DF28AA486DDA08C374F7B28273617394ED573E506C48711AB09
     297      52BC28DAD6AFC5914A078466FD7EDAA9BE173E52BF38254BF7C73183B7A4A263
     298      3DB47A9277F3A8E2CEE8AFF040F4D81DD006BA3D6F3A3BFBEDC62ECC2CEC79CD
     299      8643CC537D1C6990F9E3610403A1260321C82D43E9473EEA56CA7406C6F60F91
     300      960F39B9BD2F03E142B028578B997B7139BA1B03E3E6FF05100C04330642489A
     301      6EBED327335D4E0511182EC58DB75201C140D0A5650E3AA662B5773C263B7DC8
     302      9B3648EFF55102C140A8C14008AC555757AD28CFFFB5E7C97A06C6FCA23C5B69
     303      809036196ADA66897BA8B5B571B1DEDBB6EDDE2106C697C57AA90203C1FBC51A
     304      34C82EFB42CE2D31F38A6A8B4C955C9FCAAD104B046B63FD5DCB7481DC870042
     305      A06B62D78613621AFB455D0838F5390FCC0BDC15F5D736A1AC3EE59EB266266D
     306      784CF6C203719ADAF69898FB65BA38EE4300C16FCDA31BAFABC329328410880C
     307      7FF4A8FDA2A0475737F53F0F88668393F3AB851808190C04F28A546EEB3D3E48
     308      F5499BACADF46D1C59D0FD25F5BD68BBA0C98921AE51C588B67202D175270A04
     309      E2C6149C6207FB8F1E883CDE16F3A6E1BDE8840A014445942A20B2A40A882CA9
     310      02224BAA80C892720162C7DD0CEE9B4FC4F9B891CCED6252AEE020932B8FBFEC
     311      B88BA000EF374F9E3AF77AF9B8F58BB2EE8AFB20406CFD3799FBB693D63B9FE1
     312      5DAEE4F07BB77CF569887A0C46D09FBFBCB8F3E8CAA0E0E71DFCDE2718E502C4
     313      6FCE71DCCCEE05BB73CB0B02F99D59F1D3714475F90CE1AC75A1FBCFAA170F3C
     314      FE7DAF60940B109B2E4470B3FAE6DFDCCE0F0472D4F3D3927FF0BBD568202A8A
     315      5C2FE2D35747BC1FB9DDE913E27FF535DE8373E2720162C39937DCDC41E6F982
     316      90EDA5280708AAF3677781D414A583519F8053D8BA737DFFD8E07B97F01E16D7
     317      970B10EB4F0472F38665396E0F533A62E7DDBD09045941880C69AD5C20E40426
     318      84BDE27CFE38B6EC5AFBDE7C77970B106B0EFB700B3F6F006C9E00047A208D15
     319      050DEA9C2387A2069A809E06A0CF8EDA62A56FBBB44C20912987D854780D3987
     320      8857C0A5330E50E8ABA389AD1D6B8DCB955E5565322878EFAAB26C4FABAF83E3
     321      F76D583AA0480E7FDE3B10ABF67B723F7ED518583B923122000B0238AC6D2002
     322      8CB494415F43E9729640D1A80EC4BDE141404C2A3CFA9E46543070F1E46174EA
     323      6486FEBD3BF3D391559257C7B8B1F3BDF376DEF1B8EFDCDFD5F5588937472817
     324      2056FCF9945B3AA139B89F4742101E8029EE02EC6C29508240AE66F5B3DCCD1A
     325      48D9B55640F02DA43C0E41D4E350C4AC73475C0870D6E120BA76B5C805447E8A
     326      F67A0470F239FB1087CD779EBBDF293118E502C4B21D0FB825535AE344131BC4
     327      7979E14EE716F8AA5934CC03C408F38D859E8106F459D0D195408395998C7439
     328      1213D2111F970ED9B160248503A7FFD98F1E3D6A650351506D738A81C05E4178
     329      1A607366DD9D972F5C4B0446B900B1648B0BB7785A7B5CE9DE1A892F9FE34CBD
     330      7A68D930153677A2785FBB3A5231B4987ED032D283282395FF405A5A9D9C2C43
     331      FABE40A44702270EEC43EFDE75D08F0101A65CF30381CEF7EFB9ACD4194C8F44
     332      872B70FAFA1F5F89CC1B1CF3BDB035FD8303B170E30D6EC98C2E883E3A8795FD
     333      57587BD68FA9800CAC1D5E8BE9470E228102428908EAF5CDA1608A32D92F0A19
     334      9C04990A095E0F3906590CCBE53FFF449FFE96E8DBAB33AB32846FD52CF9D536
     335      2E8E8C8D1B7B1DD0D33798E579F758B17C7A970B10F3D75EE17E9CD513C14756
     336      4011F71A318929587FFA113A3630C4C87675D96729A0AE2F81D4AA3AB4AD4D11
     337      FB2818E11EF10C0C75C40EDD09411C7078D72E282C6BC0DAAE5D2E65999F1826
     338      A7C0CECE1C0FCE038BD7F570904AF5A6793F3855AC1DE9CA0588EF579EE716CD
     339      ED079F239B58EE86F23E76B7395D457D23630CEED030DBFBB2E92726306A5A0D
     340      0197DE202250A164C5B09FA196041CDAFE07AAB5AD0BDB8E1D0B052235281EB6
     341      8D4CE1761958F073050262F612476EE182C1703BF42732622389D8D87BE11AE2
     342      9252B070544F563464A8DD5203C6563AD0D2057B2695E5268798380D687C368F
     343      9F4F7F74C336389BDB40A36967A622FE03E2D3FA0A0CAC9FFBF722BDA251D7C2
     344      18CFAF013FACAA40407CB7E01837FFC7CF70F7E071A4C546E3558C0E7C220D98
     345      7EC840F77AFED0D74D87449D43DB01E0D9E2F35888A76E06C8648C301E315109
     346      C42F5B11D2A229CC5AE7064225766640BB1AC08429E7505B5303CB16F480DF2D
     347      60EE8A0A04C4B7730E71F3978D86F3812B488989650A4D88880C63D4D00881A6
     348      3015B6361110308BB259F378DEF68E8D11C1C7571F4FFD6AC27C18B33D580D71
     349      74FD26F8D7F4C3B8A95B9832CC80584D233BFE495F9F600832038D99EBE44F76
     350      4013632CFEB61D82EF01B396766740E8570C20A6CDFC9B9BB7622C5C6FFAE0E5
     351      9357BC4E20054945826A0C03AD4458D70A85916E2AAAE925415723197F5CE985
     352      88244334FDA20B848C110E6B37C2217115BA4CED827B17AE2339FC94D2CD34FF
     353      F1C22C20C09FF7AFA38545E39A21DC1598F963050262CAD43DDCBC5513B3FDE0
     354      C6A4C8109190995DD5C973F8C7CD3E67C1584F9D8126849031C2E1E7F538F1F2
     355      67D8CDB0C27D97FB30ABDB1DA16F7ECBFA7811CF041528FD9995FEC388068877
     356      6399309F01A1574180983CF90F6EEECF53DE72109CD319703628799C07D3B988
     357      8058BD168E2FD641661BC73B66516FA48E914347228315931466409D7BF23B2B
     358      55CA465B3F9D14CCED5F03695E2C13E61210420684F3870762C2846DDCDCB5D3
     359      0AF492FC2E102888597058B51A675E6E804C334E994A0360E2B71371D7E32E86
     360      F718CE3B212750923393218DEC8D7E2D4642E1C3F4C7EC0A04C4F8F1BFF3CB21
     361      4B232B57FE84736F981D228DA3D915BC18D81A30E32B16C3C775C3E41EFD5057
     362      571D1256445E7A594266D81FA2409609332A1010BA16766D0BDC1F2C8F088502
     363      9142C151C70BD7A583DD10350D292E3E61B6B29A0C99E651904B9395CBDC48A8
     364      E288628C3110C16DD346A8AB0979205E785A2245AF1FB458E36BECF4EE0EBA15
     365      05885C73218A21974E6C8FD4346D08A7D71BA02E16425B4B0DDAAC75AACE14A2
     366      84773FAF0C04803A9D8B9440BCF2AE8F4CC301300803C64C6140081910DE1501
     367      88128A878707A769DE0449F2285C77BDF99FDB79F61F21AAFC5B90E5925E5971
     368      A8D1B9D10028586D63C23EFDF3491F01106E6E6E9C7A8D66B96A9B9CCA35839D
     369      C85992159C205F455B2B011831BE2B0342AD7203F1F8F1634EDDA2C55BB58D22
     370      EB3C352313990C19353549BEB54D835460D8D8AE0E0206C49BCA0CC4A3478F38
     371      B1855DBEB99D21E777A7C3AB57C130AD61C13323D7D0007BD6260318FCE54700
     372      C4575F6DE6541B13A83629A02301A092E8A438E8B326AB284F434CB589C1E397
     373      FF1E12AA4966067B5EFAF01D332515CB16FDFF508D60703987321439073614A4
     374      235865C165E41CFF52D0F2374E20D750973CD211088EBABA3AA5545A208A2A52
     375      AB116A892F8EC9518643819514886192C417CD646539405C7180F846EF480FBB
     376      A7739C27D70D291488869F354AF46952A673282A0610F6B8A7F589B86D3BED5A
     377      B49DB70903E39D3EA474EA0F9724F99EA0C51E1F51D1B047804537DD3AAA3FAD
     378      84C6A1CEA3FCCC4B11632504C21EFE2D069AD5CD7BD93055EB2E03A3F085DF1F
     379      0510F638DE6BA4E5F0826E2BA2E1CA8A491F564C8A6518552E20EC7168F4B8A6
     380      A30B7B2CFC35330512AE6A31300A75B156F980B087B7BDBD9D55511FF7F38B8B
     381      6060746460BCFC7880B047DCAC599D0ADF34348F787884A43D98A3DF26F18DAB
     382      C7C7008430EF8624056D5B439277EB1AE959BB3D42B58C1FE2833CCAC53DF4FB
     383      0442A055DBCE544D2EB0E5149CBA402090CE7B6CB1BFA087D7B77C7D5F00C136
     384      D6984A04B522845C58825EDA13787A96D8C552450142F57BFC6FEA9834ABB6C2
     385      B74978410F2EB77A719A9367DA2785BBAB16AF548EBD7B54D2B265CB6EB367CF
     386      6ED9A4499316161616CD84426153F2253767CE26D64CEE0D27A741AB43434397
     387      49CDED0CD6BE6A5EE02A9E05B5DDDEEB72A6320162F1E26D2B4343CD178B4435
     388      F1C51752D4ABA7916B1323DA8763F2E4A568D8702E8E1DEB456E157BEA5AB4D3
     389      49E87FB7401B417ACE6EBF4020995DA936715FB060CB9A57AFAA2D944A1BE2AB
     390      AFF4F9DD578C8D8D79378BC406DA4266C2841F7301011B1BE8C66BB4E0140253
     391      C6F83CE9287F9D502E40FCF0C39635AF5F2B811837AE1AE2E39F83BC16D7AE5D
     392      9B77C7FAE6CD1BCC9FBF393710A5F02B576181F8FEFB2D6BDEBC510231614275
     393      C86441D9DB5951F1A062D2BDFB988F1F883973B6AC090D55023170A0115EBF76
     394      86BBBB1B828234F9EDACE8BA4ACA0B881998210E4398D006361945DD70A4CC81
     395      98356BCB9AF0702510798536298A8870E6CFCB8211EC23D53CE129F287BF5C6A
     396      251D92A696D6A37987E603AD1B595BD08E4DA4989FDC7B722EFE79FC91A67E4D
     397      8F6DC2A6224D332C132066CEDCB226325209046D56646B5B0BA3470FE727813D
     398      7FFE1C6969363874E8971203D1C7B24FB378CDF8296DBBB5ED66DDD8BA51DFBE
     399      7D791FDA39F7F422AFE9D4EB4D1E939F3E7D8AC0C040787B7927367BD0CC7017
     400      7615EAE5B44C80F8F6DB2D6BA2A395404C9C6882274FC2989E88839E5E18BF9F
     401      979F9F3E366E9C5B22203A36EA38E95FCF7F77D339B987DEB871237F7DEEDCB9
     402      7C2047C10438B98926E57CF3E64D5E2F91EF3B722C7EFAF4E922B97A2C1320A6
     403      4DDBB226365609C4ECD9F53169D26974EAA485B1636DD0A851239C381188DF7F
     404      5F542220C68F1B1F3F61E2045DDAD84C250E0E0ED91B979130030DC3870FE795
     405      F2A953A77857D124870F1FA6BFDF0F10A3478F1E52AD5AD32D9191B56B1210FD
     406      FAC9B173E71B0C19521353A6B4E2AB4F27A710ECD9F353A140304547E55FA63A
     407      6F8CC6225F5BDFDB7FEFFFBB15D92494DBBD7AF522FFF8FC4793F35FF2994D3B
     408      BBAD5FBF1EB76EDDC2AA55AB788FC85465EFDBB78F65C289F20162C28409BCA3
     409      7F06C057E4B79ACAE5C58B4F58E202F8DAC1D63618376EE860CC186B74ED2A45
     410      747434AE5E8DC581032BA1A969C112FBE7F9D4D4D4A17981E8877E62C77447FE
     411      9A9B5B3CEEDF8FC5A041EAD8B2654B6AFFFEFD35A9585CBB768D55C3DD798FC8
     412      54E45C5C5CD0B8716366CD7EC1BB9A27F7F2C49C4F3FFD9437E276EEDC49BEB2
     413      CB16886DDBB6C58D1C39524FE5D73EE7B0DCE5CBEE387EFC150FC4C8915AE8D1
     414      A311CF04A2E9A3478FD0A2450B3EA194836469D2076CDAB4C9813DF39DBFBF7F
     415      7622EBEBD7DFAE5D4B7BDCD8AFC76AD2866494B32AA1DDDB68D343F2864CFEAF
     416      09102F2F2FFE83AF5EBDCA170FB97E4DF8DCBDCC17C7A953A71288C49EB20582
     417      7D14471B0C92536EFA989C605CB9F20C8E8EC1FC735A5AB79821558D77F14EA0
     418      D18667B42302F9B9276AD35E7D34AD88DE7376BE8DBFFEFA63576464E414D5EF
     419      0CC000692422EB476B474F115B88076BEB689BB66BD70E4D9BF6E7EF87860642
     420      228963BA68369E3D7BC68A9D13EEDDBB87C41A7D7137BD253ABD5EC25BB5F3E6
     421      CDC3EA55ABE3AE9DBC66158BD888C2BEAF48408C1D3BB6C7C48913AFAAB6B4A3
     422      8FA0FDFAC87A5481419B8DD191763AA09D0DC87137FD4D5B445CB87081D52CDF
     423      22393999D1FB364C4CEAE2C0F90D5044EA203C3CA840DFF6433154FF95ED2B97
     424      619F0D6BFCFAF56B9E016DDA9085DA95D50A51AC7678C8D71854548819B4ED04
     425      6D89D9B973677EAFC1E5CB96C7F83BF8377888878536DC8ACA08357777F7CCBC
     426      DBD8D139696F2A9794E3748D3E9E729E1CFACF9C3993FFF873E72E314D6E0A33
     427      B39A8C05973160C018A62BAE60D8B0C9AC6DD23E1B88711827094738576D70B5
     428      E59FF4FE649186715DB46AD5061ABA46B8ECABE0F7F87BFDD213DA4197C0C5C6
     429      B2DF5DC6326033AE5FBFC4FBD4272125F9DD77DFF17FCFF876464CD8D9B03205
     430      82AAA2EC0D0F73869C9B1F52EE10283E3E3EFC1677128936B321FC1910A7F838
     431      BA76ED4A9341F0C71F8EAC756ACD8A912E7AF634BED8C9B8D3B2D1CB466F69D2
     432      D2AEEDFD10211A5B99A27D6D7D9CF64E431B0B2DA4CB910D845F583282C263D1
     433      21E904CCA42D18BB42F9CC209D44C550D9AEE9CEEB8DA9E3A65E6C236B33AA28
     434      DBDD15A7D668D1AA55ABBF5811694EB4CB09840A8CCB972FF3BAC1C5E53EBFB7
     435      1FED75B163C786EC08EEDFF76126B7067FEFC8915F9946DFE1151E1E7E76DA98
     436      6906537E9832998A1A15ADB06419AC2C4CDE0222EEB517AA45DD66AC6BC23ED8
     437      8A150311DAB70F44FDFAF579C38A8AE096DFB68405F905B958C1EA9608A2134F
     438      F134B8281F57DCEA9326FA59B03A7D7D9F3E7D462E5CB8902F932A308805E4E4
     439      FFDE3D4F2C5B3687AFF36917C8458B16B3323B99DFC474F3E6EFD298D9EDCCAA
     440      60D5868761ED1BB75F77F0ECC11FB27F845986A47BC832146AB3667D5428A2C2
     441      DE3045A9C9AE1BF00004051DC1EAD5CB19A047F0D38A9FB23F3E094927876048
     442      4451DB18250522A71831E53491558DCB56AF5EADB56EDD3AFEC349513D7CF89A
     443      DFED445BDB80DFEC8372FFCA95133E212121B4332CED72F00079F6C56985566D
     444      C30DC397C8257293A6CD9B363F78F0A0F845A0172C8C6BB39A86FCF7E9F2C1D7
     445      F732CBFD60B8DC7629F5C79715102A21B7009DADADADB775EBD6AD1ED9FF4F9E
     446      C4E3C58B27CC14DE92F6F2E5CB3B4CB952EE1F449EED2EF30A6D8A1A8D683556
     447      7DEAEA4ED4F5FA76B17D752BF3A6CC423CCEF4CAA630AF271ECE4DD1F4A118E2
     448      58D6E4BE5EDA8F2F6B2054426B7D1B9A9B9B6F65CACB322020E016945B5EDE61
     449      21A9B89151FFC25DDC6D196316B39E194BC1F551FFD7E118FE948155ECED33DF
     450      371039855A3DB4F6B2D48956B1A4A47B877F68202A9D54019125554064491510
     451      595205449654019125554054C95B52458A2A794B2A3C293EFFFCF33A1CC70DD3
     452      D1D1E9DAAC59B341D4154C5DB42626267C570CCDC2A0EEDB274F9EE0C1830789
     453      CF9E3DBB101D1D7D232626E694BBBB3BCDCB2977975E95299D45910A418A71E3
     454      C6D9CAE5F2EE666666432C2D2D3BD12E86D46D4E42BD34B44C878055050238E7
     455      397598520F110D80AA7A8BE89CEED33DCA085F5FDFD09B376F9E0D0B0BBBEEEA
     456      EA4ABB2016BB1D5F59D2595A796FA4B0B7B7EFAA5028863130BBD4A953A79995
     457      95153F084403B7D4034E3B443310F8BF49D873FCB05ECB962DF991AD92824DE3
     458      2BD4E54F477A56D5234F99F8F26508CB88DBD49DF8E2F6EDDB376532D9E956AD
     459      5A65B0E73EADE8E9649A8676B8ACDCD32ED7AD5BC71178A44E691C5705127D3C
     460      9DEBE9E9F1A303D44B4F40508F3D81A572925A1E6047448859DC5288443E7076
     461      76E6DFA37EE4CA904E1A0A0E0808C4A9538EAC3ABA3731363696FAC58BDD31F8
     462      4149F1DB6FBF714D9B36E541A0713255A0910D1A35A58900346C4C7FAB3CE5AA
     463      826AFB749A1E42994699A27A96868E296368A081E2A640E714373D47259ADE89
     464      8D4D62D7687C4202A95487819EC04ADE33787BBF44787804ACAD5BB0CCA0C907
     465      0254F4741A1898B0B4AA432251C7D3A77770F4E86E1A3F5CC25E2A93DD8CDE1B
     466      29962E5DCA1110545AC8002370090415E8745D9511744EC3F0B48FB66A488C4A
     467      0DDDCBE95A396FA6E4BD47471A31F6F27A0E4F4F2F848484424747CAE24FE733
     468      223A3A9605E5D4E8214326A3468D7A080CBC8D8A9ECEDAB5AD9876D164A4D080
     469      8BCB39FCF5D70622C57276FB5AA522C5B66DDB38DA2D9EE6452D5AB4881F3DA7
     470      41643737371E1032DAA8FE26559AB794AA3282328726B75A5B5BF3A58EA60F50
     471      A04CA10CA1997D34972228288865960E2B4D4230A39057CB142F4D61A070E8D0
     472      A1B7D2F7F5D73FA27E7D5BA6922FA032A453225192E2F2E5434C0B2F74669A66
     473      15BB7DA35291828994C90456FAC63103AE61FBF6EDB53A76ECC8AB6415A074A4
     474      190504184D81A0E90F54BF93EACDAF94D2D1D3D3137171F1AC5EBD8F6AD5AAF1
     475      93EDA8DECF09AEAA6ECF0B36A9DF3A759AB08CD345B76E4359020D71F1E27E56
     476      6F1F4F974AB5396644AA75EAD449AD22A6F3DAB5A32CAE4B49AF5EF907858787
     477      D3802391A24893022A122972FE26CD21A341C316B56BD71EC1546F075602EBD0
     478      84834F3EF98457A92A154E80B2763C3FBD8CB654A7924A5355689B65BAF7F4A9
     479      0733BC043877CEA150B0294E06207BAE0141CD322982B5281C939806088A8989
     480      0960F76908FB190B0F590804EF5C109A153C9D01500EBE96D982D10AD14FC17F
     481      39A0C3426D56477765E07FCAD46F1B06BE56870E1D78754DC04E9A34899FA431
     482      70E040667879E3EEDDBBF0F30B42DFBE5FE0EFBF7F792B520D0D6D66A5F760AD
     483      083366AC79B066DDCD3402362222C29FC5471D466E2C3C66C18705DA8792764C
     484      E33E8274964A2A0A29F24B17F92A236D62C54ADB0066F00DA95EBD7ACDFEFDFB
     485      8BFBF5EBC7D7BF54A2EEDD7BCAD46A6DA66A37A0458B6E0C602D96110F59A9BD
     486      93C68CAF50066E0033FE5425EB3E0BB4EA98D697A69601B095259DC5FEA8CA22
     487      D44E231779B47F7B1B56D7FF2D93731033238D8C416ACF5337725C5C5C20BB7F
     488      184AA3CB0BCA9245C096CB849C4A9CCE02A532912297ECDCB993EB32F82B6444
     489      F8F233C1A91EA78E1D763CCA6ECF4211A6AC57A5337FA9D4A4E8F3B93D24C9A1
     490      D95DCF34AD9F351F8FB0DBB35141C0AE2CE9CC29EF9514045059C4D3A5E65998
     491      B4DE087DDE3AFF4F52623D717F7F37BCD45CF53E3FEB83A773CA9429455ACC53
     492      5479EFA4A0D54BA595B83BBD60D66206F48DF459A33143F9153A5224BEF6C3C3
     493      331BD1E873D752C54F25B934E9546D649774BF0FCC5BCE2CB77492D06A91B2D6
     494      3AEF9D14D43B585A99F48903AAD76B0D750D09B3E8D578DB3C339343465A126E
     495      9DBD8C1BF1D34A153F2DEE2A4D3AE58C14C9E90A4CEBE8889A0DEDA0A1593EE9
     496      24298FAAE87DDB146491CFCF3A96588EFE20F83C23F3BF0F10907B65A1F23C23
     497      83C3D8DFB81BA504889A998DB2CE9F43D92F500C114020D6D0D838493244579C
     498      0C8950C6BB7D2E8774AA84E258574671555E43138513EB831A7092FE1B8512BF
     499      6B3DD35263926411016F901656D06499FF6F43F3FF55A4D643F513BD9B27BCEF
     500      4D714B2A55A4780FC2FB7D4ED75643E03ED21615662E664152458AF720E4035B
     501      BD9ABE7A944BADE4CAA02DAA4891253D7607D47776B55D05457C6A8FD6013F16
     502      C5CF775185FC818B0DD4DFC4DC6F9054458A4A208C0C96CE0FEB1EEAD1C3B2ED
     503      DDE420FE1AF93C7776F65BCDC8B1A530BFE74511DE37BA316B77DC3D56557D54
     504      646164E8C2C8B08F91A1CE0B45FEDE4A791FF08C1CD8856DA5FFC5110CEB6315
     505      9E1024FF77A46064B06164706264A81BA359A4CD4D1486A95AF71939E63072DC
     506      FBD0E97F1FF27F430A46064346865D8C0CC38546258A224D110D4F468ED3AC5A
     507      D9FEBEF609F810F2D1938291C18891610B23C330939A5A1AA58F51B9670223C7
     508      76468EEFDFC7BE09EF5B3E5A523032346364706064B0B2B4D42F97DFA03D2418
     509      391CB20CD272DD47E27DCA47470AC3FAFD3463BA5F08EDDDBBA15EE3C626EFE5
     510      37694F0D468E7BD27376331502B597C9C1F78B395652B1E463238550AF5653BD
     511      F8BE1EEFF486F8AE7D430A92BCFB89E427B4C788823531D4D4321EC60779D00C
     512      EB0ADF27919F7C6CA410C0C646AC95A461A426472DF6A721A7A019D81CADF113
     513      0884429D84018FF6AF5C39A4D8112F59E2489B48DC0787EB0281C08B53289220
     514      10643531695F055AECCBC5C844084AD1496326A96799EED9F67E41FC384590E7
     515      4822D43169669834D83D7CE3C642F7DF7A4BE6CEFD8734C16946AEBF3985CC25
     516      29DC9DB4515E4DC0E539564AF95849919F08A5E6768689035D23B76D9B50EC97
     517      A74FDF4BA4A07D77FE66E17662886B7EA4F828E4FF8A14BA16EDF4DFB5C75061
     518      C2EF4124171C859AF85E42F05D9A925F458A2AF9FF902A5254C95B52458A2A79
     519      4BAA4851256F491529AAE42DA954A4D8F950C1996A2BC0D1EE43723A2AB762A2
     520      BF39B99C05C57F7FABEED1764D59CF720A7225A47C4EF9B722C73D3A571E8343
     521      93E8BD7D1B960E18FFA1BFF94348A522C5B6DBA9DCD4F6EABC8BA0D208F52C31
     522      7E3082288FD97F67859F7E76C2E01F06E192D32BF85E3AF9F2CEBD8B4B39485C
     523      33C51921E1EEED532BC394BAD248A522C5961B89DCD40E4A97822591C2C8C0A9
     524      48B1FA143A4D1E8ACB2F8124F26513EC8FF4EB0E2FEE3CBABA4C28123ECE140B
     525      3E6A72542A526CBE1CCD4DEDA2DC93AD38525432F081DD5BB5FC286C468DC2A5
     526      302081912221134895033AC13E30B97BF8C583A7379609A1EEAAD0978484B8DA
     527      A57D6CE4A854A4F8F56C28F74D773DDE3B4C5184CBCAE4A29241757E70EF15F6
     528      0E976563704A1B855C1BB2101BC1213D2312C72FEC5B23E4C44E72F54CCFA817
     529      2EE4D4B4528F77E4944A458A5F1C5F73537B1AE4DA8B333F519181CB43007921
     530      64C8753D9FE742FC80000F2030E40436EF5C7B92D1603F7BCAE5631B07A954A4
     531      58EBE0C74DED538DDF4C914471751F84177701B27C76D25217019A6240434D79
     532      A455DF742E1129CFE9281202420138912632D54D94ACC994430E2D648AABE191
     533      CC0606369DA0C99E2562840702AFBC009F8063F87DF7BA8F7670AC529162F521
     534      6F6E5A7F13DEB5312F6B47026101D9F72FA4A6A19FA6069FD13C11B4C4CA231F
     535      D4946450114545122206EF2380E56906331CD2991191C6426A261FB61BAD4497
     536      76B63C29A25E036F9E03CF5E1C45E09BFBF87C787FB46DD50CFA7AD2EC1691CA
     537      9B6ECE73A5C6519E93DF8A9C7F6FF8E31EBA7FD90647379C787CF7B1D3547591
     538      EE4B23B590C41B376E14BAFD7A7949A522C54FFB3CB86903CD7847EA241C2385
     539      208B14A1CCDC5BE9AB8679AD235137D3283721B4B288A021CE4D16BD9A80CD72
     540      96F92180E772251988142999D9A4F85D6F053A31525046C6BD6155C80BE0C9B3
     541      7F101CF61863460E44BB36B630D0D7E5DD25E795A218B82BD69C469F998371D5
     542      93FDECAB0024DE3E77E781EB95A93A02F557526964F2872047A522C5F25DAEDC
     543      B4213551CDD898073569E16028DEF8F1F77E095347B84C80BA351230CB541B3A
     544      EA5AD9991FFC221AF1C1091089045067E450675A43D7A63A44EC5C2416F2BE23
     545      E4AFE3911E9D82B4D834A43372A4A5CA90CA8E17C71F438FBE9FF01998C45A23
     546      E1AC99FAC0F50042A2DC0A2445715A3B2B571E47ABB19FE1E22B650B875A3BE2
     547      D7BED0BF7FEACE63AFDB1F841C958A144BB7DDE3A60EAB0D2363531EE8534D6D
     548      10FFDC8BBF176C6E8C807AE6FC79F7163190EC0DE309A0A94924104183C84041
     549      5D7514418D1182FC620B854A8FFC72665364B22A248385F434DA864186CB934F
     550      F2A4A00C4C8B645508E3E0EDBB7F233CD6E32D5214B7E94BC7554BFF4148F7D1
     551      38C9B4105252942139993F9AA584A363FCDD3BAEBEB7BF11AA19BCF2EDD72009
     552      CBCBBFF95BA948F1E3E65BDCB411F56058DD5C59728F4D07625FB18F50F0D325
     553      A71D7CCD3F57A39A02ADEA0931C8CA0442BAC7B287EE0B9909C99F6B6B40AD46
     554      75C0C080E59402F2A010C8C262999D494FA8B1A31A7B8B9D7322FC6DBA1A1DDA
     555      34E73358160D44B3DAEAFACDBD884AF0E249F10991428F19BE448AAC164E61AD
     556      98BCD77D1E327346A6B497337306762DE0F529EC3BB2FD17B158DD51A0AEFFCC
     557      F7FEC1449A135A9E38572A522CF8E51A376D547D1898D4E4018D705804456CB0
     558      92142CDBCEB8BEC64DEF08FED93696EAB0AD6988E6350DB2EE93FDA9C87E566C
     559      A005F5BAA62C5407979A8124CF60C8654C5BA473488E48E309A18008C7CDE7A3
     560      639B267CE691FBD3F840E0D2D53D781CE48E569D7BA3AE551368EA304333A74D
     561      C1E5EEB4E0F29CE477AFA13687BA9686D984215329E019E01F741CFB8EFE7154
     562      5D5DE3804422B9E7FDA0796C797796552A52CC5B7D919B3EC61AFA26B5F912F7
     563      EAF05A64C686666536C78735C7AF23392D03350DA5A8C63442BF56F5602455CF
     564      A12D980E900860D0D81842567D901F2A4D0B3D08991D1AEB1983D8C054A4C42B
     565      B235C6450B7B746ED388D7006A494C3B05014EE776C223FC395AF7EC837A8D9B
     566      424B9ABFA1595CE1C213D0AEA5520B46B2DF79C58C4F6F3F071C38BED3415DA2
     567      7640A2AE7DB78A147964EEB233DCB4B136D033ADC793C2FBF076A4C744646736
     568      895020C7CBE060686B48988D294275A6DAE9BE80AF3A00096BB14A34C1372195
     569      D739A8EB8A6164ADC3CE85087E9686C4380112E3457C7572BBD617E8DCBA215F
     570      7A35A8CA0F064E386EC7517F7FA0C540546FD41CF54C7430D012A8AFA72CF711
     571      A9C0BF6F84A8A9C3A1AD69D1357D825F2C6CEA9BF0BF15432D1D6FC0DDEB300E
     572      9DDA53458A8264D68F27B9E9E39A426A569F2F4DAEFF1C425A4C149FB1A42D48
     573      19DFF5AB06EF703DFEF97A4689B0AB19C134465A76D5A16B08D46D2E84B6911A
     574      DF9FA16D20525A86329932B08A3C219AC3730F6DBC0A96E2499D7EE8D2DA92FF
     575      3D216B1D0898D972E4E8565C0D7F05E38E03A1D3D0166ADABAB9AB8F7C442A01
     576      BEB6056AEAE67F9F8CDB972EA168DAC88227456228AB427C80474F0FE2C899BF
     577      AA485190CC9C77849B36D11652732B3E936E1D3C8B94D898ECAA8348119BA605
     578      FF386388840A9868C6439F156F43F5C46C6D221229A02395A39E753A6B857090
     579      8815A86E96095F1F4D3CF7D265CD5035A4A48959C688F8EAC3A75E7B746D5587
     580      CF28F62AD44380FD077F837BF26B34EE3310359ADA42435A3829489213D35848
     581      475A5A267C9E85E1A5FB1B44BE8953DE64EF0F686682E5DF77E67F2B85994611
     582      ACF97BF7E17E1C3BB78F91425C458AFC64FAAC03DC747B3B689B37E22970E9C0
     583      4D24C524E631249504C96E69F05584F27ACDEA715097C8209566B2A6A852AD4B
     584      C472585B4681CCCAD414213C7C4DE1156486E8245D76450D6F2C6DD0AD754D3E
     585      A3D498A690B266E99EBDBFC2D1FF0FA41B4562F6B73BD0ADDD4878F8FF8B0317
     586      9763C5A4D3108B7470F8B43F6EDF0F25279F4CF9C81146758A6A1E8848F4DF47
     587      A9C8C4EE0DA8AF8BC553ECF8DFCA8C622D1D5643DD70D9879317F75791A220F9
     588      66FA5E6EFA37ADA15D43D91AC8CC54C0F5FA7304FA2620334396A37591BBA5A1
     589      224B4DA328D46219490FF036054853C8D0AC7620D4982D42D54844BC1EDC5ED7
     590      434CB20EA21442E8741805A9A658490A9615462C4BB6EFD880D33E7F20D32C1A
     591      228B0C98DA18E3B5D76B7E1697483400F2B4C559E80AFF23424E4D921F2998F4
     592      AF21C6A22F95462DC714486C2070D5F94F385E3D54458A82C4DE7E27377DFA27
     593      D0ACD12CBBBD5F509FC05B1D47787BC4942BA42F216FDCACA681196B81FCB665
     594      1DCEBCD80D19A221AF9304CE48A6DCE5833C553023D6BC86395AB46981D088E6
     595      48483665EF2A90986286A8B896E0146A4A22E443967E0699983FA40EFFFBA278
     596      D6FC652D90F31777C1C9F98883BA989142AB8A146FC9A4493BB869D3DA42A366
     597      8B777710E5C858A0F46450BD2761A1761AF0CB863538E7BE17320D460A75460A
     598      0D460A2DF6320DD692AB332B96A91211268F980C6D2D6D642A3291A1C8805C21
     599      67F1C89126E3E013D515818C2499ECC5349914E9725DF4538FC7DCDED5F9DF13
     600      27331B8419B58E4E7FE0FC75070711238596969C91A253152972CAF8F1BFF39A
     601      42BDA65DA164C87B5DA6500E9E96840CBC099BA5291AB0FC5FBD66252E7AFC0D
     602      9976162984B2DC4892D6680434AEDF98D9313571E9DE2574B4ED889E6D7AE6FA
     603      1E7E0495FD9371329E2CDAE1CDD1B6F117D9BF2D643685C3F16DB874EB441529
     604      0A92AFBFDEC215B4F92B5DA740927323D8B2929C71923D7225701F647AB190E9
     605      B022AD96557DE414FA9BA69292FB12EA643507460FEA88AF3A748295A919442C
     606      0E11439F3F0A95E71EEEF590A2DF375B9B69304D71E81FD6FCBD73AA8A140589
     607      566D3BB3B7FC4E949508595C8AFFC614BA75FCF454BF5EF5A06168C1AB8A0741
     608      D7E01A749D278448CCB486A6005AFA4248B48510D27C1D96ABBCA77E2835123D
     609      47C7B69656D0D5D2407D132511E89A9A8A08007F54132AC9E1E369890C83FED9
     610      9A4B8F355EFEFA7B13AEDD7572506386A6968C91C2BB8A141F4CA6CDFC9B9B3E
     611      A515B4CC1BF3A536559E8C53AF37F019CA672C5FBAB34A7B564957CBFA9BEE11
     612      4154CFF2199F43331009FE7BFF3FA2F87AB6859A49BBECEAC398354B77EDDA88
     613      1B0FCF5591A222C894A97BB8E953DB40AB46D302ED0EAE08F608D5689C20FF77
     614      E579E2C8FB8C056B96FEBE7D3D6EB99E67A45063A44015293EA44C9EFC076FD4
     615      6A58342F7C526F8E266FCECC4E494B4706B3703534680193B0C8645085FACC5C
     616      D9B8692DEEB85DAC224545900913B6294951B365919ABE5C3EDA432693233C22
     617      12EA9A5AAC69AA933DE7A23032A89E69C49AB7EBD6AFC63D8F2B3C29E48C146F
     618      AA48F1E144D9FC1D0BE5BEB3259794B43478FBBF44BD9AB5A1A3A9C3CFF42AAA
     619      D0B673E757FE8487CFAF39A809192950458A0F2ED5EB77F2CD3525A6C42D5C0E
     620      72D66611709C5C983DBFBB2822908B45A2688944F2404D207294A9693C0D7C6A
     621      5BEE3B0C5591E21D62D36164375609FC77A1C45367952F66C8390D914894496B
     622      CF8A1217B3433808B80C3591309613A8851BABDB24DCB8B1BCDC27F05691E27D
     623      4BB3AFB4E17E80B60F28D77996A5912A5214203D760734769E5CD7AB2CE3D4B1
     624      1E5A5DA2A79556D17708AA22450E614468E3FCB0EEEE1E3D2C1BB23FD39D9DFD
     625      F66779EACF288BF8351B0E314F158B13E0798C3536AB3445851646869A8C0C47
     626      1819DABB6584E6BAD75C6296C0C8B19091E30F468ED2976E3B7B115C77957A0B
     627      AAF294FF6B523032F4CDD20C16C1A2B8773DCA59C8F50318392660176E7EE874
     628      97B7FC5F928291C18C91E13C23836D9A6E66715ECDD448103B3372AC62E470F9
     629      D0DF515EF27F450A46065D46863F181946E8988A4BE6234929B2A4B0CC78468E
     630      27AC5AF98C552BF11FFADBCA52FE2F48C1C850839161072343BF5A75754B4386
     631      B7242820219991631B23C7CF8C1C71A58FF1C3CB474D0A6993A1A689ED4FDD63
     632      64A86D6D6D5CAEBFE5ED1D499AE3ACCE95164B93029EF87FE86F2F8D7CACA410
     633      1AD4B393C6F6748D1B34C8AEC087ACAC748B11A5525EBC4878E77D27275799CE
     634      F996AB996DEA209608FD63FD5D2BC506B539E5632585C0D0B0AD54269635E244
     635      E8C6B2A411FB5269D6F70A20E02489031EF75BB66C60B1235EB1E22C6DF110CA
     636      E20C62F1C48013501F862AD369CA252D44792E90E3BA5AA6DAF39898FB89A822
     637      458511216C6CD40C437534645A42354E91C10F4F72F24CA1404D433F71C08317
     638      6BD78E2876A40B161C23529CA77D3F3891F01E274B8B1388C4D9FD1702A144A1
     639      96A290C59825A5C1D393C6292A6CCF6541F2D190C2CECEAEAB5C2E579B387155
     640      9DF0F0C03AD6D66DF53332526BDFBB77DEF3E6CD53FB5F30618F51A751F60E41
     641      9B377F55ECDF9935EBC047BF43508522C5175FD877B5B5FD7A76545482A1BEBE
     642      792D8522B396A56528BA77EF063D3D11323232F88167994C3950989999C9BB00
     643      C8194422113EFD740A1A369CCB3F9398E8834B97BEBD1C1313B31CCA290A3215
     644      29DE656F1424CC6620529C62D0FDFD31BA4B24A950A458B870CB9AA143672CDC
     645      B4E930A4D286FC351F9F8DAC1EFF0975EA4810171707A60D909090C013233E3E
     646      1E29292950575787582C86A9A9299A376F8EFEFD27E622C5C58BD36FC5C6C62E
     647      627F3E602193B737B498BDA160F686806BCCEC029D22624143D949EC792F8190
     648      D90C2995D366284C2A1429E6CFDFB266F0E0190BB76ECD4D8A55AB56A3664D11
     649      CBE0445E3BD091C8408188616060C0BB6626AF79B6B6B6E8D367DCBB48512683
     650      5B1FB3542852CC9BB765CDA0413316EED8919B143FFFBC16868669BC96888E8E
     651      E6894164484E4EE6B5848E8E0EBB6FC83B5DB5B2B262D5CD982A5294422A1429
     652      E6CEDDB266C080190B77EFCE4D8AF5EBD7C3D2522BDB6650D90F515189F0F5F5
     653      E583BF7F305EBD8A4144441CB4B46AC2CC4CD9DCAC2245F1A5429162F6EC2D6B
     654      FAF59BB1F0AFBFFE23C5EBD70EFC515DDD089A9A3559865B3062681539CE8A4C
     655      8A1998210E4318DF54F68297DC139E1CBB26F4B0F218AC1028AC64229985469A
     656      C65DFD54FD9BA210515824223963180B4C61AA3082916C3996978B2D53A148F1
     657      DD775BD6F4E93363E18103FF9122A7646444333BE2355253835966BF60D58590
     658      D91152F6AC0E6F642627774064A498D72E1FA2FA6099248A46B490323A09498A
     659      084470833008B71ADCEA2C17C8ADD325E94D32459956ED3AB533D3D5D36DA432
     660      8CAB57AF0E131313DCBA750B5E5E5E4CEBBDDD4B4ED562D3A64D616E6E8EB367
     661      CFE2FCB9F349990199F67D82FB38B2DF4D2DCBEFA850A4983163CB9A9E3D672C
     662      3C7224B7A69830613C3A7532E06D070D0D0DDEAE78FDFA35020202909696C6AA
     663      0A331E2C777731AE5D8B7FEFA4188DD1D2B85E711BA7CE9C3A998CE0860D1BF2
     664      69A5AE11A9549AED609E48F0E6CD1B0405053163B84FF682653AD27B540DD2B7
     665      51EB4AD5CA2282D077D2B99696161F48DAB46983870F1FE2CE993BEBD4A1BEF1
     666      0DDE4496D5F75428524C9FBE654DF7EE33161E3FFE1F294243CF62F5EAE9484F
     667      4FC7D4A9E779C3B24D1B115AB6E4B2C9404772E2EEE414C24A51E87B25453FF4
     668      13CBBAC9CE9DBF7CBE57DE7B3E3E3EF8F7DF7FF963525212828383D1A0410358
     669      5858B0D654CD5CCFB2F4E1E9D3A7D97F77EBD68D3F3E79F2042121217C1F0D35
     670      BB69AF13221A698E8B172FC2D1D1F1087B6C360B6165F54D158A1453A76E59D3
     671      A5CB8C85A74FE726C5C2855FF3C06CDB16C493A26B57293EFDB4463619A83592
     672      9A9A8A0B17223E88A698346912B771E3465E7B9116080F0FE733DDD2D292D70E
     673      24F3E7CF67ADA2EE05C641196D676757E00637442C3F3FBF5CD7F6EFDF8F9327
     674      4F7E1CA4183B76AC2D538FDD19105D9B356B36C8DADA1A2D5AB46075AA0F5393
     675      6D70EE5C6E52F4EB67CB97B43B770CF9FE88E1C3EB60E448CB6C3250A03E8B7F
     676      FF4D66CFA4979A14E3304E22EB231BDF7E60FB712289E813BA46C6ADB3B388A9
     677      F514C832521E65248786C505DD7A244D965E8DAC16B9F9FAADEBAD3C3C3CF8F7
     678      A9EE2762D0DF3D7B2A1D955CB87081D76A4416777777D6728AE2494DDFD3B871
     679      63BE5575E5CA156CDDBA35DB7620A1E75C5D5D59D53A03BD7AF5E2E324AD41B2
     680      67CF1E1C3F7EBCF29082951E5B56570E6325A56B93264D3A513D4B814A427E0E
     681      47E878F9B23B23453B5CBA949B145F7ED983DF0DE8E8D164065835F4EF5F9D81
     682      AB964D06AA5AA8FEBE71E3055EBEF462469B8807BA56AD5ABC866175750C53CD
     683      5718C0DBBCBDBDEFA2F0653DA24F077D1AD8A3670F0B465A3E930A1322EDE5CB
     684      97F9DF1B356A14DF64F6F4F4645AAD2B7FFFEAD5AB7C665201B0B1B1C1962D5B
     685      D0A14387ECCC9F3E7D3A6F74920D11181898BD7D05D918841B6944EA8B61058A
     686      B74B48B66DFB5F7B571F13751DC61F84FB5DBC1DC89B2390372145A3D4C62014
     687      7459935CCEDACAC8B955BA9A2D6BAD65FD53CB517FD5D6CBB2E56CAED2360D7A
     688      997F50B93185A252385E8E40E082E00095E0C7C17172489CD0E7F3BD8E0E11D7
     689      1F99F7C73DDB77BFBB1FDCEFE5FB7C9ECFF3799E1F7CEF43292B2BF37F50E066
     690      674893F1F1F10A00BE205868151AEFCF2A2B5BC5E15887889C0B8AD2D26764F5
     691      EA04397DFAB49C3D7B564D1C273D3D3D5D0038955238782E0A51461F238F628D
     692      830E63B47130F2E80CE675523D947C2D54FF16CEFFD5F7922339899076496E71
     693      AF1E8E1ADE341339B3C2146D4AD78C5A1401979D9DAD8047477B9D3832E290B6
     694      36CFC2F156EB39090A9A92E2E27BC56EB7CF3205AB0D3A94F3C4EB3C71E28402
     695      3501CE865C6456BE7C95F4BC68572664C7F9B7A5ABB5111A6AAD343434C88103
     696      07144372BE90B2DCE55F94974FCBF48B7E0B8ADDBB77AF86931A394974069F4F
     697      F0068870B6A25976D1699C085F30D0F8BAAAEA17A40EE6CE1A38D825A9A9A94A
     698      98656666CE71BCF7359D4F70789736E2849ACDE639CE67DB9B0EE3FBF6F60EB1
     699      D92EE2BA82A4A5C582895E0727FE010AFEF414D2CBEBB88C9AEBDDDFD3F27408
     700      00A259C4121124410980FC6DBAA6AF352C373C57585468B2582C8ABD342D1442
     701      300F80BD07E08E9BFDFCC58BBFE13A0701927C3973E68C141414A839A260A466
     702      E067C97AB72E5D26553D69121B362139B13D00599BE4E6E62A70838167AB9937
     703      4ADFB0377DD974285AA2DFAE933ABB5F8202B499BB61C3865A0A26828280F005
     704      87EF3E3A342E2E4E450ECB37EEF33E05BDDEBA56DC7A9DCF31343424EBD7AF57
     705      9A84CE67F4373559B07F04E708C3B1A3D5C2219191D150EFA1D0186352D6542A
     706      395B97CA54C59D2A7A8F1C799F9A633F6EE1D442F7C61E44ABB486B0FFB04496
     707      04FDBEE2F7C757E5AD2A4CCE4CBE2B440B59C9E3184C0962D7D2642A3C49CE77
     708      9865DAD12FCEEE3A718E0C8101C7E1CC2CA4A207719D99EA984EE7102A921F01
     709      9E703976EC880A82C1C14180E79FFF3DA1EE20B3B024DDB56B970A2C8A52DA6B
     710      AFBE666F296BF9106CF69EDF828276F8F0E119526A7979B9ECDDBB7716140B81
     711      C3BB8F0EE79693909494A42682EFABABABE5F8F1E3EAD8743E69D4EB7C46A6CD
     712      D60B8A36C0F926E5FCCE4E2BA2AE4DD2D296CAFEFD6FC937DF7C27B5B5D51068
     713      6654006F62FF5A80E31615CDDC9E3AF5851C3C58AA4001C757D3F1EC1C46A444
     714      C48F858D3DB079FBE6CD89A989B9A62853B2166E025385496242AC042D4E9656
     715      7D91840278390922A9D148174840F5F0E7F0F8B40C8D4DCAD8C49467EB72ABAD
     716      03EF279DC31275C92AB70721B55CBA8834BB0E4CAA2B46B4D96C4A909231C884
     717      4C274C519B3679341553A5B74F41F0946C2FB960EC321E02637DE0D7A0C8CFCF
     718      BF0B37F019C4D92AD22359C3FB3710BEE0F0BEBE1E9BB0C3C72D73AFB7240B09
     719      3128876ADA3F8E2D2D7DF99AD7929797275BB73E846BB80F298B5F46A7CD7E86
     720      E76B6EFE11F9FC237765E5B75F874BF85BFB5EDAF7E49E97F63C4B7A2648ED8E
     721      4B727E32426C4EA35CBE7259524D7F4A7A74A8244619A55377FD6B50CC8CEB12
     722      377E4E62277B24642618C05A8BB112A9CF0456F8558A8AC61408D8BCE2BDFB1A
     723      B51985267B18353535EE93DF9FD49D0EE77987EEE8C6355BB324EBF362296EFF
     724      2F5BDE37AAFAE0C26F5C4A3F05630DD0BE13D4988F1C1FC64E1C358297197C81
     725      723538A8E6B92D2C2C042BFC8AC8B9A2A2A7B6F66708B373323A7AEDE060E9B6
     726      71E37DF8DCA3385EA83AA6D95C095638EEEEEEEED0512E76213F530D76639CC5
     727      687A441E19E85FD9FFC1275F7FF294EFB1F815DA4C751C5E307379E5F1E91069
     728      774688668C9C030A4BFF844CE95D123CDA25D37FBA10F53C3F7E4108CA5B308C
     729      2A4D5AAD9548259A6CDB76BF4A9FB48181011508151515EEC68646E5FC117DA4
     730      074CA0A7484A9B494CCD17E44267866438EE903B26DF9577276F84F3FECF3E05
     731      BB32311859109DC51919190FA37A48414A30901E2920BD937EF4E85161294876
     732      2028E8E4868666FC2C0C6068467A89C784E663720D481D7C74EE82904D458E5E
     733      0431E690C6C66AA9AB3B892AA56300259D6D7474B417E7E5F81983CD04B684F9
     734      ADC3734AD39DB233B637BEF789E0ECE03D5BB66E4935C0585612C0D43F6C4641
     735      332927721F452107414C47BB5C1388FC315C031740D3FE0681675B5F5F01EA1F
     736      0573DDAF34114B575453EE7A73FD4D73BE3F80E26A239B50312DC1588312F131
     737      50E5DDD00CF1D40E454545A8105A54095A525202766842D426FD4DFF4625223D
     738      00A802B556436374E9C8B3DD00400F8ED72F9E4615FBC62CD5B81EC4BFEE64B2
     739      CA80AE88E894CE183828265882B545B268B1C3E858155310F3CAC1430763A879
     740      3E1ED82709EE65B22D790F74CF97E20B02ABB505515FE1D0872E38507185BBC6
     741      5DA313AE093B9CDFEB2FCE5FC8FCAACD2DE4564FDA59861CBB11A2F351B0CA4A
     742      680AC3F2E5D948213D00C00FA82C0674D4FD7D2833F9389169C0221E00F035FF
     743      3CEE863D097D415E884049BAA62FBAEFF1C5CB16DFB3BD647BF28E1D3B0CEFBC
     744      F31E447195DED1D27E6EEAF25477BAA49B0D62F80900E88F93B8CB8332684893
     745      B4C9644976FB8BF317327F03C5B5AE8F5F6CCECED09D182B30748C46F1A403A6
     746      809B36C15E46E993BE7838FF56243F57A444DA0AA46018C2CFAF971BB89EF93B
     747      280276132C008A80CDB300280236CF02A008D83C0B802260F32C008A80CDB3BF
     748      000A42C0ADF7B459210000000049454E44AE426082}
    30749  end
    31750  object Label1: TLabel
     
    110829    Left = 120
    111830    Top = 136
    112     Width = 153
     831    Width = 145
    113832    Height = 41
    114833    Caption = '&Pick Image(s)'
     
    5781297  end
    5791298  object ClearImagesButton: TBitBtn
    580     Left = 400
     1299    Left = 408
    5811300    Top = 136
    582     Width = 73
     1301    Width = 65
    5831302    Height = 41
    5841303    Caption = 'C&lear'
     
    6331352  end
    6341353  object PickOtherButton: TBitBtn
    635     Left = 280
     1354    Left = 272
    6361355    Top = 136
    637     Width = 113
     1356    Width = 129
    6381357    Height = 41
    6391358    Caption = 'Pick &Other'
     
    7401459      00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
    7411460  end
    742   object Panel1: TPanel
     1461  object pnlIEHolder: TPanel
    7431462    Left = 480
    7441463    Top = 16
    745     Width = 305
     1464    Width = 281
    7461465    Height = 433
    7471466    Anchors = [akLeft, akTop, akRight, akBottom]
     
    7511470      Left = 1
    7521471      Top = 1
    753       Width = 303
     1472      Width = 279
    7541473      Height = 431
    7551474      Align = alClient
    7561475      TabOrder = 0
    7571476      ControlData = {
    758         4C000000511F00008C2C00000000000000000000000000000000000000000000
     1477        4C000000D61C00008C2C00000000000000000000000000000000000000000000
    7591478        000000004C000000000000000000000001000000E0D057007335CF11AE690800
    7601479        2B2E126208000000000000004C0000000114020000000000C000000000000046
     
    7681487    Width = 125
    7691488    Height = 20
    770     Caption = 'Move Files to Server'
     1489    Caption = '&Move Files to Server'
    7711490    Checked = True
    7721491    State = cbChecked
     
    7841503  object OpenDialog: TOpenPictureDialog
    7851504    Options = [ofHideReadOnly, ofAllowMultiSelect, ofEnableSizing]
    786     Left = 80
    787     Top = 24
     1505    Left = 64
     1506    Top = 8
     1507  end
     1508  object PolTimer: TTimer
     1509    Interval = 5000
     1510    OnTimer = PolTimerTimer
     1511    Left = 24
     1512    Top = 48
    7881513  end
    7891514  object DKLanguageController1: TDKLanguageController
    790     Left = 384
    791     Top = 232
     1515    Left = 64
     1516    Top = 48
    7921517    LangData = {
    793       0A0055706C6F6164466F726D010100000001000000070043617074696F6E0116
     1518      0A0055706C6F6164466F726D010100000001000000070043617074696F6E0117
    7941519      0000000600496D61676531000006004C6162656C310101000000020000000700
    7951520      43617074696F6E0006004C6162656C3201010000000300000007004361707469
     
    8061531      6573546F55706C6F61644C697374000008004E6F74654564697400000F005069
    8071532      636B4F74686572427574746F6E01010000000D000000070043617074696F6E00
    808       060050616E656C3100000A0057656242726F7773657200000C004D6F76654368
    809       65636B426F7801010000000E000000070043617074696F6E000E004F70656E46
    810       696C654469616C6F6701010000000F000000060046696C746572000A004F7065
    811       6E4469616C6F670001050000000C005069637475726550616E656C00000C0050
    812       6963747572654C6162656C00000D0050726576696577427574746F6E01010000
    813       0010000000040048696E74000A005061696E7450616E656C000008005061696E
    814       74426F780000}
     1533      0B00706E6C4945486F6C64657200000A0057656242726F7773657200000C004D
     1534      6F7665436865636B426F7801010000000E000000070043617074696F6E000E00
     1535      4F70656E46696C654469616C6F6701010000000F000000060046696C74657200
     1536      0A004F70656E4469616C6F670001050000000C005069637475726550616E656C
     1537      00000C00506963747572654C6162656C00000D0050726576696577427574746F
     1538      6E010100000010000000040048696E74000A005061696E7450616E656C000008
     1539      005061696E74426F7800000800506F6C54696D65720000}
    8151540  end
    8161541end
  • cprs/branches/tmg-cprs/CPRS-Chart/UploadImages.pas

    r453 r729  
    77  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    88  Dialogs, StdCtrls, Buttons, ExtCtrls, pngimage, ExtDlgs, OleCtrls,
     9  uCore,
    910  SHDocVw, DKLang;
    1011
    1112type
    12   TUploadImageInfo = class
     13
     14  TImageInfo = class
    1315    private
    1416    public
    15       TIUIEN :             int64;    //IEN in file# 8925
    16       DFN :                AnsiString;    //IEN in Patient File (#2)
    17       UploadDUZ :          int64;
     17      TIUIEN :             int64;      //IEN in file# 8925
     18      DFN :                AnsiString; //IEN in Patient File (#2)
     19      UploadDUZ :          int64;      //IEN in NEW PERSON file
    1820      ThumbFPathName :     AnsiString; // local file path name
    19       ImageFPathName :     AnsiString;
     21      ImageFPathName :     AnsiString; // local file path name
    2022      ServerPath :         AnsiString;
    2123      ServerFName :        AnsiString;
     
    2527      ImageDateTime :      AnsiString;
    2628      UploadDateTime:      AnsiString;
    27       ObjectType :         Integer;  //pointer to file 2005.02
    28       ProcName :           String[10];  //server limit is 10 chars.
    29       //AcquisitionSite
    30       pLongDesc :          TStrings;
    31     published
    32   end;
     29      ObjectType :         int64;      //pointer to file 2005.02
     30      ProcName :           String[10]; //server limit is 10 chars.
     31      pLongDesc :          TStrings;  //Won't be owned by this list
     32      procedure Assign(Source : TImageInfo);
     33      procedure Clear;
     34  end;
     35
     36  TAutoUploadNote = class
     37    private
     38    public
     39      TIUIEN :       int64;      //IEN in file# 8925
     40      ErrMsg :       AnsiString;
     41      NoteTitle :    AnsiString; //Title of note to be associated with image
     42      Patient :      TPatient;
     43      ImageInfo :    TImageInfo;
     44      Location :     AnsiString; //Location that image if from
     45      DOS :          AnsiString; //Date of service
     46      Provider :     AnsiString;
     47      CurNoteImages: TStringList;
     48      UploadError :  Boolean;
     49      procedure SetDFN(var ChartNum,Location,FName,LName,MName,DOB,Sex : string);
     50      Procedure SetInfo(var DOS,Provider,Location,Title : string);
     51      function SameAs(OtherNote: TAutoUploadNote): boolean;
     52      procedure MakeNewBlankNote(DFN,DOS,Provider,Location,Title : string);
     53      procedure InitFrom(OtherNote: TAutoUploadNote);
     54      function IsValid : boolean;
     55      procedure Clear;
     56      constructor Create();
     57      destructor Destroy;  override;
     58  end;
     59
     60
    3361
    3462
     
    5482    NoteEdit: TEdit;
    5583    PickOtherButton: TBitBtn;
    56     Panel1: TPanel;
     84    pnlIEHolder: TPanel;
    5785    WebBrowser: TWebBrowser;
    5886    Label6: TLabel;
    5987    MoveCheckBox: TCheckBox;
     88    PolTimer: TTimer;
    6089    DKLanguageController1: TDKLanguageController;
    6190    procedure UploadButtonClick(Sender: TObject);
     
    6998    procedure PickOtherButtonClick(Sender: TObject);
    7099    procedure FormRefresh(Sender: TObject);
    71 
     100    procedure PolTimerTimer(Sender: TObject);
    72101  private
    73102    { Private declarations }
    74103    Bitmap : TBitmap;
    75104    Picture : TPicture;
    76     function MakeThumbNail(Info: TUploadImageInfo): boolean;
     105    FScanDir : String;
     106    function MakeThumbNail(Info: TImageInfo): boolean;
    77107
    78108    procedure LoadNotesEdit();
    79109    //procedure LoadNotesList();
    80     function UploadFile(Info: TUploadImageInfo): boolean;
     110    function UploadFile(Info: TImageInfo; DelOrig : boolean): boolean;
    81111    procedure UploadChosenFiles();
    82 
     112    function ProcessOneLine(Line : string) : string;
     113    function ProcessOneFile(FileName : string) : boolean;
     114    procedure ScanAndHandleImgTxt;
     115    procedure ScanAndHandleImages;
     116    procedure DecodeImgTxt(Line : string; out ChartNum, Location,
     117                           FName, LName, MName, Sex, DOB, DOS, Provider,
     118                           Title : string; FilePaths : TStrings);
     119    function EncodeImgTxt(ChartNum, Location, FName, LName, MName, Sex, DOB,
     120                           DOS, Provider, Title : string; FilePaths : TStrings) : AnsiString;
     121    procedure FinishDocument(UploadNote : TAutoUploadNote);
    83122  public
    84123    { Public declarations }
     124    procedure SetScanDir(NewDir : string);
     125  published
     126    property ScanDir : String read FScanDir write SetScanDir;
    85127  end;
    86128
     
    95137        StrUtils, //for MidStr etc.
    96138        ORFn,  //for PIECE etc.
    97         uCore, // for User.DUZ etc
    98139        Trpcb, //for .PType enum
    99140        fImages, //for upload/download files etc.
    100141        //Targa,  //for TGA graphic save
    101         ORNet //for RPCBrokerV
     142        ORNet, //for RPCBrokerV
     143        rTIU,
     144        uTMGOptions
    102145        ;
    103146
     
    105148//  DefShortDesc = '(Short Image Description)';  <-- original line.  //kt 8/7/2007
    106149
     150  type
     151    TFileInfo = class
     152    private
     153    public
     154      SrcRec : TSearchRec;
     155      STimeStamp : String;
     156      SBarCode : String;
     157      FPath : String;
     158      MetaFileName : String;
     159      MetaFileExists : boolean;
     160      BatchCount : integer;
     161      procedure Assign(Source: TFileInfo);
     162      procedure Clear;
     163    end;
     164
    107165  var
    108166    DefShortDesc : string; //kt
     167    PolInterval : integer;
     168    AutoUploadNote : TAutoUploadNote;
     169
    109170
    110171  procedure SetupVars;
     
    115176  //-------------------------------------------------------------------------
    116177  //-------------------------------------------------------------------------
    117   function TUploadForm.MakeThumbNail(Info: TUploadImageInfo) : boolean;
     178
     179  function NumPieces(const s: string; ADelim : Char) : integer;
     180  var List : TStringList;
     181  begin
     182    List := TStringList.Create;
     183    PiecesToList(S, ADelim, List);
     184    Result := List.Count;
     185  end;
     186
     187  //-------------------------------------------------------------------------
     188  //-------------------------------------------------------------------------
     189  procedure TFileInfo.Assign(Source: TFileInfo);
     190  begin
     191    SrcRec := Source.SrcRec;
     192    STimeStamp := Source.STimeStamp;
     193    SBarCode := Source.SBarCode;
     194    FPath := Source.FPath;
     195    BatchCount := Source.BatchCount;
     196    MetaFileName := Source.MetaFileName;
     197    MetaFileExists := Source.MetaFileExists;
     198  end;
     199
     200  procedure TFileInfo.Clear;
     201  begin
     202    //SrcRec := ...   //Note sure how to clear this.  Will leave as is...
     203    STimeStamp := '';
     204    SBarCode := '';
     205    FPath := '';
     206    BatchCount := 0;
     207    MetaFileName := '';
     208    MetaFileExists := false;
     209  end;
     210
     211  //-------------------------------------------------------------------------
     212  //-------------------------------------------------------------------------
     213  procedure TImageInfo.Assign(Source : TImageInfo);
     214  begin
     215    TIUIEN := Source.TIUIEN;
     216    DFN := Source.DFN;
     217    UploadDUZ := Source.UploadDUZ;
     218    ThumbFPathName := Source.ThumbFPathName;
     219    ImageFPathName := Source.ImageFPathName;
     220    ServerPath := Source.ServerPath;
     221    ServerFName := Source.ServerFName;
     222    ServerThumbFName := Source.ServerThumbFName;
     223    ShortDesc := Source.ShortDesc;
     224    Extension := Source.Extension;
     225    ImageDateTime := Source.ImageDateTime;
     226    UploadDateTime := Source.UploadDateTime;
     227    ObjectType := Source.ObjectType;
     228    ProcName := Source.ProcName;
     229    pLongDesc := Source.pLongDesc;  //this is only a pointer to object owned elsewhere
     230  end;
     231
     232  procedure TImageInfo.Clear;
     233  begin
     234    TIUIEN := 0;
     235    DFN := '';
     236    UploadDUZ := 0;
     237    ThumbFPathName := '';
     238    ImageFPathName := '';
     239    ServerPath := '';
     240    ServerFName := '';
     241    ServerThumbFName := '';
     242    ShortDesc := '';
     243    Extension := '';
     244    ImageDateTime := '';
     245    UploadDateTime:= '';
     246    ObjectType :=0;
     247    ProcName := '';
     248    pLongDesc := nil
     249  end;
     250
     251  //-------------------------------------------------------------------------
     252  //-------------------------------------------------------------------------
     253  procedure TAutoUploadNote.SetDFN(var ChartNum,Location,FName,LName,MName,DOB,Sex : string);
     254  var RPCResult : AnsiString;
     255      PMS : AnsiString;
     256  begin
     257    //Notice: ChartNum, and PMS are optional.  If PMS is 1,2,or 3, then ChartNum
     258    //        is used to look up patient.  Otherwise a lookup is based on just
     259    //        Name, DOB, Sex.
     260    //        To NOT use ChartNum, just set the values to ''
     261    //
     262    //Note: If LName is in form: `12345, then LName is used for DFN, and call
     263    //      to server for lookup is bypassed, and the values for FName,DOB etc
     264    //      are ignored
     265
     266    if MidStr(LName,1,1)='`' then begin
     267      Self.Patient.DFN := MidStr(LName,2,999);
     268    end else begin
     269      //**NOTE**: site-specific code
     270      if Location ='Laughlin_Office' then PMS :='2'
     271      else if Location ='Peds_Office' then PMS :='3'
     272      else PMS := ''; //default
     273
     274      RPCBrokerV.ClearParameters := true;
     275      RPCBrokerV.remoteprocedure := 'TMG GET DFN';
     276      RPCBrokerV.param[0].value := ChartNum;  RPCBrokerV.param[0].ptype := literal;
     277      RPCBrokerV.param[1].value := PMS;       RPCBrokerV.Param[1].ptype := literal;
     278      RPCBrokerV.param[2].value := FName;     RPCBrokerV.Param[2].ptype := literal;
     279      RPCBrokerV.param[3].value := LName;     RPCBrokerV.Param[3].ptype := literal;
     280      RPCBrokerV.param[4].value := MName;     RPCBrokerV.Param[4].ptype := literal;
     281      RPCBrokerV.param[5].value := DOB;       RPCBrokerV.Param[5].ptype := literal;
     282      RPCBrokerV.param[6].value := Sex;       RPCBrokerV.Param[6].ptype := literal;
     283      RPCBrokerV.Call;
     284      RPCResult := RPCBrokerV.Results[0]; //returns: success: DFN;  or  error: -1^ErrMsg
     285      if piece(RPCResult,'^',1) <> '-1' then begin
     286        self.Patient.DFN := RPCResult;
     287      end else begin
     288        self.Patient.DFN := '';
     289      end;
     290    end;
     291  end;
     292
     293  Procedure TAutoUploadNote.SetInfo(var DOS,Provider,Location,Title : string);
     294  //Just loads values into structure.  No validation done.
     295  begin
     296    Self.DOS := DOS;
     297    Self.Provider := Provider;
     298    Self.Location := Location;
     299    Self.NoteTitle := Title;
     300  end;
     301
     302  procedure TAutoUploadNote.InitFrom(OtherNote: TAutoUploadNote);
     303  //Will create a blank note for itself.
     304  begin
     305    Patient.Assign(OtherNote.Patient);
     306    ImageInfo.Assign(OtherNote.ImageInfo);
     307    Location := OtherNote.Location;
     308    DOS := OtherNote.DOS;
     309    Provider := OtherNote.Provider;
     310    NoteTitle := OtherNote.NoteTitle;
     311    CurNoteImages.Assign(OtherNote.CurNoteImages);
     312    MakeNewBlankNote(Patient.DFN,DOS,Provider,Location,NoteTitle);
     313  end;
     314 
     315  procedure TAutoUploadNote.MakeNewBlankNote(DFN,DOS,Provider,Location,Title : string);
     316  var RPCResult : string;
     317  begin
     318    RPCResult := '';
     319    Self.ErrMsg := '';    //default to no error messages
     320   
     321    RPCBrokerV.ClearParameters := true;
     322    RPCBrokerV.remoteprocedure := 'TMG GET BLANK TIU DOCUMENT';
     323    RPCBrokerV.param[0].value := DFN;       RPCBrokerV.param[0].ptype := literal;
     324    RPCBrokerV.param[1].value := Provider;  RPCBrokerV.Param[1].ptype := literal;
     325    RPCBrokerV.param[2].value := Location;  RPCBrokerV.Param[2].ptype := literal;
     326    RPCBrokerV.param[3].value := DOS;       RPCBrokerV.Param[3].ptype := literal;
     327    RPCBrokerV.param[4].value := Title;     RPCBrokerV.Param[4].ptype := literal;
     328    RPCBrokerV.Call;
     329    RPCResult := RPCBrokerV.Results[0];
     330    try
     331      TIUIEN := StrToInt64(Piece(RPCResult,'^',1));    //returns:  success: TIU IEN;  or  error: -1
     332    except
     333      on E: EConvertError do begin
     334        Self.ErrMsg := 'WHILE CREATING BLANK NOTE FOR UPLOAD, ' +
     335                       'ERROR CONVERTING: ' + RPCBrokerV.Results[0] + ' to document record #.';
     336        TIUIEN := -1;
     337      end 
     338    end; 
     339    If TIUIEN <> -1 then begin
     340      Self.Patient.DFN := DFN;
     341      Self.Provider := Provider;
     342      Self.Location := Location;
     343      Self.DOS := DOS;
     344    end else begin
     345      Self.ErrMsg := 'FAILED TO CREATE A BLANK NOTE FOR UPLOAD' +
     346                     '  ' + Piece(RPCResult,'^',2);
     347      Self.UploadError := true;     
     348    end;
     349  end;
     350
     351  function TAutoUploadNote.IsValid : boolean;     
     352  begin
     353    Result := true;  //default to success.
     354    if (Patient.DFN='') {or (TIUIEN < 1)} or (ErrMsg <> '') or (NoteTitle = '')
     355    or (Location = '') or (DOS = '') or (Provider = '') then begin
     356      Result := false
     357    end;
     358  end;
     359
     360  procedure TAutoUploadNote.Clear;
     361  begin
     362    TIUIEN := 0;
     363    if Patient <> nil then Patient.Clear;
     364    if ImageInfo <> nil then ImageInfo.Clear;
     365    Location := '';
     366    DOS := '';
     367    Provider := '';
     368    NoteTitle := '';
     369    UploadError := False;
     370    if CurNoteImages <> nil then CurNoteImages.Clear;
     371  end; 
     372
     373  function TAutoUploadNote.SameAs(OtherNote: TAutoUploadNote): boolean;
     374  begin
     375    Result := true;
     376    if (OtherNote = nil) or (OtherNote.Patient = nil)
     377    or (Patient.DFN <> OtherNote.Patient.DFN)
     378    or (DOS <> OtherNote.DOS)
     379    or (Provider <> OtherNote.Provider)
     380    or (Location <> OtherNote.Location)
     381    or (NoteTitle <> OtherNote.NoteTitle) then begin
     382      Result := false;
     383    end;     
     384  end;
     385 
     386  constructor TAutoUploadNote.Create;
     387  begin
     388    Self.TIUIEN := 0;
     389    Self.Patient := TPatient.Create;
     390    Self.CurNoteImages := TStringList.Create;
     391    Self.ImageInfo := TImageInfo.Create;
     392    Self.Clear;
     393  end;
     394
     395  destructor TAutoUploadNote.Destroy;
     396  begin
     397    self.patient.free;
     398    Self.CurNoteImages.Free;
     399    Self.ImageInfo.Free;
     400  end;
     401
     402  //-------------------------------------------------------------------------
     403  //-------------------------------------------------------------------------
     404  function TUploadForm.MakeThumbNail(Info: TImageInfo) : boolean;
    118405  //This takes Info.ImageFPathName and creates a 64x64 .bmp file with
    119406  //this same name, and saves in cache directory.
     
    141428
    142429
    143   function TUploadForm.UploadFile(Info: TUploadImageInfo): boolean;
     430  function TUploadForm.UploadFile(Info: TImageInfo; DelOrig : boolean): boolean;
    144431  //result: true if success, false if failure
    145432  var
     
    196483      Info.ServerPath := Piece(RPCResult,'^',2);
    197484      Info.ServerFName := Piece(RPCResult,'^',3);
    198       result := frmImages.UploadFile(Info.ImageFPathName,Info.ServerPath,Info.ServerFName);
     485      result := frmImages.UploadFile(Info.ImageFPathName,Info.ServerPath,Info.ServerFName,1,1);
    199486      if result=false then begin
    200487//      ErrorMsg :='Error uploading image to server';  <-- original line.  //kt 8/7/2007
     
    227514      if result then begin
    228515        if MakeThumbNail(Info) then begin;
    229           result := frmImages.UploadFile(Info.ThumbFPathName,Info.ServerPath,Info.ServerThumbFName);
     516          result := frmImages.UploadFile(Info.ThumbFPathName,Info.ServerPath,Info.ServerThumbFName,1,1);
    230517          if result=false then begin
    231518//          ErrorMsg :='Error sending thumbnail image to server.';  <-- original line.  //kt 8/7/2007
     
    234521          end;
    235522        end;
     523        if DelOrig=true then begin
     524          DeleteFile(Info.ImageFPathName);
     525        end;
    236526      end;
    237527    end;
     
    243533  procedure TUploadForm.UploadChosenFiles();
    244534  var i : integer;
    245       Info: TUploadImageInfo;
    246 
    247   begin
    248     SetupVars; 
    249     Info := TUploadImageInfo.Create();
     535      Info: TImageInfo;
     536
     537  begin
     538    SetupVars;
     539    Info := TImageInfo.Create();
    250540    Info.pLongDesc := nil;
    251541
     
    269559      Info.Extension := MidStr(Info.Extension,2,17); //remove '.'
    270560
    271       if not UploadFile(Info) then begin   //Upload function passes back filename info in Info class
     561      if not UploadFile(Info,MoveCheckBox.Checked) then begin   //Upload function passes back filename info in Info class
    272562        //Application.MessageBox('Error uploading image file!','Error');
    273563      end;
     
    376666    Bitmap.Width := 64;
    377667    Picture := TPicture.Create;
     668
     669    AutoUploadNote := TAutoUploadNote.Create;
     670    FScanDir := uTMGOptions.ReadString('Pol Directory','??');
     671    if FScanDir='??' then begin
     672      FScanDir := ExtractFileDir(Application.ExeName);
     673      uTMGOptions.WriteString('Pol Directory',FScanDir);
     674    end;
     675    PolInterval := uTMGOptions.ReadInteger('Pol Interval (milliseconds)',0);
     676    if PolInterval=0 then begin
     677      PolInterval := 60000;
     678      uTMGOptions.WriteInteger('Pol Interval (milliseconds)',PolInterval);
     679    end;
     680  end;
     681
     682  procedure TUploadForm.SetScanDir(NewDir : string);
     683  begin
     684    if DirectoryExists(NewDir) then begin
     685      FScanDir := NewDir;
     686      uTMGOptions.WriteString('Pol Directory',FScanDir);
     687    end;
    378688  end;
    379689
     
    412722  end;
    413723
     724  procedure TUploadForm.DecodeImgTxt(Line : string; out ChartNum, Location,
     725                           FName, LName, MName, Sex, DOB, DOS, Provider,
     726                           Title : string; FilePaths : TStrings);
     727  //format of line is as follows:
     728  //ChartNum^Location^FName^LName^MName^Sex^DOB^DOS^Provider^Title^FilePath(s)
     729  //NOTE: To provide patient IEN instead of FName etc, use this format:
     730  //      ^Location^^`1234567^^^^DOS^Provider^Title^FilePath(s)
     731  //      i.e. `IEN  (note ` is not an appostrophy ('))
     732  //      `IEN in place of LName, and leave blank: ChartNum,FName,FName,Sex,DOB
     733                           
     734  var Files: String;                           
     735      FileName : String;
     736      num,i : integer;
     737  begin
     738    if Pos('}',Line)>0 then begin
     739      Line := Piece(Line,'}',2);  //If error message is present, still allow parse.
     740    end;
     741    ChartNum := Piece(Line,'^',1);
     742    Location := Piece(Line,'^',2);
     743    FName := Piece(Line,'^',3);
     744    LName := Piece(Line,'^',4);
     745    MName := Piece(Line,'^',5);
     746    Sex := Piece(Line,'^',6);
     747    DOB := Piece(Line,'^',7);
     748    DOS := Piece(Line,'^',8);
     749    Provider := Piece(Line,'^',9);
     750    Title := Piece(Line,'^',10);
     751    Files := Piece(Line,'^',11); //may be list of multiple files separated by ;
     752    if Pos(';',Files)>0  then begin
     753      num := NumPieces(Files,';');
     754      for i := 1 to num do begin
     755        FileName := piece(files,';',i);
     756        if FileName <> '' then FilePaths.Add(FileName);
     757      end; 
     758    end else begin
     759      FilePaths.Add(Files);
     760    end;
     761     
     762  end; 
     763
     764  function TUploadForm.EncodeImgTxt(ChartNum, Location, FName, LName, MName, Sex, DOB,
     765                           DOS, Provider, Title : string; FilePaths : TStrings) : AnsiString;
     766  //format of line is as follows:
     767  //ChartNum^Location^FName^LName^MName^Sex^DOB^DOS^Provider^Title^FilePath(s)
     768  //NOTE: To provide patient IEN instead of FName etc, use this format:
     769  //      ^Location^^`1234567^^^^DOS^Provider^Title^FilePath(s)
     770  //      i.e. `IEN  (note ` is not an appostrophy ('))
     771  //      `IEN in place of LName, and leave blank: ChartNum,FName,FName,Sex,DOB
     772  var i : integer;
     773  begin
     774    Result := ChartNum + '^' + Location + '^' + FName + '^' + LName + '^' +
     775              MName + '^' + Sex + '^' + DOB + '^' + DOS + '@01:00' + '^' + Provider + '^' +
     776              Title + '^';    //added time of 1:00    elh   7/8/08
     777    for i:= 0 to FilePaths.Count-1 do begin
     778      Result := Result + FilePaths.Strings[i];
     779      if i <> FilePaths.Count-1 then Result := Result + ';';
     780    end;
     781  end;                           
     782
     783 
     784  procedure TUploadForm.FinishDocument(UploadNote : TAutoUploadNote);
     785  var Text : TStringList;
     786      ErrMsg : String;
     787      RPCResult : String;
     788      i : integer;
     789      oneImage: string;
     790      //TIUIEN : int64;
     791       
     792  begin
     793    if (UploadNote.TIUIEN>0) and (UploadNote.CurNoteImages.Count>0)
     794    and (UploadNote.UploadError = False) then begin
     795      //Add text for note: "See scanned image" --
     796      //   or later, some HTML code to show note in CPRS directly....
     797      Text := TStringList.Create;
     798      Text.Add('<!DOCTYPE HTML PUBLIC>');
     799      Text.Add('<html>');
     800      Text.Add('<head>');
     801      Text.Add('<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">');
     802      Text.Add('<title>VistA HTML Note</title>');
     803      Text.Add('</head>');
     804      Text.Add('<body>');
     805      Text.Add('<p>');
     806      Text.Add('Note created automatically from imported media.');
     807      Text.Add('<p>');
     808      for i := 0 to UploadNote.CurNoteImages.Count-1 do begin
     809        // note: $CPRSDIR$ will be replaced at runtime with directory of CPRS
     810        // This will be done as page is passed to TWebBrowser (in rHTMLTools)
     811        oneImage := '$CPRSDIR$\Cache\' + UploadNote.CurNoteImages.Strings[i]; 
     812        //oneImage := CacheDir + '\' + CurNoteImages.Strings[i];
     813        Text.Add('<img WIDTH=640 src="'+oneImage+'">');
     814        Text.Add('<p>');
     815      end;
     816      //Text.Add('<small>');
     817      //Text.Add('If images don''t display, first view them in IMAGES tab.<br>');
     818      //Text.Add('Then return here, click on note and press [F5] key to refresh.');
     819      //Text.Add('</small>');
     820      //Text.Add('<p>');
     821      Text.Add('</body>');
     822      Text.Add('</html>');
     823      Text.Add(' ');
     824      rTIU.SetText(ErrMsg,Text,UploadNote.TIUIEN,1);  //1=commit data, do actual save.
     825      Text.Free;
     826      //Here I autosign  -- later make this optional?
     827      RPCBrokerV.ClearParameters := true;
     828      RPCBrokerV.remoteprocedure := 'TMG AUTOSIGN TIU DOCUMENT';
     829      RPCBrokerV.param[0].value := IntToStr(UploadNote.TIUIEN); 
     830      RPCBrokerV.param[0].ptype := literal;
     831      RPCBrokerV.Call;
     832      RPCResult := RPCBrokerV.Results[0];    //returns:  error: -1;  success=1
     833      if RPCResult='-1' then begin
     834        MessageDlg('Unable to set status for scanned document to SIGNED',mtError,[mbOK],0);
     835      end;     
     836      UploadNote.TIUIEN := 0;
     837    end; 
     838    UploadNote.Clear;
     839  end;
     840
     841
     842  function TUploadForm.ProcessOneLine(Line : string) : string;
     843  //Returns: if success, '';  if failure, returns reason
     844
     845  //format of line is as follows:
     846  //ChartNum^Location^FName^LName^MName^Sex^DOB^DOS^Provider^Title^FilePath(s)
     847  //NOTE: To provide patient IEN instead of FName etc, use this format:
     848  //      ^Location^^`1234567^^^^DOS^Provider^Title^FilePath(s)
     849  //      i.e. `IEN  (note ` is not an appostrophy ('))
     850  //      `IEN in place of LName, and leave blank: ChartNum,FName,FName,Sex,DOB
     851   
     852  var
     853    ChartNum,FName,LName,MName,Sex,DOB  : String;
     854    DOS,Provider,Title : String;
     855    ThisNote : TAutoUploadNote;
     856    FilePaths : TStringList;
     857    i : integer;
     858    Location : string;
     859   
     860  begin
     861    Result := '';  //default to success for function
     862    ThisNote := TAutoUploadNote.Create;
     863    FilePaths := TStringList.Create();
     864    DecodeImgTxt(Line, ChartNum, Location, FName, LName, MName, Sex, DOB, DOS, Provider, Title, FilePaths);
     865     
     866    ThisNote.SetDFN(ChartNum,Location,FName,LName,MName,DOB,Sex);
     867    ThisNote.SetInfo(DOS,Provider,Location,Title);
     868    if Pos('//Failed',Line)>0 then ThisNote.UploadError := true;
     869    if ThisNote.IsValid then begin  //A note can be 'Valid' and still have an 'UploadError'
     870      if ThisNote.SameAs(AutoUploadNote)= false then begin
     871        ThisNote.TIUIEN := AutoUploadNote.TIUIEN;
     872        FinishDocument(AutoUploadNote);  // Close and clear any existing note
     873        AutoUploadNote.InitFrom(ThisNote);
     874        Result := AutoUploadNote.ErrMsg; //'' if no error
     875      end; 
     876      if ThisNote.UploadError then AutoUploadNote.UploadError := true;
     877      if (AutoUploadNote.UploadError=false) then for i := 0 to FilePaths.Count-1 do begin
     878        AutoUploadNote.ImageInfo.pLongDesc := nil;
     879        //Load up info record with data for upload
     880        AutoUploadNote.ImageInfo.ShortDesc := 'Scanned document';
     881        AutoUploadNote.ImageInfo.UploadDUZ := User.DUZ;
     882        AutoUploadNote.ImageInfo.ObjectType := 1; //type 1 is Still Image (jpg).  OK to use with .bmp??
     883        AutoUploadNote.ImageInfo.ProcName := 'Scanned'; //max length is 10 characters
     884        AutoUploadNote.ImageInfo.ImageDateTime := DOS;
     885        AutoUploadNote.ImageInfo.TIUIEN := AutoUploadNote.TIUIEN;
     886        AutoUploadNote.ImageInfo.UploadDateTime := 'NOW';
     887        AutoUploadNote.ImageInfo.DFN := AutoUploadNote.Patient.DFN;
     888        AutoUploadNote.ImageInfo.ImageFPathName := FilePaths.Strings[i];
     889        AutoUploadNote.ImageInfo.Extension := ExtractFileExt(AutoUploadNote.ImageInfo.ImageFPathName); //includes '.'
     890        AutoUploadNote.ImageInfo.Extension := MidStr(AutoUploadNote.ImageInfo.Extension,2,17); //remove '.'
     891        if not UploadFile(AutoUploadNote.ImageInfo,true) then begin   //Upload function passes back filename info in Info class
     892          Result := 'ERROR UPLOADING IMAGE FILE';
     893        end;   
     894        AutoUploadNote.CurNoteImages.Add(AutoUploadNote.ImageInfo.ServerFName);
     895      end else begin
     896        If Result='' then Result := '(Error found in earlier file entry in batch)';
     897      end;
     898    end else begin
     899      Result := 'NOTE INFO INVALID (Probably: PATIENT NOT FOUND)';
     900    end;
     901    FilePaths.Free;
     902    ThisNote.Free;
     903  end;
     904
     905 
     906  function TUploadForm.ProcessOneFile(FileName : string) : boolean;
     907  //This will process image(s) indicated in textfile FileName
     908  //After uploading image to server, textfile and specified images are deleted
     909  //Returns Success
     910  //Note: To upload multiple images into one document, one may add multiple
     911  //      lines to the ImgTxt text file.  As long as the info is the same
     912  //      (i.e. same provider, patient, note type, DOS etc) then they
     913  //      will be appended to current note.
     914  //      OR, add multiple image file names to one line.
     915  //        -- the problem with multiple images on one line is that errors
     916  //        can not be reported for just one image.  It will be ONE for any/all
     917  //      OR, if the next file in process-order is still has the same info as
     918  //        the prior file, then it will be appended.
     919  var
     920    Lines : TStringList;
     921    i : integer;
     922    ResultStr : string;
     923    OneLine : string;
     924  begin
     925    Result := true;  //default is Success=true
     926    Lines := TStringList.Create;
     927    Lines.LoadFromFile(FileName);
     928    //FinishDocument(AutoUploadNote);  //will save and clear any old data.
     929    for i := 0 to Lines.Count-1 do begin
     930      OneLine := Lines.Strings[i];
     931      ResultStr := ProcessOneLine(OneLine);  //Even process with //failed markeers (to preserve batches)
     932      if Pos('//Failed',OneLine)> 0 then begin  //If we already have //Failed, don't duplicate another Error Msg
     933        Result := false;  //prevent deletion of file containing //Failed//     
     934      end else begin
     935        if ResultStr <> '' then begin
     936          Lines.Strings[i] := '//Failed: '+ResultStr+'}'+Lines.Strings[i];
     937          Lines.SaveToFile(FileName);
     938          Result := false;
     939        end; 
     940      end;
     941    end;
     942    //Temp, for debugging
     943    //Lines.SaveToFile(ChangeFileExt(FileName,'.imgtxt-bak'));
     944    //end temp   
     945    Lines.free;
     946  end;
     947
     948 
     949  procedure TUploadForm.ScanAndHandleImgTxt;
     950  var
     951    FoundFile : string;
     952    Found : TSearchRec;
     953    FilesList : TStringList;
     954    i         : integer;
     955    result : boolean;
     956  begin
     957    //NOTE: Later I may make this spawn a separate thread, so that
     958    //  user doesn't encounter sudden unresponsiveness of CPRS
     959    //I can use BeginThread, then EndTread
     960    //Issues: ProcessOneFile would probably have to be a function
     961    //  not in a class/object...
     962     
     963    FilesList := TStringList.Create;
     964
     965    //scan for new *.ImgTxt file
     966    //FindFirst may not have correct order, so collect all names and then sort.
     967    if FindFirst(FScanDir+'*.imgtxt',faAnyFile,Found)=0 then repeat
     968      FilesList.Add(FScanDir+Found.Name);
     969    until FindNext(Found) <> 0;   
     970    FindClose(Found); 
     971    FilesList.Sort;  //puts filenames in alphanumeric order
     972
     973    //Now process images in correct order.
     974    for i := 0 to FilesList.Count-1 do begin
     975      FoundFile := FilesList.Strings[i];
     976      if ProcessOneFile(FoundFile) = true then begin  {process *.imgtxt file}
     977        DeleteFile(FoundFile);
     978        FoundFile := ChangeFileExt(FoundFile,'.barcode.txt');
     979        DeleteFile(FoundFile);
     980      end; //Note: it is OK to continue, to get other non-error notes afterwards.
     981    end;
     982    FinishDocument(AutoUploadNote);  // Close and clear any existing note
     983    FilesList.Free
     984  end;
     985
     986 
     987  procedure TUploadForm.ScanAndHandleImages;
     988  (*  Overview of mechanism of action of automatically uploading images.
     989      =================================================================
     990    -- For an image to be uploaded, it must first be positively identified. 
     991       This can occur 1 of two ways:
     992         -- the image contains a datamatrix barcode.
     993         -- the image is part of a batch, and the first image of the batch
     994            contains a barcode for the entire batch.
     995    -- At our site, the scanner program automatically names the files numerically
     996       so that sorting on the name will put them in proper order when working
     997       with batches.
     998    -- The decoding of the barcode requires a special program.  I was not
     999       able to find a way to run this on the Windows client.  I found the
     1000       libdmtx that does this automatically.  It currently is on unix only.
     1001       It was too complicated for me to compile it for windows.  I initially
     1002       wanted everything to run through the RPC broker.  This involved
     1003       uploading the image to the linux server, running the decoder on the
     1004       server, then passing the result back.  The code for this is still avail
     1005       in this CPRS code.  However, the process was too slow and I had to
     1006       come up with something faster.  So the following arrangement was setup
     1007        -- scanned images are stored in a folder that was shared by both the
     1008           windows network (and thus is available to CPRS), and the linux server.
     1009        -- At our site, we used a copier/scanner unit that created only TIFF
     1010           files.  These are not the needed format for the barcode decoder, so...
     1011        -- a cron job runs on the linux server that converts the .tif files
     1012           to .png.  Here is that script:
     1013             <removed due to frequent changes...>
     1014           ---------------------------------
     1015        -- Next the .png files must be checked for a barcode.  Another cron
     1016           task scans a directory for .png files and creates a metafile for
     1017           the file giving its barcode reading, or a marker that there is
     1018           no barcode available for that image.  The file name format is:
     1019           *.barcode.txt, with the * coorelating to filename of the image.
     1020           -- The decoding process can take some time (up to several minutes
     1021              per image.
     1022           -- A flag file named barcodeRead.working.txt is created when the
     1023              script is run, and deleted when done.  So if this file is present
     1024              then the decoding process is not complete.
     1025           -- if a *.barcode.txt file is present, then no attempts will be made
     1026              to decode the image a second time.
     1027           -- CPRS still contains code to upload an image to look for a barcode.
     1028              At this site, only png's will contain barcodes, so I have commented
     1029              out support for automatically uploading other file formats.
     1030           -- Here is the unix bash script that decodes the barcodes.  It is
     1031              launched by cron:
     1032           ---------------------------------
     1033             <removed due to frequent changes...>
     1034           ---------------------------------
     1035    -- After the *.png images are available, and no flag files are present
     1036       to indicate that the server is working with the files, then the images
     1037       are processed, using the barcode metafiles.  This is triggered by a
     1038       timer in CPRS.  It essentially converts imagename + barcode data -->
     1039       --> *.imgtxt.
     1040    -- For each *.png image, there will be a *.imgtxt metafile created.  This
     1041       will contain information needed by the server, in a special format for
     1042       the RPC calls.  When an *.imgtxt file is present, this is a flag that
     1043       the image is ready to be uploaded.
     1044    -- A timer in CPRS scans for *.imgtxt files.  When found, it uploads the
     1045       image to the server and creates a container progress note for displaying
     1046       it in CPRS.
     1047 *)
     1048 
     1049    procedure ScanOneImageType(ImageType : string);
     1050    //Scan directory for all instances of images of type ImageType
     1051    //For each one, create a metadata file (if not already present)
     1052
     1053    //Note: Batch mode only works for a batch of file ALL OF THE SAME TYPE.
     1054    //I.e. There can't be a batch of .jpg, then .gif, then .bmp.  This is
     1055    //because a scanner, if it is scanning a stack of documents for a given
     1056    //patient will produce all files in the same ImageType
     1057
     1058      function DeltaMins(CurrentTime,PriorTime : TDateTime) : integer;
     1059        //Return ABSOLUTE difference in minutes between Current <--> Prior.
     1060        //NOTE: if value is > 1440, then 1440 is returned
     1061      var DeltaDays,FracDays : double; 
     1062      begin
     1063        DeltaDays := abs(CurrentTime-PriorTime);
     1064        FracDays := DeltaDays - Round(DeltaDays);
     1065        if DeltaDays>1 then FracDays := 1;
     1066        Result := Round((60*24)*FracDays);
     1067      end;
     1068
     1069    var
     1070      FoundFile : string;
     1071      MetaFilename : string;
     1072      Found : TSearchRec;
     1073      BarCodeData : AnsiString;
     1074      DFN,DOS,AuthIEN,LocIEN,NoteTypeIEN : string;
     1075      OneLine : string;
     1076      FilePaths : TStringList;
     1077      AllFiles : TStringList;
     1078      OutFileLines : TStringList;
     1079      BatchS : string;
     1080      tempCount : integer;
     1081      BatchFInfo : TFileInfo;
     1082      LastFileTimeStamp,CurFileTimeStamp : TDateTime;
     1083      DeltaMinutes : integer;
     1084      pFInfo : TFileInfo;
     1085      i : integer;
     1086    Label AbortPoint;     
     1087
     1088    const
     1089      ALLOWED_TIME_GAP = 2;  //time in minutes
     1090
     1091    begin   
     1092      FilePaths := TStringList.Create;
     1093      OutFileLines := TStringList.Create;
     1094      AllFiles := TStringList.Create;
     1095      BatchFInfo := TFileInfo.Create;
     1096     
     1097      //NOTE: Later I may make this spawn a separate thread, so that
     1098      //  user doesn't encounter sudden unresponsiveness of CPRS
     1099      //I can use BeginThread, then EndTread
     1100      //Issues: ProcessOneFile would probably have to be a function
     1101      //  not in a class/object...
     1102
     1103      //scan for all instances *.ImageType Image file
     1104      //Store info for processesing after loop
     1105      //Do this as a separate step, so files can be processed in proper order
     1106      if FindFirst(FScanDir+'*.'+ImageType,faAnyFile,Found)=0 then repeat
     1107        FoundFile := FScanDir+Found.Name;
     1108        if FileExists(ChangeFileExt(FoundFile,'.imgtxt')) then continue;
     1109        MetaFilename := ChangeFileExt(FoundFile,'.barcode.txt');
     1110        pFInfo := TFileInfo.Create;  //will be owned by AllFiles
     1111        pFInfo.MetaFileName := MetaFilename;
     1112        pFInfo.FPath := FoundFile;
     1113        pFInfo.SrcRec := Found;
     1114        pFInfo.STimeStamp := FloatToStr(FileDateToDateTime(Found.Time));
     1115        pFInfo.MetaFileExists := FileExists(MetaFilename);
     1116        pFInfo.SBarCode := '';  //default to empty.
     1117        pFInfo.BatchCount := 0;       
     1118        if pFInfo.MetaFileExists = false then begin
     1119          //Call server via RPC to decode Barcode
     1120          //This is too slow and buggy.  Will remove for now...
     1121          //BarCodeData := frmImages.DecodeBarcode(FoundFile,ImageType);
     1122          //pFInfo.SBarCode := BarCodeData;
     1123          pFInfo.SBarCode := '';
     1124          //Here I could optionally create a Metafile for processing below.
     1125        end;
     1126        if pFInfo.MetaFileExists then begin  //Retest in case RPC changed status.
     1127          if FileExists(FScanDir+'barcodeRead.working.txt') then goto AbortPoint;
     1128          OutFileLines.LoadFromFile(pFInfo.MetaFileName);
     1129          if OutFileLines.Count>0 then begin
     1130            pFInfo.SBarCode := OutFileLines.Strings[0];
     1131            //convert 'No Barcode message into an empty string, to match existing code.           
     1132            if Pos('//',pFInfo.SBarCode)=1 then pFInfo.SBarCode := ''; 
     1133            if NumPieces(pFInfo.SBarCode,'-') <> 8 then pFInfo.SBarCode := ''; 
     1134          end else begin
     1135            pFInfo.MetaFileExists := false;  //set empty file to Non-existence status
     1136          end;
     1137        end;
     1138        AllFiles.AddObject(pFInfo.FPath,pFInfo);  //Store filename, to allow sorting on this.
     1139      until FindNext(Found) <> 0;   
     1140      AllFiles.Sort; // Sort on timestamp --> put in ascending alpha filename order
     1141
     1142      //-------- Now, process files in name order ------------
     1143      LastFileTimeStamp := 0;
     1144      BatchFInfo.BatchCount := 0;
     1145      for i := 0 to AllFiles.Count-1 do begin
     1146        pFInfo := TFileInfo(AllFiles.Objects[i]);
     1147        if pFInfo.MetaFileExists = false then continue;
     1148        CurFileTimeStamp := FileDateToDateTime(pFInfo.SrcRec.Time);
     1149        DeltaMinutes := DeltaMins(CurFileTimeStamp,LastFileTimeStamp);
     1150        // *.barcode.txt file exists at this point
     1151        if pFInfo.SBarCode <> '' then begin  //Found a new barcode
     1152          LastFileTimeStamp := CurFileTimeStamp;
     1153          //Note: The expected format of barcode must be same as that
     1154          //      created by TfrmPtLabelPrint.PrintButtonClick:
     1155          //      70685-12-31-2008-73-6-1302-0
     1156          //      PtIEN-DateOfService-AuthorIEN-LocIEN-NoteTypeIEN-BatchFlag
     1157          //      THUS there should be 8 pieces in the string.       
     1158          DFN := piece(pFInfo.SBarCode,'-',1);
     1159          DOS := pieces(pFInfo.SBarCode,'-',2,4);
     1160          AuthIEN := piece(pFInfo.SBarCode,'-',5);
     1161          LocIEN := piece(pFInfo.SBarCode,'-',6);
     1162          NoteTypeIEN := piece(pFInfo.SBarCode,'-',7);
     1163          BatchS := piece(pFInfo.SBarCode,'-',8);
     1164          if BatchS = '*' then begin
     1165            pFInfo.BatchCount := 9999
     1166          end else begin
     1167            try
     1168              pFInfo.BatchCount := StrToInt(BatchS);
     1169            except
     1170              on E:EConvertError do begin
     1171                pFInfo.BatchCount := 1;
     1172              end;
     1173            end;
     1174          end;
     1175          //BatchFInfo.SBarCode := pFInfo.SBarCode;
     1176        end else if (BatchFInfo.BatchCount > 0) then begin
     1177          if (DeltaMinutes > ALLOWED_TIME_GAP) then begin
     1178            pFInfo.Clear;
     1179            BatchFInfo.Clear;
     1180          end else begin
     1181            //Apply barcode from last image onto this one (from same batch)
     1182            pFInfo.SBarCode := BatchFInfo.SBarCode; 
     1183          end;
     1184        end;
     1185        if pFInfo.SBarCode <> '' then begin
     1186          //Success --> write out ImgTxt file...
     1187          FilePaths.Add(pFInfo.FPath);
     1188          OneLine := EncodeImgTxt('', '`'+LocIEN,'', '`'+DFN, '', '', '',
     1189                                  DOS,'`'+AuthIEN, '`'+NoteTypeIEN, FilePaths);
     1190          if pFInfo.BatchCount>0 then begin
     1191            //A BATCH marker has been found on current barcode.  This means that
     1192            //Batchmode should be turned on.  This will apply current barcode
     1193            //data to any subsequent images, providing there is not a gap in
     1194            //time > ALLOWED_TIME_GAP
     1195            BatchFInfo.Assign(pFInfo);  //reset Batch info to current
     1196          end; 
     1197          //Decrease use count of Batch Info
     1198          Dec(BatchFInfo.BatchCount);
     1199        end else begin
     1200          OneLine := '';
     1201        end;
     1202        OutFileLines.Clear;
     1203        if OneLine <> '' then begin
     1204          OutFileLines.Add(OneLine);                                       
     1205          OutFileLines.SaveToFile(ChangeFileExt(pFInfo.FPath,'.imgtxt'));
     1206        end; 
     1207        FilePaths.Clear;
     1208        OutFileLines.Clear;
     1209        LastFileTimeStamp := CurFileTimeStamp;
     1210      end;
     1211AbortPoint:
     1212      FindClose(Found); 
     1213      BatchFInfo.Free;
     1214      FilePaths.Free;
     1215      for i := 0 to AllFiles.Count-1 do begin  //free owned objects
     1216        pFInfo := TFileInfo(AllFiles.Objects[i]);
     1217        pFInfo.Free;
     1218      end;
     1219      AllFiles.Free;
     1220      OutFileLines.Free;
     1221    end;
     1222
     1223  var flag1Filename,flag2Filename : string;
     1224  begin
     1225    flag1Filename := FScanDir+'barcodeRead.working.txt';
     1226    flag2Filename := FScanDir+'convertTif2Png.working.txt';
     1227    //if linux server is in middle of a conversion or barcode decode, then skip.
     1228    if (FileExists(flag1Filename)=false) and (FileExists(flag2Filename)=false) then begin
     1229      (* Remove {}'s to be able to have jpg's etc that contain barcodes
     1230        In our site, only png's will have barcodes, and thus these are the
     1231        only images that can be uploaded automatically.  Uploading jpg's, bmp's
     1232        etc to look for (nonexistent) barcodes will just waste time and bandwidth. *)
     1233      {
     1234      ScanOneImageType('jpg');
     1235      ScanOneImageType('jpeg');
     1236      ScanOneImageType('gif');
     1237      ScanOneImageType('bmp');
     1238      }
     1239      //ScanOneImageType('tif');   {Tiff was not showing up in IE for some reason}
     1240      //ScanOneImageType('tiff');  {Tiff was not showing up in IE for some reason}
     1241      ScanOneImageType('png');
     1242    end;
     1243  end;
     1244
     1245  procedure TUploadForm.PolTimerTimer(Sender: TObject);
     1246  begin
     1247    PolTimer.Enabled := false;
     1248    try
     1249      if Assigned(frmImages) and frmImages.AutoScanUpload.Checked then begin
     1250        ScanAndHandleImages;  //create metadata for images (if not done already)
     1251        ScanAndHandleImgTxt;  //process upload file, based on metadata
     1252      end;
     1253    finally
     1254      PolTimer.Enabled := true;
     1255      PolTimer.Interval := PolInterval;
     1256    end;
     1257  end;
     1258
     1259
     1260
    4141261end.
  • cprs/branches/tmg-cprs/CPRS-Chart/fFrame.dfm

    r667 r729  
    11object frmFrame: TfrmFrame
    2   Left = 164
    3   Top = 193
     2  Left = 1140
     3  Top = 281
    44  Width = 684
    55  Height = 487
     
    756756        OnClick = mnuFilePrintClick
    757757      end
     758      object PrintLabels1: TMenuItem
     759        Caption = 'Print Labels...'
     760        OnClick = PrintLabels1Click
     761      end
    758762      object mnuFileExit: TMenuItem
    759763        Caption = 'E&xit'
     
    10561060    Top = 66
    10571061    LangData = {
    1058       080066726D4672616D65010100000001000000070043617074696F6E01740000
     1062      080066726D4672616D65010100000001000000070043617074696F6E01750000
    10591063      001400706E6C4E6F50617469656E7453656C6563746564010100000002000000
    10601064      070043617074696F6E001200706E6C50617469656E7453656C65637465640000
     
    11581162      65727452656E6577010100000059000000070043617074696F6E000900417070
    11591163      4576656E7473000010004564697444656D6F677261706869637301010000005A
    1160       000000070043617074696F6E00}
     1164      000000070043617074696F6E000C005072696E744C6162656C73310101000000
     1165      5B000000070043617074696F6E00}
    11611166  end
    11621167end
  • cprs/branches/tmg-cprs/CPRS-Chart/fFrame.pas

    r694 r729  
    143143    DKLanguageController1: TDKLanguageController;
    144144    EditDemographics: TMenuItem;
     145    PrintLabels1: TMenuItem;
    145146    procedure tabPageChange(Sender: TObject);
    146147    procedure FormCreate(Sender: TObject);
     
    231232      Shift: TShiftState; X, Y: Integer);
    232233    procedure pnlFlagClick(Sender: TObject);
     234    procedure mnuViewDemoClick(Sender: TObject);
    233235    procedure mnuFilePrintSelectedItemsClick(Sender: TObject);
    234236    procedure mnuAlertRenewClick(Sender: TObject);
     
    255257    procedure tabPageDrawTab(Control: TCustomTabControl; TabIndex: Integer;
    256258      const Rect: TRect; Active: Boolean);
     259    procedure PrintLabels1Click(Sender: TObject);
    257260  private
    258261    //kt Begin Mod (change Consts to Vars) 7/17/2007
     
    324327    procedure ClearPatient;
    325328    procedure ChangeFont(NewFontSize: Integer);
    326     procedure LoadTabColors(INIFile : TIniFile; ColorsList : TStringList);  //kt added 8/8/08
    327     procedure SaveTabColors(INIFile : TIniFile; ColorsList : TStringList);
     329    procedure LoadTabColors(ColorsList : TStringList);  //kt added 8/8/08
     330    procedure SaveTabColors(ColorsList : TStringList);
    328331    //procedure CreateTab(var AnInstance: TObject; AClass: TClass; ATabID: integer; ALabel: string);
    329332    procedure CreateTab(ATabID: integer; ALabel: string);
     
    407410  frmFrame: TfrmFrame;
    408411  uTabList: TStringList;
    409   uTabColorsList : TStringList;  //kt added 8/8/08
    410   uTabColorsEnabled : Boolean;   //kt 8/09
     412  TabColorsList : TStringList;  //kt added 8/8/08
     413  TabColorsEnabled : Boolean;   //kt 8/09
    411414  uRemoteType : string;
    412415  FlaggedPTList: TStringList;
     
    440443  fAlertForward, UBAGlobals, fBAOptionsDiagnoses, UBACore, fOrdersSign, uVitals, fOrdersRenew, uFormMonitor,
    441444  fImages    //kt 8/19/05
     445  , uTMGOptions //kt 2/10/10
    442446  {$IFDEF CCOWBROKER}
    443447  , CCOW_const
    444448  {$ENDIF}
    445449  , fPtDemoEdit
    446   , fOptionsOther;
     450  , fOptionsOther, fPtLabelPrint;
    447451
    448452var                                 //  RV 05/11/04
     
    747751  tempS : string; //kt
    748752  i : integer;  //kt added 6/29/07
    749   CPRSChartINI: TINIFile;  //elh 6/23/08
    750753  tempPosition : TTabPosition; //kt
    751754begin
     
    831834  Application.OnDeActivate := AppDeActivated;
    832835
     836  User := TUser.Create;
     837
    833838  // load language ini settings   //elh added
    834   CPRSChartINI := TINIFile.Create(ExtractFilePath(ParamStr(0)) + 'CPRSChart.ini');  // Read from INI  elh  6/23/08
    835   LangManager.LanguageID := CPRSChartINI.ReadInteger('Options','Language',1033);
    836   tempPosition := TTabPosition(CPRSChartINI.ReadInteger('TAB_POSITION','Tab Location',0));
     839  LangManager.LanguageID := uTMGOptions.ReadInteger('Language',1033);
     840  tempPosition := TTabPosition(uTMGOptions.ReadInteger('Tab Location',0));
    837841  if tempPosition > tpRight then tempPosition := tpBottom;
    838842  fOptionsOther.SetTabPosition(tempPosition);
     
    841845  {$ENDIF}
    842846  SkinChanged := false;
    843   SkinAtStartup := CPRSChartINI.ReadBool('Skin','Load At Startup',false);
    844   CurrentSkinFile := CPRSChartINI.ReadString('Skin','Default Skin','TMG_Extra\Skins\ICQ_Longhorn_v.1.2.ipz');
     847  SkinAtStartup := uTMGOptions.ReadBool('Load Skin At Startup',false);
     848  CurrentSkinFile := uTMGOptions.ReadString('Default Skin','TMG_Extra\Skins\ICQ_Longhorn_v.1.2.ipz');
    845849  if SkinAtStartup then ActivateCurrentSkin;
    846850  //kt -- end mod --
     
    851855  // create initial core objects
    852856  FCreateProgress := FCP_OBJECTS;
    853   User := TUser.Create;
     857  //User := TUser.Create;  moved elh 2/12/10
    854858
    855859  // make sure we're using the matching server version
     
    937941  RemoteReports := TRemoteReportList.Create;
    938942  uTabList := TStringList.Create;
    939   uTabColorsList := TStringList.Create;  //kt added 8/8/08
     943  TabColorsList := TStringList.Create;  //kt added 8/8/08
    940944  FlaggedPTList := TStringList.Create;
    941945  HasFlag  := False;
     
    970974  //kt original line --> CreateTab(CT_COVER,    'Cover Sheet');
    971975
     976  //kt original line --> CreateTab(CT_IMAGES,   'Images');
     977  CreateTab(CT_IMAGES, DKLangConstW('fFrame_Images'));    //kt
     978  SetATabVisibility(CT_IMAGES, uTMGOptions.ReadBool('EnableImages',false));
     979
    972980  for i := CT_WEBTAB1 to CT_LAST_WEBTAB do begin
    973981    CreateTab(i, IntToStr(i-CT_WEBTAB1+1));  //kt
    974982    SetATabVisibility(i, false); //kt hide until activated by RPC
    975983  end;
    976   //kt replace later... CreateTab(CT_IMAGES,   'Images');   //kt  8/19/05
    977   LoadTabColors(CPRSChartINI,uTabColorsList);  //kt added 8/8/08
    978   TabPage.OwnerDraw := uTabColorsEnabled;
     984
     985  LoadTabColors(TabColorsList);  //kt added 8/8/08
     986  TabPage.OwnerDraw := TabColorsEnabled;
    979987  ShowHideChartTabMenus(mnuViewChart);
    980988  //  We defer calling LoadUserPreferences to UMInitiate, so that the font sizing
     
    10131021//  if WindowState = wsMinimized then WindowState := wsNormal;
    10141022  SetFormMonitoring(true);
    1015   CPRSChartINI.Free;  //kt added 8/8/08
    10161023end;
    10171024
     
    12261233procedure TfrmFrame.FormDestroy(Sender: TObject);
    12271234{ free core objects used by CPRS }
    1228 var
    1229   CPRSChartINI: TINIFile;  //kt 8/8/08
    1230 
    12311235begin
    12321236  Application.OnActivate := FOldActivate;
     
    12351239  uTabList.Free;
    12361240  //kt --- 8/8/08 start mod ---
    1237   CPRSChartINI := TINIFile.Create(ExtractFilePath(ParamStr(0)) + 'CPRSChart.ini');
    1238   CPRSChartINI.WriteInteger('Options','Language',LangManager.LanguageID);
    1239   SaveTabColors(CPRSChartINI,uTabColorsList);
    1240   uTabColorsList.Free;
    1241   CPRSChartINI.WriteInteger('TAB_POSITION','Tab Location',integer(tabPage.TabPosition));
    1242   CPRSChartINI.WriteBool('Skin','Load At Startup',SkinAtStartup);  //kt 9/11/08
     1241  //kt uTMGOptions.WriteInteger('Language',LangManager.LanguageID);
     1242  //ktSaveTabColors(TabColorsList);
     1243  TabColorsList.Free;
     1244  //kt uTMGOptions.WriteInteger('Tab Location',integer(tabPage.TabPosition));
     1245  //kt uTMGOptions.WriteBool('Load Skin At Startup',SkinAtStartup);  //kt 9/11/08
    12431246  //kt --- end mod ---
    12441247
     
    15681571    //kt -- start addition
    15691572    //below taken out 6/29/07 to achieve compile.  Fix later...
    1570     //if NewForm.Name = frmImages.Name then frmImages.Align := alClient
    1571     //  else frmImages.Align := alNone;
     1573    if Assigned (frmImages) and (NewForm.Name = frmImages.Name) then begin
     1574      frmImages.Align := alClient;
     1575    end else begin
     1576      frmImages.Align := alNone;
     1577    end;
    15721578    //kt -- end addition
    15731579    NewForm.BringToFront;                    // to cause tab switch to happen immediately
     
    15911597  TabID : integer; //kt added.
    15921598begin
    1593 
    15941599  if (not User.IsReportsOnly) then
    15951600  begin
     
    16091614      CT_REPORTS:  SwitchToPage(frmReports);
    16101615      CT_WEBTAB1..CT_LAST_WEBTAB:  SwitchToPage(frmWebTabs[TabID-CT_WEBTAB1]);  //kt added 8/6/08
    1611       //kt CT_IMAGES:   SwitchToPage(frmImages);     //kt 8/19/05
     1616      CT_IMAGES:   SwitchToPage(frmImages);     //kt 8/19/05
    16121617    end; {case}
    16131618  end
    16141619  else // Reports Only tab.
    16151620    SwitchToPage(frmReports);
    1616 
    16171621end;
    16181622
     
    37963800                    frmWebTabs[ATabID-CT_WEBTAB1] := TempFrmWebTab
    37973801                  end;                                     //kt 6/6/08
    3798 
    3799     { //kt replace later
    3800     CT_IMAGES  : begin                                     //kt 8/19/05
    3801                     frmImages := TfrmImages.Create(Self);  //kt 8/19/05
    3802                     frmImages.Parent := pnlPage;           //kt 8/19/05
    3803                   end;                                     //kt 8/19/05
    3804      }  //kt
     3802    CT_IMAGES  : begin                                     //kt 8/19/05, 3/8/10
     3803                    frmImages := TfrmImages.Create(Self);  //kt 8/19/05, 3/8/10
     3804                    frmImages.Parent := pnlPage;           //kt 8/19/05, 3/8/10
     3805                  end;                                     //kt 8/19/05, 3/8/10
    38053806  else
    38063807    Exit;
     
    38173818      tabPage.Tabs.Add(ALabel);
    38183819    end;
    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  }
    3822 end;
    3823 
    3824 procedure TfrmFrame.LoadTabColors(INIFile : TIniFile; ColorsList : TStringList);
     3820  TabColorsList.Add(IntToStr(ATabID));  //will put colors in later...  //kt
     3821  {if TabColorsList.IndexOf(ALabel) < 0 then                    //kt added 8/8/08
     3822    TabColorsList.Add(ALabel);  //will put colors in later...  //kt  }
     3823end;
     3824
     3825procedure TfrmFrame.LoadTabColors(ColorsList : TStringList);
    38253826//kt added 8/8/08  Entire function
    38263827var i : integer;
    38273828    sValue : string;
    38283829    value : longword;
     3830    DefColor : integer;
     3831const
     3832  DEF_COLORS : array[0..11] of integer =
     3833    (255,
     3834     33023,
     3835     16711935,
     3836     65280,
     3837     65535,
     3838     65535,
     3839     8388736,
     3840     16776960,
     3841     16512,
     3842     65535,
     3843     65535,
     3844     65535 );
    38293845begin
    38303846  value :=0;
    3831   uTabColorsEnabled := INIFile.ReadBool('TAB_COLORS','ENABLE',true);
     3847  TabColorsEnabled := uTMGOptions.ReadBool('TAB_COLORS ENABLE',true);
    38323848  for i := 0 to ColorsList.Count-1 do begin
    3833     //sValue := INIFile.ReadString('TAB_COLORS',ColorsList.Strings[i],IntToStr($00FFFF));
    3834     sValue := INIFile.ReadString('TAB_COLORS','Tab '+IntToStr(i),IntToStr($00FFFF));
     3849    if i <= 11 then DefColor := DEF_COLORS[i]
     3850    else DefColor := ($00FFFF);
     3851    sValue := uTMGOptions.ReadString('Tab '+IntToStr(i)+' Color',inttostr(DefColor));
    38353852    try
    38363853      value := StrToInt(sValue)
     
    38423859end;
    38433860
    3844 procedure TfrmFrame.SaveTabColors(INIFile : TIniFile; ColorsList : TStringList);
     3861procedure TfrmFrame.SaveTabColors(ColorsList : TStringList);
    38453862//kt added 8/8/08  Entire function
    38463863var i : integer;
    38473864begin
    38483865  for i := 0 to ColorsList.Count-1 do begin
    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
     3866    uTMGOptions.WriteInteger('Tab '+IntToStr(i)+' Color',longword(ColorsList.Objects[i]));
     3867  end;
     3868  uTMGOptions.WriteBool('TAB_COLORS ENABLE',TabColorsEnabled); //kt 8/09
    38533869end;
    38543870
     
    40164032procedure TfrmFrame.pnlPatientClick(Sender: TObject);
    40174033begin
    4018   ViewInfo(mnuViewDemo);
     4034  //ViewInfo(mnuViewDemo);
     4035  mnuViewDemoClick(Self);
    40194036end;
    40204037
     
    49774994    color : TColor;
    49784995begin
    4979   if uTabColorsEnabled then begin
     4996  if TabColorsEnabled then begin
    49804997    ALabel := TTabControl(Control).Tabs[TabIndex];
    49814998    {
    4982     colorIndex := uTabColorsList.IndexOf(ALabel);
     4999    colorIndex := TabColorsList.IndexOf(ALabel);
    49835000    if colorIndex < 0 then color := clYellow
    4984     else color := TColor(uTabColorsList.Objects[colorIndex]);
     5001    else color := TColor(TabColorsList.Objects[colorIndex]);
    49855002    }
    4986     color := TColor(uTabColorsList.Objects[TabIndex]);
     5003    color := TColor(TabColorsList.Objects[TabIndex]);
    49875004    DrawTab(Control,TabIndex,Rect,color,Active);
    49885005  end else begin
    49895006    //this isn't working... This is not what I want.  Fix later...
    4990     //For now, uTabColorsEnabled should always be TRUE.
     5007    //For now, TabColorsEnabled should always be TRUE.
    49915008    //Control.Canvas.FillRect(Rect);   //elh   we will try to alter the OwnerDraw property here
    4992     //TabPage.OwnerDraw := uTabColorsEnabled;
     5009    //TabPage.OwnerDraw := TabColorsEnabled;
    49935010  end;
    49945011end;
     
    51085125  end;
    51095126
    5110   initialization
     5127procedure TfrmFrame.PrintLabels1Click(Sender: TObject);
     5128begin
     5129  if frmPtLabelPrint <> nil then begin
     5130    frmPtLabelPrint.PrepDialog(Patient);
     5131    frmPtLabelPrint.ShowModal;
     5132  end;
     5133end;
     5134
     5135procedure TfrmFrame.mnuViewDemoClick(Sender: TObject);
     5136{ displays patient inquiry report (which optionally allows new patient to be selected) }
     5137var
     5138  SelectNew: Boolean;
     5139begin
     5140  StatusText(TX_PTINQ);
     5141  PatientInquiry(SelectNew);
     5142  if Assigned(FLastPage) then
     5143    FLastPage.FocusFirstControl;
     5144  StatusText('');
     5145  if SelectNew then mnuFileOpenClick(mnuViewDemo);
     5146end;
     5147
     5148initialization
    51115149
    51125150finalization
  • cprs/branches/tmg-cprs/CPRS-Chart/fImages.dfm

    r453 r729  
    11inherited frmImages: TfrmImages
    2   Left = 160
    3   Top = 70
    4   Width = 711
    5   Height = 528
     2  Left = 228
     3  Top = 119
     4  Width = 781
     5  Height = 565
    66  HelpContext = 5000
    77  Caption = 'Images Page'
     
    1414  TextHeight = 13
    1515  inherited shpPageBottom: TShape
    16     Top = 469
    17     Width = 703
     16    Top = 506
     17    Width = 773
    1818  end
    19   object Splitter1: TSplitter [1]
     19  object HorizSplitter: TSplitter [1]
    2020    Left = 0
    2121    Top = 77
    22     Width = 703
     22    Width = 773
    2323    Height = 3
    2424    Cursor = crVSplit
    25     Align = alBottom
     25    Align = alTop
    2626    MinSize = 1
    2727  end
    28   object Panel1: TPanel [2]
     28  object pnlTop: TPanel [2]
    2929    Left = 0
    3030    Top = 0
    31     Width = 703
     31    Width = 773
    3232    Height = 77
    33     Align = alClient
     33    Align = alTop
    3434    BevelOuter = bvNone
    3535    TabOrder = 0
    3636    object ButtonPanel: TPanel
    37       Left = 530
     37      Left = 600
    3838      Top = 0
    3939      Width = 173
     
    5252        Anchors = [akTop, akRight]
    5353        Caption = 'Upload Images'
     54        Enabled = False
    5455        TabOrder = 0
    5556        OnClick = UploadImagesButtonClick
     
    278279      Left = 0
    279280      Top = 0
    280       Width = 530
     281      Width = 600
    281282      Height = 77
    282283      Align = alClient
     
    303304        Left = 241
    304305        Top = 0
    305         Width = 289
     306        Width = 359
    306307        Height = 77
    307308        Align = alClient
     
    318319    end
    319320  end
    320   object Panel2: TPanel [3]
     321  object pnlBottom: TPanel [3]
    321322    Left = 0
    322323    Top = 80
    323     Width = 703
    324     Height = 389
    325     Align = alBottom
    326     Anchors = [akLeft, akTop, akRight, akBottom]
     324    Width = 773
     325    Height = 426
     326    Align = alClient
    327327    BevelOuter = bvNone
    328328    TabOrder = 1
     
    331331      Top = 0
    332332      Width = 80
    333       Height = 389
     333      Height = 426
    334334      Align = alLeft
    335335      Images = ThumbsImageList
     
    347347      Left = 80
    348348      Top = 0
    349       Width = 623
    350       Height = 389
     349      Width = 693
     350      Height = 426
    351351      Align = alClient
    352352      TabOrder = 1
    353353      ControlData = {
    354         4C00000064400000342800000000000000000000000000000000000000000000
     354        4C000000A0470000072C00000000000000000000000000000000000000000000
    355355        000000004C000000000000000000000001000000E0D057007335CF11AE690800
    356356        2B2E126208000000000000004C0000000114020000000000C000000000000046
     
    362362    LangData = {
    363363      090066726D496D61676573010200000001000000070043617074696F6E020000
    364       00080048656C7046696C6501220000000D0073687050616765426F74746F6D00
    365       00090053706C6974746572310000060050616E656C3100000B00427574746F6E
    366       50616E656C0000120055706C6F6164496D61676573427574746F6E0101000000
    367       03000000070043617074696F6E000A004D656D6F7350616E656C000009005370
    368       6C6974746572320000100043757272656E74496D6167654D656D6F00000F0043
    369       757272656E744E6F74654D656D6F0000060050616E656C3200000A0054616243
    370       6F6E74726F6C00000A0057656242726F77736572000008006D6E754E6F746573
    371       000007006D6E7556696577010100000004000000070043617074696F6E000C00
    372       6D6E75566965774368617274010100000005000000070043617074696F6E000D
    373       006D6E754368617274436F766572010100000006000000070043617074696F6E
    374       000D006D6E75436861727450726F627301010000000700000007004361707469
    375       6F6E000C006D6E7543686172744D656473010100000008000000070043617074
    376       696F6E000E006D6E7543686172744F7264657273010100000009000000070043
    377       617074696F6E000D006D6E7543686172744E6F74657301010000000A00000007
    378       0043617074696F6E000D006D6E75436861727443736C747301010000000B0000
    379       00070043617074696F6E000F006D6E7543686172745375726765727901010000
    380       000C000000070043617074696F6E000E006D6E754368617274444353756D6D01
    381       010000000D000000070043617074696F6E000C006D6E7543686172744C616273
    382       01010000000E000000070043617074696F6E000F006D6E754368617274526570
    383       6F72747301010000000F000000070043617074696F6E0002005A3300000D006D
    384       6E7549636F6E4C6567656E64010100000010000000070043617074696F6E0006
    385       006D6E75416374010100000011000000070043617074696F6E00150055706C6F
    386       6164496D616765734D6E75416374696F6E010100000012000000070043617074
    387       696F6E000A006D6E754F7074696F6E7301010000001300000007004361707469
    388       6F6E0002004E3300000D0074696D4C6F6164496D6167657300000F005468756D
    389       6273496D6167654C697374000011004F70656E506963747572654469616C6F67
    390       0001050000000C005069637475726550616E656C00000C00506963747572654C
    391       6162656C00000D0050726576696577427574746F6E0101000000140000000400
    392       48696E74000A005061696E7450616E656C000008005061696E74426F780000}
     364      00080048656C7046696C6501250000000D0073687050616765426F74746F6D00
     365      000D00486F72697A53706C697474657200000600706E6C546F7000000B004275
     366      74746F6E50616E656C0000120055706C6F6164496D61676573427574746F6E01
     367      0100000003000000070043617074696F6E000A004D656D6F7350616E656C0000
     368      090053706C6974746572320000100043757272656E74496D6167654D656D6F00
     369      000F0043757272656E744E6F74654D656D6F00000900706E6C426F74746F6D00
     370      000A00546162436F6E74726F6C00000A0057656242726F77736572000008006D
     371      6E754E6F746573000007006D6E75566965770101000000040000000700436170
     372      74696F6E000C006D6E7556696577436861727401010000000500000007004361
     373      7074696F6E000D006D6E754368617274436F7665720101000000060000000700
     374      43617074696F6E000D006D6E75436861727450726F6273010100000007000000
     375      070043617074696F6E000C006D6E7543686172744D6564730101000000080000
     376      00070043617074696F6E000E006D6E7543686172744F72646572730101000000
     377      09000000070043617074696F6E000D006D6E7543686172744E6F746573010100
     378      00000A000000070043617074696F6E000D006D6E75436861727443736C747301
     379      010000000B000000070043617074696F6E000F006D6E75436861727453757267
     380      65727901010000000C000000070043617074696F6E000E006D6E754368617274
     381      444353756D6D01010000000D000000070043617074696F6E000C006D6E754368
     382      6172744C61627301010000000E000000070043617074696F6E000F006D6E7543
     383      686172745265706F72747301010000000F000000070043617074696F6E000200
     384      5A3300000D006D6E7549636F6E4C6567656E6401010000001000000007004361
     385      7074696F6E0006006D6E75416374010100000011000000070043617074696F6E
     386      00150055706C6F6164496D616765734D6E75416374696F6E0101000000120000
     387      00070043617074696F6E000A006D6E754F7074696F6E73010100000013000000
     388      070043617074696F6E0002004E3300000D0074696D4C6F6164496D6167657300
     389      000F005468756D6273496D6167654C697374000011004F70656E506963747572
     390      654469616C6F670001050000000C005069637475726550616E656C00000C0050
     391      6963747572654C6162656C00000D0050726576696577427574746F6E01010000
     392      0014000000040048696E74000A005061696E7450616E656C000008005061696E
     393      74426F7800000E004175746F5363616E55706C6F616401010000001500000007
     394      0043617074696F6E000E005069636B5363616E466F6C64657201010000001600
     395      0000070043617074696F6E000A004F70656E4469616C6F670000}
    393396  end
    394397  object mnuNotes: TMainMenu
     
    482485      object N3: TMenuItem
    483486        Caption = '-'
     487      end
     488      object AutoScanUpload: TMenuItem
     489        Caption = '&Enable Auto-Scan/Upload'
     490        OnClick = EnableAutoScanUploadClick
     491      end
     492      object PickScanFolder: TMenuItem
     493        Caption = '&Pick Scan Folder'
     494        OnClick = PickScanFolderClick
    484495      end
    485496    end
     
    68456856    Top = 16
    68466857  end
     6858  object OpenDialog: TOpenDialog
     6859    DefaultExt = '*.*'
     6860    Filter = '*.*'
     6861    Options = [ofPathMustExist, ofCreatePrompt, ofEnableSizing]
     6862    Left = 64
     6863    Top = 16
     6864  end
    68476865end
  • cprs/branches/tmg-cprs/CPRS-Chart/fImages.pas

    r612 r729  
    6464    ThumbsImageList: TImageList;
    6565    CurrentNoteMemo: TMemo;
    66     Panel1: TPanel;
    67     Splitter1: TSplitter;
     66    pnlTop: TPanel;
     67    HorizSplitter: TSplitter;
    6868    Splitter2: TSplitter;
    6969    UploadImagesButton: TBitBtn;
     
    7373    MemosPanel: TPanel;
    7474    UploadImagesMnuAction: TMenuItem;
    75     Panel2: TPanel;
     75    pnlBottom: TPanel;
    7676    TabControl: TTabControl;
    7777    WebBrowser: TWebBrowser;
     78    AutoScanUpload: TMenuItem;
     79    PickScanFolder: TMenuItem;
     80    OpenDialog: TOpenDialog;
    7881    procedure mnuChartTabClick(Sender: TObject);
    7982    procedure mnuActNewClick(Sender: TObject);
     
    8992      var ImageIndex: Integer);
    9093    procedure TabControlResize(Sender: TObject);
     94    procedure EnableAutoScanUploadClick(Sender: TObject);
     95    procedure PickScanFolderClick(Sender: TObject);
    9196  private
    9297    ImageInfoList : TList;
     
    9499    CurImageToLoad : integer;
    95100    InTimerFn : Boolean;
     101    DropBoxDir : string;
     102    UseDropBox : boolean;
    96103    procedure EnsureImageListLoaded();
    97104    procedure ClearImageList();
     
    102109    procedure UpdateNoteInfoMemo();
    103110    procedure UpdateImageInfoMemo(Rec: TImageInfo);
     111    function FileSize(fileName : wideString) : Int64;
    104112  public
    105113    CacheDir : AnsiString;
     
    107115    function Decode(input: AnsiString) : AnsiString;
    108116    function Encode(input: AnsiString) : AnsiString;
    109     function DownloadFile(FPath,FName,LocalSaveFNamePath: AnsiString): boolean;
    110     function UploadFile(LocalFNamePath,FPath,FName: AnsiString): boolean;
     117    function DownloadFileViaDropbox(FPath,FName,LocalSaveFNamePath: AnsiString;CurrentImage,TotalImages: Integer): boolean;
     118    function DownloadFile(FPath,FName,LocalSaveFNamePath: AnsiString;CurrentImage,TotalImages: Integer): boolean;
     119    function UploadFileViaDropBox(LocalFNamePath,FPath,FName: AnsiString;CurrentImage,TotalImages: Integer): boolean;
     120    function UploadFile(LocalFNamePath,FPath,FName: AnsiString;CurrentImage,TotalImages: Integer): boolean;
    111121    procedure SplitLinuxFilePath(FullPathName : AnsiString;
    112122                                 var Path : AnsiString;
     
    114124    procedure GetImageList();
    115125    procedure NewNoteSelected(EditIsActive : boolean);
     126    function CreateBarcode(MsgStr: AnsiString; ImageType: AnsiString): AnsiString;
     127    function DecodeBarcode(LocalFNamePath,ImageType: AnsiString): AnsiString;
    116128  published
    117129  end;
     
    134146     mshtml,  {//kt added 5-2-05}
    135147     UploadImages, {//kt added 9/25/05}
    136      UPloadProgress, {//kt 10-1-05}
    137      rHTMLTools, fNotes;  {//kt added 5-27-05 for IsHTMLDocument}
     148     //ImageTransferForm, {//kt 10-1-05}
     149     uTMGOptions,  //kt 3/10/10
     150     rHTMLTools, fNotes, frmImageTransferProgress;  {//kt added 5-27-05 for IsHTMLDocument}
    138151
    139152
     
    146159    if CurImageToLoad <> -1 then begin //-1 means RPC-> no avail images.
    147160      if CurImageToLoad < ImageInfoList.Count then begin
     161        ImageTransferForm.ProgressMsg.Caption := 'Downloading Images';
     162        //if ImageTransferForm.Visible = false then begin
     163        //   ImageTransferForm.Show;
     164        //end;
    148165        DownloadToCache(CurImageToLoad); //Only load 1 image per timer firing.
    149166        SetupTab(CurImageToLoad);
     
    153170      end else begin
    154171        timLoadImages.Enabled := false;
     172        //ImageTransferForm.ProgressBar.Position := 100;
     173        //Sleep(1000);
     174        //ImageTransferForm.Hide;
    155175      end;
    156176    end;
     
    193213  NullImageName := ExtractFilePath(ParamStr(0)) + 'images\blank.htm';
    194214  if not DirectoryExists(CacheDir) then ForceDirectories(CacheDir);
     215
     216  UseDropBox := uTMGOptions.ReadBool('Use dropbox directory for transfers',false);
     217  DropBoxDir := uTMGOptions.ReadString('Dropbox directory','??');
     218  if DropBoxDir='??' then begin  //just on first run.
     219    uTMGOptions.WriteBool('Use dropbox directory for transfers',false);
     220    uTMGOptions.WriteString('Dropbox directory','');
     221  end;
     222  AutoScanUpload.Checked := uTMGOptions.ReadBool('Scan Enabled',false);
    195223end;
    196224
     
    206234var
    207235  TIUIEN : AnsiString;
    208 
     236                                                         
    209237begin
    210238  inherited;
     
    396424  try
    397425    TIUIEN := IntToStr(frmNotes.lstNotes.ItemID);
    398     StatusText('Retrieving images information...');
    399     CallV('MAG3 CPRS TIU NOTE', [TIUIEN]);
    400     for i:=0 to (RPCBrokerV.Results.Count-1) do begin
    401       s :=RPCBrokerV.Results[i];
    402       if i=0 then begin
    403         if piece(s,'^',1)='0' then break //i.e. abort due to error signal
    404         else continue;   //ignore rest of header (record #0)
    405       end;
    406       Rec := TImageInfo.Create; // ImageInfoList will own this.
    407       Rec.LongDesc := nil;
    408       Rec.TabIndex := -1;
    409       Rec.TabImageIndex := 0;
    410       s2 := piece(s,'^',2); if s2='' then s2 := '0'; //IEN
    411       Rec.IEN := StrToInt(s2);
    412       ImageFPathName := piece(s,'^',3);       //Image FullPath and name
    413       ThumbnailFPathName := piece(s,'^',4);   //Abstract FullPath and Name
    414       Rec.ShortDesc := piece(s,'^',5);            //SHORT DESCRIPTION field
    415       s2 := piece(s,'^',6); if s2='' then s2 := '0'; //PROCEDURE/ EXAM DATE/TIME field
    416       Rec.DateTime := s2;
    417       s2 := piece(s,'^',7); if s2='' then s2 := '0';  //OBJECT TYPE
    418       Rec.ImageType := StrToInt(s2);
    419       Rec.ProcName := piece(s,'^',8);                 //PROCEDURE field
    420       Rec.DisplayDate := piece(s,'^',9);              //Procedure Date in Display format
    421       s2 := piece(s,'^',10); if s2='' then s2 := '0'; //PARENT DATA FILE image pointer
    422       Rec.ParentDataFileIEN := StrToInt(s2);
    423       Rec.AbsType := piece(s,'^',11)[1];              //the ABSTYPE :  'M' magnetic 'W' worm  'O' offline
    424       Rec.Accessibility := piece(s,'^',12)[1];        //Image accessibility   'A' accessable  or  'O' offline
    425       s2 := piece(s,'^',13); if s2='' then s2 := '0'; //Dicom Series number
    426       Rec.DicomSeriesNum := StrToInt(s2);
    427       s2 := piece(s,'^',14); if s2='' then s2 := '0'; //Dicom Image Number
    428       Rec.DicomImageNum := StrToInt(s2);
    429       s2 := piece(s,'^',15); if s2='' then s2 := '0'; //Count of images in the group, or 1 if a single image
    430       Rec.GroupCount := StrToInt(s2);
    431 
    432       SplitLinuxFilePath(ImageFPathName,ServerPathName,ServerFName);
    433       Rec.ServerPathName := ServerPathName;
    434       Rec.ServerFName := ServerFName;
    435       Rec.CacheFName := CacheDir + '\' + ServerFName;
    436       SplitLinuxFilePath(ThumbnailFPathName,ServerPathName,ServerFName);
    437       Rec.ServerThumbPathName := ServerPathName;
    438       Rec.ServerThumbFName := ServerFName;
    439       Rec.CacheThumbFName := CacheDir + '\' + ServerFName;
    440       ImageInfoList.Add(Rec);  // ImageInfoList will own Rec.
    441     end;
    442     for i:= 0 to ImageInfoList.Count-1 do begin
    443       Rec := TImageInfo(ImageInfoList.Items[i]);
    444       ImageIEN := Rec.IEN;
    445       CallV('TMG GET IMAGE LONG DESCRIPTION', [ImageIEN]);
    446       for j:=0 to (RPCBrokerV.Results.Count-1) do begin
    447         if (j>0) then begin
    448           if Rec.LongDesc = nil then Rec.LongDesc := TStringList.Create;
    449           Rec.LongDesc.Add(RPCBrokerV.Results.Strings[j]);
    450         end else begin
    451           if RPCBrokerV.Results[j]='' then break;
    452         end;
    453       end;
    454     end;
     426
    455427  except
    456428    //Error occurs after note is signed, and frmNotes.lstNotes.ItemID is "inaccessible"
    457429    on E: Exception do exit;
    458430  end;
     431  //----MOVED
     432  StatusText('Retrieving images information...');
     433  CallV('MAG3 CPRS TIU NOTE', [TIUIEN]);
     434  for i:=0 to (RPCBrokerV.Results.Count-1) do begin
     435    s :=RPCBrokerV.Results[i];
     436    if i=0 then begin
     437      if piece(s,'^',1)='0' then break //i.e. abort due to error signal
     438      else continue;   //ignore rest of header (record #0)
     439    end;
     440    if Pos('-1~',s)>0 then continue;  //abort if error signal.
     441    Rec := TImageInfo.Create; // ImageInfoList will own this.
     442    Rec.LongDesc := nil;
     443    Rec.TabIndex := -1;
     444    Rec.TabImageIndex := 0;
     445    s2 := piece(s,'^',2); if s2='' then s2 := '0'; //IEN
     446    Rec.IEN := StrToInt(s2);
     447    ImageFPathName := piece(s,'^',3);       //Image FullPath and name
     448    ThumbnailFPathName := piece(s,'^',4);   //Abstract FullPath and Name
     449    Rec.ShortDesc := piece(s,'^',5);            //SHORT DESCRIPTION field
     450    s2 := piece(s,'^',6); if s2='' then s2 := '0'; //PROCEDURE/ EXAM DATE/TIME field
     451    Rec.DateTime := s2;
     452    s2 := piece(s,'^',7); if s2='' then s2 := '0';  //OBJECT TYPE
     453    Rec.ImageType := StrToInt(s2);
     454    Rec.ProcName := piece(s,'^',8);                 //PROCEDURE field
     455    Rec.DisplayDate := piece(s,'^',9);              //Procedure Date in Display format
     456    s2 := piece(s,'^',10); if s2='' then s2 := '0'; //PARENT DATA FILE image pointer
     457    Rec.ParentDataFileIEN := StrToInt(s2);
     458    Rec.AbsType := piece(s,'^',11)[1];              //the ABSTYPE :  'M' magnetic 'W' worm  'O' offline
     459    s2 := piece(s,'^',12); if s2='' then s2 :='O';
     460    Rec.Accessibility := s2[1];                     //Image accessibility   'A' accessable  or  'O' offline
     461    s2 := piece(s,'^',13); if s2='' then s2 := '0'; //Dicom Series number
     462    Rec.DicomSeriesNum := StrToInt(s2);
     463    s2 := piece(s,'^',14); if s2='' then s2 := '0'; //Dicom Image Number
     464    Rec.DicomImageNum := StrToInt(s2);
     465    s2 := piece(s,'^',15); if s2='' then s2 := '0'; //Count of images in the group, or 1 if a single image
     466    Rec.GroupCount := StrToInt(s2);
     467
     468    SplitLinuxFilePath(ImageFPathName,ServerPathName,ServerFName);
     469    Rec.ServerPathName := ServerPathName;
     470    Rec.ServerFName := ServerFName;
     471    Rec.CacheFName := CacheDir + '\' + ServerFName;
     472    SplitLinuxFilePath(ThumbnailFPathName,ServerPathName,ServerFName);
     473    Rec.ServerThumbPathName := ServerPathName;
     474    Rec.ServerThumbFName := ServerFName;
     475    Rec.CacheThumbFName := CacheDir + '\' + ServerFName;
     476    ImageInfoList.Add(Rec);  // ImageInfoList will own Rec.
     477  end;
     478  for i:= 0 to ImageInfoList.Count-1 do begin
     479    Rec := TImageInfo(ImageInfoList.Items[i]);
     480    ImageIEN := Rec.IEN;
     481    CallV('TMG GET IMAGE LONG DESCRIPTION', [ImageIEN]);
     482    for j:=0 to (RPCBrokerV.Results.Count-1) do begin
     483      if (j>0) then begin
     484        if Rec.LongDesc = nil then Rec.LongDesc := TStringList.Create;
     485        Rec.LongDesc.Add(RPCBrokerV.Results.Strings[j]);
     486      end else begin
     487        if RPCBrokerV.Results[j]='' then break;
     488      end;
     489    end;
     490  end;
     491   //----END MOVED
    459492  StatusText('');
    460493end;
     
    473506  ServerPathName := Rec.ServerPathName;
    474507  if not FileExists(Rec.CacheFName) then begin
    475     DownloadFile(ServerPathName,ServerFName,Rec.CacheFName);
     508    DownloadFile(ServerPathName,ServerFName,Rec.CacheFName,(ImageIndex*2)-1,ImageInfoList.Count*2);
    476509  end;
    477510  ServerFName := Rec.ServerThumbFName;
    478511  ServerPathName := Rec.ServerThumbPathName;
    479512  if not FileExists(Rec.CacheThumbFName) then begin
    480     DownloadFile(ServerPathName,ServerFName,Rec.CacheThumbFName);
     513    DownloadFile(ServerPathName,ServerFName,Rec.CacheThumbFName,ImageIndex*2,ImageInfoList.Count*2);
    481514  end;
    482515  Application.ProcessMessages;
     
    502535
    503536
    504 function TfrmImages.UploadFile(LocalFNamePath,FPath,FName: AnsiString): boolean;
     537function TfrmImages.UploadFileViaDropBox(LocalFNamePath,FPath,FName: AnsiString;CurrentImage,TotalImages: Integer): boolean;
     538var
     539  DropboxFile : AnsiString;
     540begin
     541  //First copy LocalFileNamePath --> DropBox\FileName
     542  DropboxFile := ExcludeTrailingBackslash(DropboxDir) + '\' + FName;
     543  if CopyFile(pchar(LocalFNamePath),pchar(DropboxFile),false)=false then begin
     544    MessageDlg('Dropbox file transfer failed.  Code='+InttoStr(GetLastError),
     545               mtError,[mbOK],0);
     546    result := false;
     547    exit;
     548  end;
     549
     550  // CallV('TMG UPLOAD FILE DROPBOX', ...);
     551  RPCBrokerV.ClearParameters := true;
     552  RPCBrokerV.remoteprocedure := 'TMG UPLOAD FILE DROPBOX';
     553  RPCBrokerV.param[0].PType := literal;
     554  RPCBrokerV.param[0].Value := FPath;
     555  RPCBrokerV.Param[1].PType := literal;
     556  RPCBrokerV.Param[1].Value := FName;
     557  RPCBrokerV.Param[2].PType := literal;
     558  RPCBrokerV.Param[2].Value := '1'; //see comments in UploadFile re '1' hardcoding
     559
     560  RPCBrokerV.Call;  //Move file into dropbox.
     561  Result := (Piece(RPCBrokerV.Results[0],'^',1)='1');  //1=success, 0=failure
     562end;
     563
     564
     565function TfrmImages.UploadFile(LocalFNamePath,FPath,FName: AnsiString;CurrentImage,TotalImages: Integer): boolean;
    505566const
    506567  RefreshInterval = 500;
     
    523584  result := false;  //default of failure
    524585  if not FileExists(LocalFNamePath) then exit;
     586  if UseDropBox then begin
     587    Result := UploadFileViaDropBox(LocalFNamePath,FPath,FName,CurrentImage,TotalImages);
     588    exit;
     589  end;
    525590  try
    526591    InFile := TFileStream.Create(LocalFNamePath,fmOpenRead or fmShareCompat);
     
    529594    // the RPC call, and I can't make a progress bar change during that...
    530595    // (or I could, but I'm not going to change the RPC broker...)
    531     UploadProgressForm.setMax(InFile.Size);
    532     //UploadProgressForm.ResetStartTime;
    533     UploadProgressForm.ProgressMsg.Caption := 'Prepairing to upload...';
    534     UploadProgressForm.Show;
     596    ImageTransferForm.setMax(InFile.Size);
     597    //ImageTransferForm.ResetStartTime;
     598    ImageTransferForm.ProgressMsg.Caption := 'Preparing to upload...';
     599    ImageTransferForm.Show;
    535600    totalReadCount := 0;
    536601  except
     
    567632    LocalOutFile.Write(Buffer,ReadCount); //for local copy
    568633    totalReadCount := totalReadCount + ReadCount;
    569     UploadProgressForm.updateProgress(totalReadCount);
     634    ImageTransferForm.updateProgress(totalReadCount);
    570635    OneLine := '';
    571636    if ReadCount > 0 then begin
     
    588653  SavedCursor := Screen.Cursor;
    589654  Screen.Cursor := crHourGlass;
    590   UploadProgressForm.ProgressMsg.Caption := 'Uploading file to server...';
     655  ImageTransferForm.ProgressMsg.Caption := 'Uploading file to server...';
    591656  Application.ProcessMessages;
    592657
     
    595660  RPCResult := RPCBrokerV.Results[0];
    596661  result := (Piece(RPCResult,'^',1)='1');
    597   UploadProgressForm.Hide;
     662  ImageTransferForm.Hide;
    598663  if result=false then begin
    599664    Application.MessageBox('Error uploading file','Error');
     
    606671
    607672
    608 function TfrmImages.DownloadFile(FPath,FName,LocalSaveFNamePath: AnsiString): boolean;
     673function TfrmImages.DownloadFileViaDropbox(FPath,FName,LocalSaveFNamePath: AnsiString;CurrentImage,TotalImages: Integer): boolean;
     674var
     675  DropboxFile : AnsiString;
     676  CurrentFileSize : Integer;
     677begin
     678  // CallV('TMG DOWNLOAD FILE DROPBOX', ...);
     679  RPCBrokerV.ClearParameters := true;
     680  RPCBrokerV.remoteprocedure := 'TMG DOWNLOAD FILE DROPBOX';
     681  RPCBrokerV.param[0].PType := literal;
     682  RPCBrokerV.param[0].Value := FPath;
     683  RPCBrokerV.Param[1].PType := literal;
     684  RPCBrokerV.Param[1].Value := FName;
     685  RPCBrokerV.Param[2].PType := literal;
     686  RPCBrokerV.Param[2].Value := '1'; //see comments in UploadFile re '1' hardcoding
     687
     688  RPCBrokerV.Call;  //Move file into dropbox.
     689  Result := (Piece(RPCBrokerV.Results[0],'^',1)='1');  //1=success, 0=failure
     690  CurrentFileSize := strtoint(Piece(RPCBrokerV.Results[0],'^',3));  //Piece 3 = file size
     691
     692  if Result=true then begin
     693    DropboxFile := ExcludeTrailingBackslash(DropboxDir) + '\' + FName;
     694    if ImageTransferForm.visible = False then ImageTransferForm.show;
     695    while FileSize(DropboxFile) <> CurrentFileSize do sleep(1000);   //elh
     696    ImageTransferForm.ProgressBar.Max := TotalImages;                //elh
     697    ImageTransferForm.ProgressBar.Position := CurrentImage+2;          //elh
     698    if TotalImages = (CurrentImage+2) then begin
     699       Sleep(1000);
     700       ImageTransferForm.hide;
     701    end;
     702    //Now move DropBox\FileName --> LocalFileNamePath
     703    if MoveFile(pchar(DropboxFile),pchar(LocalSaveFNamePath))=false then begin
     704      MessageDlg('Dropbox file transfer failed.  Code='+InttoStr(GetLastError),
     705                 mtError,[mbOK],0);
     706    end;
     707  end;
     708end;
     709
     710
     711function TfrmImages.DownloadFile(FPath,FName,LocalSaveFNamePath: AnsiString;CurrentImage,TotalImages: Integer): boolean;
    609712var
    610713  i,count                       : integer;
     
    621724  if FileExists(LocalSaveFNamePath) then begin
    622725    DeleteFile(LocalSaveFNamePath);
     726  end;
     727  if UseDropBox then begin
     728    Result := DownloadFileViaDropBox(FPath,FName,LocalSaveFNamePath,CurrentImage,TotalImages);
     729    exit;
    623730  end;
    624731  Result := true; //default to success;
     
    9161023end;
    9171024
     1025function TfrmImages.CreateBarcode(MsgStr: AnsiString; ImageType: AnsiString): AnsiString;
     1026//Create a local barcode file, in .png format, from MsgStr
     1027//ImageType is optional, default ='png'.  It should NOT contain '.'
     1028//Returns file path on local client of new barcode image.
     1029//Note: this function is not related to uploading or downloading images
     1030//      to the server for attaching to progress notes.  It is included
     1031//      in this unit because the functionality used is nearly identical to
     1032//      the other code.
     1033  function UniqueFName : AnsiString;
     1034    var  FName,tempFName : AnsiString;
     1035         count : integer;
     1036  begin
     1037    FName := 'Barcode-Image';
     1038    count := 0;
     1039    repeat
     1040      tempFName := CacheDir + '\' + FName + '.' + ImageType;
     1041      FName := FName + '1';
     1042      count := count+1;
     1043    until (fileExists(tempFName)=false) or (count> 32);
     1044    result := tempFName;
     1045  end;
     1046
     1047var
     1048  i,count                       : integer;
     1049  j                             : word;
     1050  OutFile                       : TFileStream;
     1051  s                             : AnsiString;
     1052  Buffer                        : array[0..1024] of byte;
     1053  LocalSaveFNamePath            : AnsiString;
     1054
     1055begin
     1056  StatusText('Getting Barcode...');
     1057  LocalSaveFNamePath := UniqueFName;
     1058  Result := LocalSaveFNamePath;  //default to success;
     1059
     1060  // CallV('TMG BARCODE ENCODE', [MsgStr]);
     1061  RPCBrokerV.ClearParameters := true;
     1062  RPCBrokerV.remoteprocedure := 'TMG BARCODE ENCODE';
     1063  RPCBrokerV.param[0].Value := MsgStr;
     1064  RPCBrokerV.param[0].PType := literal;
     1065  RPCBrokerV.Param[1].Value := '.X';  //<-- is this needed or used?
     1066  RPCBrokerV.Param[1].PType := list;
     1067  RPCBrokerV.Param[1].Mult['"IMAGE TYPE"'] := ImageType;
     1068  RPCBrokerV.Call;
     1069
     1070  Application.ProcessMessages;
     1071  //Note:RPCBrokerV.Results[0]=1 if successful load, =0 if failure
     1072  if (RPCBrokerV.Results.Count>0) and (RPCBrokerV.Results[0]='1') then begin
     1073    OutFile := TFileStream.Create(LocalSaveFNamePath,fmCreate);
     1074    for i:=1 to (RPCBrokerV.Results.Count-1) do begin
     1075      s :=Decode(RPCBrokerV.Results[i]);
     1076      count := Length(s);
     1077      if count>1024 then begin
     1078        Result := ''; //failure of load.
     1079        break;
     1080      end;
     1081      for j := 1 to count do Buffer[j-1] := ord(s[j]);
     1082      OutFile.Write(Buffer,count);
     1083    end;
     1084    OutFile.Free;
     1085  end else begin
     1086    result := '';
     1087  end;
     1088  StatusText('');
     1089end;
     1090
     1091
     1092function TfrmImages.DecodeBarcode(LocalFNamePath,ImageType: AnsiString): AnsiString;
     1093//Decode data from barcode on image, or return '' if none
     1094//Note: if I could find a cost-effective way of decoding this on client side,
     1095//      then that code be done here in the function, instead of uploading image
     1096//      to the server for decoding.
     1097const
     1098  RefreshInterval = 500;
     1099  BlockSize = 512;
     1100
     1101var
     1102  ReadCount                     : Word;
     1103  ParamIndex                    : LongWord;
     1104  j                             : word;
     1105  InFile                        : TFileStream;
     1106  Buffer                        : array[0..1024] of byte;
     1107  RefreshCountdown              : integer;
     1108  OneLine                       : AnsiString;
     1109  RPCResult                     : AnsiString;
     1110  SavedCursor                   : TCursor;
     1111  totalReadCount                : integer;
     1112begin
     1113  result := '';  //default of failure
     1114  if not FileExists(LocalFNamePath) then exit;
     1115  try
     1116    InFile := TFileStream.Create(LocalFNamePath,fmOpenRead or fmShareCompat);
     1117    //Note: I may well cut this out.  Most of the delay occurs during
     1118    // the RPC call, and I can't make a progress bar change during that...
     1119    // (or I could, but I'm not going to change the RPC broker...)
     1120    ImageTransferForm.setMax(InFile.Size);
     1121    //ImageTransferForm.ResetStartTime;
     1122    ImageTransferForm.ProgressMsg.Caption := 'Preparing to upload...';
     1123    ImageTransferForm.Show;
     1124    totalReadCount := 0;
     1125  except
     1126    // catch failure here...  on eError...
     1127    exit;
     1128  end;
     1129
     1130  StatusText('Checking image for barcodes...');
     1131  Application.ProcessMessages;
     1132
     1133  RPCBrokerV.ClearParameters := true;
     1134  RPCBrokerV.Param.Clear;
     1135  RPCBrokerV.Param[0].PType := list;
     1136  ParamIndex := 0;
     1137  RefreshCountdown := RefreshInterval;
     1138  //Put image data into parameter 0 (ARRAY parameter of RPC on server side)
     1139  repeat
     1140    ReadCount := InFile.Read(Buffer,BlockSize);
     1141    OneLine := '';
     1142    totalReadCount := totalReadCount + ReadCount;
     1143    ImageTransferForm.updateProgress(totalReadCount);
     1144    if ReadCount > 0 then begin
     1145      SetLength(OneLine,ReadCount);
     1146      for j := 1 to ReadCount do OneLine[j] := char(Buffer[j-1]);
     1147      RPCBrokerV.Param[0].Mult[IntToStr(ParamIndex)] := Encode(OneLine);
     1148      Inc(ParamIndex);
     1149      Dec(RefreshCountdown);
     1150      if RefreshCountdown < 1 then begin
     1151        Application.ProcessMessages;
     1152        RefreshCountdown := RefreshInterval;
     1153      end;
     1154    end;
     1155  until (ReadCount < BlockSize);
     1156  RPCBrokerV.Param[1].PType := literal;
     1157  RPCBrokerV.Param[1].Value := ImageType;
     1158
     1159  RPCBrokerV.remoteprocedure := 'TMG BARCODE DECODE';
     1160
     1161  SavedCursor := Screen.Cursor;
     1162  Screen.Cursor := crHourGlass;
     1163  ImageTransferForm.ProgressMsg.Caption := 'Uploading file to server...';
     1164  Application.ProcessMessages;
     1165
     1166  CallBroker;  //this is the slow step, pass to server and get response.
     1167
     1168  Screen.Cursor := SavedCursor;
     1169  ImageTransferForm.Hide;
     1170  //Get result: 1^DecodedMessage, or 0^Error Message
     1171  RPCResult := RPCBrokerV.Results[0];
     1172  if Piece(RPCResult,'^',1)='0' then begin
     1173    MessageDlg(Piece(RPCResult,'^',2),mtError,[mbOK],0);
     1174  end else begin
     1175    result := Piece(RPCResult,'^',2);
     1176  end;
     1177
     1178  InFile.Free;
     1179  StatusText('');
     1180end;
     1181
     1182
     1183procedure TfrmImages.EnableAutoScanUploadClick(Sender: TObject);
     1184begin
     1185  inherited;
     1186  AutoScanUpload.Checked := not AutoScanUpload.Checked;
     1187  uTMGOptions.WriteBool('Scan Enabled',AutoScanUpload.Checked);
     1188end;
     1189
     1190
     1191procedure TfrmImages.PickScanFolderClick(Sender: TObject);
     1192var
     1193  CurScanDir : string;
     1194begin
     1195  inherited;
     1196  CurScanDir := UploadForm.ScanDir;
     1197  OpenDialog.InitialDir := CurScanDir;
     1198  MessageDlg('Please pick ANY file in the desired directory.',mtInformation,[mbOK],0);
     1199  if OpenDialog.Execute then begin
     1200    UploadForm.SetScanDir(ExtractFilePath(OpenDialog.FileName));
     1201  end;
     1202  AutoScanUpload.Checked := true;
     1203end;
     1204
     1205function TfrmImages.FileSize(fileName : wideString) : Int64;
     1206var
     1207  sr : TSearchRec;
     1208begin
     1209  if FindFirst(fileName, faAnyFile, sr ) = 0 then
     1210     result := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) +  Int64(sr.FindData.nFileSizeLow)
     1211  else
     1212     result := -1;
     1213
     1214  FindClose(sr) ;
     1215end;
     1216
    9181217initialization
    9191218  //put init code here
  • cprs/branches/tmg-cprs/CPRS-Chart/fNotes.pas

    r686 r729  
    399399     //fImages, {//kt added 9-20-05}
    400400     fOptionsNotes, //kt 8/09
    401      rHTMLTools;  {//kt added 5-27-05 for IsHTMLDocument}
     401     rHTMLTools, fImages;  {//kt added 5-27-05 for IsHTMLDocument}
    402402
    403403const
     
    17451745  //kt 8/09 memNote.Repaint;
    17461746  NotifyOtherApps(NAE_REPORT, 'TIU^' + lstNotes.ItemID);
    1747   //kt RESTORE LATER... frmImages.NewNoteSelected(Editing);  //kt 9/05
     1747  frmImages.NewNoteSelected(Editing);  //kt 9/05
    17481748  DisplayPCE;                          //kt 5-31-05 (move down from above)
    17491749  BroadcastImages(Note);               //kt 8/09
     
    45484548    begin
    45494549      with frmNotes do begin
    4550         //ScanForSubs(MemNote.Lines);
     4550       
    45514551        pnlHtmlViewer.Visible := true;
    45524552        //memNote.Visible := false;
  • cprs/branches/tmg-cprs/CPRS-Chart/fPtDemo.dfm

    r453 r729  
    11object frmPtDemo: TfrmPtDemo
    2   Left = 169
    3   Top = 320
    4   Width = 590
     2  Left = 285
     3  Top = 185
     4  Width = 613
    55  Height = 300
    66  BorderIcons = [biSystemMenu]
     
    3434    Left = 0
    3535    Top = 0
    36     Width = 582
     36    Width = 605
    3737    Height = 229
    3838    Align = alClient
     
    5858    Left = 0
    5959    Top = 229
    60     Width = 582
     60    Width = 605
    6161    Height = 37
    6262    Align = alBottom
     
    7070      Caption = 'Select New Patient'
    7171      TabOrder = 0
     72      WordWrap = True
    7273      OnClick = cmdNewPtClick
    7374    end
     
    9798      Width = 145
    9899      Height = 21
     100      BiDiMode = bdRightToLeftNoAlign
    99101      Caption = '&Edit Patient Demographics'
     102      ParentBiDiMode = False
    100103      TabOrder = 3
     104      WordWrap = True
    101105      OnClick = EditaPtButtonClick
    102106    end
  • cprs/branches/tmg-cprs/CPRS-Chart/fReview.dfm

    r453 r729  
    11object frmReview: TfrmReview
    2   Left = 359
    3   Top = 137
     2  Left = -681
     3  Top = 207
    44  AutoScroll = False
    55  BorderIcons = [biMaximize]
     
    322322    end
    323323  end
     324  object TMGAutoPrintCKBox: TCheckBox
     325    Left = 443
     326    Top = 435
     327    Width = 142
     328    Height = 17
     329    Anchors = [akRight, akBottom]
     330    Caption = 'Print note(s) after signing'
     331    Checked = True
     332    State = cbChecked
     333    TabOrder = 9
     334  end
    324335  object poBACopyPaste: TPopupMenu
    325336    Left = 384
     
    351362    Top = 248
    352363    LangData = {
    353       090066726D526576696577010100000001000000070043617074696F6E011900
     364      090066726D526576696577010100000001000000070043617074696F6E011A00
    354365      00000B006C61446961676E6F736973010100000002000000070043617074696F
    355366      6E000C00706E6C5369676E6174757265000009006C626C4553436F6465010100
     
    392403      6173746531010100000024000000070043617074696F6E000A00446961676E6F
    393404      73697331010100000025000000070043617074696F6E00050045786974310101
    394       00000026000000070043617074696F6E00}
     405      00000026000000070043617074696F6E001100544D474175746F5072696E7443
     406      4B426F78010100000027000000070043617074696F6E00}
    395407  end
    396408end
  • cprs/branches/tmg-cprs/CPRS-Chart/fReview.pas

    r453 r729  
    4141    lblSig: TStaticText;
    4242    DKLanguageController1: TDKLanguageController;
     43    TMGAutoPrintCKBox: TCheckBox;
    4344    procedure FormCreate(Sender: TObject);
    4445    procedure lstReviewDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
     
    104105    procedure SetCheckBoxStatus(thisOrderID: string);
    105106    function GetCheckBoxStatus(sourceOrderID : string) : string; overload;
    106     function GetCheckBoxStatus(gridItemIndex : smallint) : string; overload; 
     107    function GetCheckBoxStatus(gridItemIndex : smallint) : string; overload;
    107108    function GetNonNilItemCount : integer; //CQ5172
    108109  end;
     
    163164//TX_NO_DX      =  'A Diagnosis must be selected prior to signing any of the following order types:'  <-- original line.  //kt 8/7/2007
    164165//                 + CRLF + 'Outpatient Lab,Radiology, Outpatient Medications, Prosthetics.';  <-- original line.  //kt 8/7/2007
    165 
     166  DONT_SIGN = 'Don''t Sign';  //kt
    166167var
    167168  TXT_ENCNT     : string;  //kt
     
    867868
    868869procedure TfrmReview.txtESCodeChange(Sender: TObject);
    869 begin
    870   if(not pnlSignature.Visible) then
     870var  HasDocToSign, ShowAutoPrint : boolean; //kt
     871     i : integer; //kt
     872begin
     873  //kt --- Begin Mod ---
     874  ShowAutoPrint := false;   //kt  Only show when button caption = 'Sign'
     875  HasDocToSign := false;
     876  for i := 0 to lstReview.Items.Count - 1 do begin 
     877    if lstReview.Items.Objects[i] = nil then continue;
     878    if (TChangeItem(lstReview.Items.Objects[i]).ItemType = CH_DOC) and (lstReview.Checked[i]) then begin
     879      HasDocToSign := true;
     880      break;
     881    end;
     882  end;
     883  //kt --- End Mod ---
     884 
     885  if(not pnlSignature.Visible) then begin
     886    cmdOK.Caption := 'OK';
     887  end else begin
     888    if Length(txtESCode.Text) > 0 then begin
     889      cmdOK.Caption := 'Sign';
     890      if HasDocToSign then ShowAutoPrint := true; //kt
     891    end else begin
     892      //kt if FCouldSign then cmdOK.Caption := 'Don''t Sign' else cmdOK.Caption := 'OK';
     893      if FCouldSign then begin
     894        //cmdOK.Caption := DONT_SIGN
     895        cmdOK.Caption := DKLangConstW('fReview_Donxxt_Sign')
     896      end else begin
     897        cmdOK.Caption := 'OK'; //kt added 8/7/2007
     898      end; 
     899{ Original Line 
     900if(not pnlSignature.Visible) then
    871901    cmdOK.Caption := 'OK'
    872902  else
     
    876906//    if FCouldSign then cmdOK.Caption := 'Don''t Sign' else cmdOK.Caption := 'OK';  <-- original line.  //kt 8/7/2007
    877907      if FCouldSign then cmdOK.Caption := DKLangConstW('fReview_Donxxt_Sign') else cmdOK.Caption := 'OK'; //kt added 8/7/2007
     908}
    878909    end;
    879910  end;
     911  TMGAutoPrintCKBox.Visible := ShowAutoPrint;  //kt
    880912end;
    881913
     
    13151347                  //  PrintNote(StrToInt(ChangeItem.ID), ChangeItem.Text);
    13161348                  //end;
     1349                  if TMGAutoPrintCKBox.Visible and TMGAutoPrintCKBox.Checked then begin
     1350                    PrintNote(StrToInt(ChangeItem.ID), ChangeItem.Text);
     1351                  end;
    13171352                  {--- End K. Toppenberg's modificaton //kt --}
    13181353                end else frmNotes.SaveSignItem(ChangeItem.ID, '');
  • cprs/branches/tmg-cprs/CPRS-Chart/fVitals.pas

    r453 r729  
    177177  GMV_FName,
    178178  GMV_LibName: String;
     179  //kt start -------------
     180  aDFN, aLocation,
     181  DateStart, DateStop,
     182  aSignature,
     183  aContextIn,aContextOut,
     184  aName,anInfo,
     185  aDynamicParameter {HospitolName^Vital Type Abbreviation} :String;
     186  //kt end ------------------
     187
    179188begin
    180189 { Availble Forms:
     
    192201    begin
    193202     @VLPtVitals := GetProcAddress(VitalsDLLHandle,PChar(GMV_FName));
    194      if assigned(VLPtVitals) then
     203     if assigned(VLPtVitals) then begin
    195204       VLPtVitals(RPCBrokerV,Patient.DFN,FloatToStr(Encounter.Location),
    196205                  getVitalsStartDate(),FormatDateTime('mm/dd/yy',Now),
     
    200209                  frmFrame.lblPtSSN.Caption + '    ' + frmFrame.lblPtAge.Caption,
    201210                  Encounter.LocationName +U+ VitalType)
    202      else
     211     end else
    203212//     MessageDLG('Can''t find function "'+GMV_FName+'".',mtError,[mbok],0);  <-- original line.  //kt 8/17/2007
    204213       MessageDLG(DKLangConstW('fVitals_Canxxt_find_function_x')+GMV_FName+'".',mtError,[mbok],0); //kt added 8/17/2007
  • cprs/branches/tmg-cprs/CPRS-Chart/rHTMLTools.pas

    r686 r729  
    3737  procedure RestoreIEPrinting;
    3838  function ExtractDateOfNote(Lines : TStringList) : string;
     39  Procedure ScanForSubs(Lines : TStrings);
    3940
    4041implementation
     
    4647       fTMGPrintingAnimation,
    4748       ExtCtrls,
     49       uTemplateFields,
    4850       fTemplateDialog,
    4951       StrUtils;
     
    160162
    161163    try
     164      rHTMLTools.ScanForSubs(Lines);    //Added to correct Printing issue  elh
    162165      frmNotes.SetDisplayToHTMLvsText([vmView,vmHTML],Lines);  //ActivateHtmlViewer(Lines);
    163166      if frmNotes.HtmlViewer.WaitForDocComplete = false then begin
     
    280283        //Ensure images are downloaded before passing page to web browser       
    281284        frmImages.timLoadImagesTimer(nil);
     285        //NOTE: This often doesn't get the job completed before passing to browser
     286        //      ?? check for completion?
    282287      end;
    283288    end;
     
    297302      or (Pos('<HTML>',Line) > 0)
    298303      or (Pos('<BR>',Line) > 0)
    299       or (Pos(fTemplateDialog.HTMLBEGINNINGTAG,Line) > 0)
     304      or (Pos(HTML_BEGIN_TAG,Line) > 0)
    300305      or (Pos('<P>',Line) > 0)
    301306      or (Pos('&NBSP',Line) > 0)
  • cprs/branches/tmg-cprs/CPRS-Chart/uConst.pas

    r453 r729  
    5353  CT_WEBTAB2  = 13;                             // chart tab - web browser //kt added
    5454  CT_WEBTAB3  = 14;                             // chart tab - web browser //kt added
     55  CT_IMAGES   = 15;                             // chart tab - images      //kt added
    5556  //kt Option: add more CT_WEBTAB#'s here.  But set CT_LAST_WEBTAB= to last one...
    5657  CT_LAST_WEBTAB = CT_WEBTAB3;                  // Last web chart tab //kt added
  • cprs/branches/tmg-cprs/CPRS-Chart/uCore.pas

    r453 r729  
    108108  public
    109109    procedure Clear;
     110    procedure Assign(Source : TPatient);  //kt added 1/8/08
    110111    property DFN:              string      read FDFN write SetDFN;  //*DFN*
    111112    property ICN:              string      read FICN;
     
    687688end;
    688689
     690procedure TPatient.Assign(Source : TPatient);  //kt added 1/8/08
     691begin
     692  DFN := Source.DFN;
     693  {Note: other properties are read only, determined by DFN}
     694end;
     695
    689696function TPatient.GetDateDied: TFMDateTime;
    690697begin
Note: See TracChangeset for help on using the changeset viewer.