Changeset 1679 for cprs/trunk/CPRS-Chart/fGraphs.pas
- Timestamp:
- May 7, 2015, 12:34:29 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cprs/trunk/CPRS-Chart/fGraphs.pas
r830 r1679 3 3 interface 4 4 5 uses 5 uses 6 6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 7 7 ExtCtrls, StdCtrls, ORCtrls, Menus, TeeProcs, TeEngine, Series, Chart, Math, … … 244 244 Shift: TShiftState; X, Y: Integer); 245 245 procedure splViewsTopMoved(Sender: TObject); 246 procedure lstViewsBottomMouseDown(Sender: TObject; Button: TMouseButton;247 Shift: TShiftState; X, Y: Integer);248 246 249 247 private … … 286 284 FSourcesDefault: TStrings; 287 285 FTHighTime, FTLowTime: Double; 288 FTooManyItems: boolean;289 286 FWarning: boolean; 290 287 FX, FY: integer; … … 292 289 FYMaxValue: Double; 293 290 294 procedure AddOnLabGroups(aListBox: TORListBox; personien: int eger);291 procedure AddOnLabGroups(aListBox: TORListBox; personien: int64); 295 292 procedure AdjustTimeframe; 296 293 procedure AllTypeDate(aType, aTypeName, firstline, secondline: string; aDate, aDate2: double); … … 309 306 procedure CheckProfile(var aProfile: string; var Updated: boolean); 310 307 procedure CheckToAddData(aListView: TListView; aSection, TypeToCheck: string); 311 procedure CreateExcelPatientHeader(var HeaderList: TStringList; PageTitle, DateRange: string);308 procedure CreateExcelPatientHeader(var HeaderList: TStringList; PageTitle, Warning, DateRange: string); 312 309 procedure CreatePatientHeader(var HeaderList: TStringList; PageTitle, Warning, DateRange: string); 313 310 procedure DateRangeItems(oldestdate, newestdate: double; filenum: string); … … 345 342 procedure PainAdd(serBlank: TPointSeries); 346 343 procedure RefUnits(aItem, aSpec: string; var low, high, units: string); 347 procedure ResetSpec(aList: TStrings; aItemNum, aNewItemNum, aNewItemName, aNewString: string);348 344 procedure ResultValue(var resultstring, seriestitle: string; typenum, typeitem: string; 349 345 Sender: TCustomChart; aSeries: TChartSeries; ValueIndex, SeriesNum: Integer; var OKToUse: boolean); 346 procedure SaveTestData(typeitem: string); 350 347 procedure SelCopy(aListView: TListView; aList: TStrings); 351 348 procedure SelReset(aList: TStrings; aListView: TListView); … … 356 353 procedure SizeTogether(onlylines, nolines, anylines: Boolean; aScroll: TScrollBox; 357 354 aChart: TChart; aPanel, aPanelBase: TPanel; portion: Double); 358 procedure Spec Check(var spec1, spec2, spec3, spec4: string; var singlespec: boolean);359 procedure Spec Set(var spec1, spec2, spec3, spec4: string;aItemType, aItemName: string);355 procedure SpecRefCheck(aItemType, aItemName: string; var singlespec: boolean); 356 procedure SpecRefSet(aItemType, aItemName: string); 360 357 procedure SplitClick; 361 358 procedure SortListView; … … 396 393 function BPValue(aDateTime: TDateTime): string; 397 394 function DateRangeMultiItems(aOldDate, aNewDate: double; aMultiItem: string): boolean; 395 function DatesInRange(EarlyDate, RecentDate, Date1, Date2: double): boolean; 398 396 function DCName(aDCien: string): string; 399 397 function ExpandTax(profile: string): string; … … 440 438 FHintWinActive: boolean; 441 439 FHintStop: boolean; 440 uDateStart, uDateStop: double; 442 441 443 442 implementation … … 445 444 uses fGraphSettings, fGraphProfiles, fGraphData, fGraphOthers, rGraphs, 446 445 ComObj, ActiveX, ShellAPI, fFrame, uCore, rCore, uConst, fRptBox, fReports, 447 uFormMonitor, VAUtils 448 { TODO -oRV -cWVEHR Long Age : Changed to use long age } 449 , rWVEHR; 450 446 uFormMonitor, VAUtils; 451 447 452 448 {$R *.DFM} … … 531 527 FTLowTime := BIG_NUMBER; 532 528 FWarning := false; 533 FTooManyItems := false;534 529 FX := 0; FY :=0; 535 530 FYMinValue := 0; 536 531 FYMaxValue := 0; 532 uDateStart := 0; 533 uDateStop := 0; 537 534 end; 538 535 … … 570 567 if length(rptview1) > 0 then 571 568 begin 572 //pcTop.ActivePage := tsTopViews;573 lstViewsTop.Tag := 0;574 569 for i := 0 to lstViewsTop.Items.Count - 1 do 575 570 if Piece(lstViewsTop.Items[i], '^', 2) = rptview1 then … … 578 573 break; 579 574 end; 580 if lstViewsTop.ItemIndex < 0 then581 lvwItemsTopClick(self);582 575 end; 583 576 if length(rptview2) > 0 then … … 585 578 chkDualViews.Checked := true; 586 579 chkDualViewsClick(self); 587 //pcBottom.ActivePage := tsBottomViews;588 lstViewsBottom.Tag := 0;589 580 for i := 0 to lstViewsBottom.Items.Count - 1 do 590 581 if Piece(lstViewsBottom.Items[i], '^', 2) = rptview2 then … … 593 584 break; 594 585 end; 595 if lstViewsBottom.ItemIndex < 0 then596 lvwItemsBottomClick(self);597 586 end; 598 587 end; 599 pnlMain.Tag := 0;600 cboDateRangeChange(self);601 exit;602 588 end; 603 589 if lstViewsTop.ItemIndex > -1 then … … 606 592 lvwItemsTopClick(self); 607 593 if lstViewsBottom.ItemIndex > -1 then 608 lstViewsbottomChange(self) 594 begin 595 lstViewsBottom.Tag := 0; // **** reset to allow bottom graphs 596 lstViewsbottomChange(self); 597 end 609 598 else 610 599 lvwItemsBottomClick(self); 600 if pnlMain.Tag > 0 then 601 begin 602 pnlMain.Tag := 0; 603 cboDateRangeChange(self); 604 if lstViewsTop.ItemIndex > -1 then 605 lstViewsTopChange(self) 606 else 607 lvwItemsTopClick(self); 608 if lstViewsBottom.ItemIndex > -1 then 609 lstViewsbottomChange(self) 610 else 611 lvwItemsBottomClick(self); 612 end; 611 613 end; 612 614 … … 663 665 end; 664 666 665 procedure TfrmGraphs.AddOnLabGroups(aListBox: TORListBox; personien: int eger);667 procedure TfrmGraphs.AddOnLabGroups(aListBox: TORListBox; personien: int64); 666 668 var 667 669 i: integer; … … 728 730 begin 729 731 if Patient.Inpatient then 730 cboDateRange.SelectByID( GetDefaultInpatientDate)732 cboDateRange.SelectByID(FGraphSetting.DateRangeInpatient) 731 733 else 732 cboDateRange.SelectByID( GetDefaultOutpatientDate);734 cboDateRange.SelectByID(FGraphSetting.DateRangeOutpatient); 733 735 if cboDateRange.ItemIndex < 0 then 734 736 cboDateRange.ItemIndex := cboDateRange.Items.Count - 1; … … 902 904 PreFixedDateRange := FixedDateRange; 903 905 MaxSelectMin := Max(Max(lvwItemsTop.SelCount, lvwItemsBottom.SelCount), 1); 904 DateRangeOutpatient := FGraphSetting.DateRangeOutpatient;905 906 end; 906 907 PreSources := TStringList.Create; … … 1134 1135 var 1135 1136 i, j: integer; 1136 filename, item num, itemstuff, mitemnum: string;1137 filename, iteminfo, itemnum, tempiteminfo, tempitemnum: string; 1137 1138 begin 1138 1139 FastAssign(rpcDateItem(oldestdate, newestdate, filenum, Patient.DFN), GtslScratchTemp); … … 1142 1143 for i := 0 to GtslScratchTemp.Count - 1 do 1143 1144 begin 1144 itemstuff:= GtslScratchTemp[i];1145 itemnum := UpperCase(Piece(itemstuff, '^',2));1145 tempiteminfo := GtslScratchTemp[i]; 1146 tempitemnum := UpperCase(Piece(tempiteminfo, '^',2)); 1146 1147 for j := 0 to GtslItems.Count - 1 do 1147 if (filenum = UpperCase(Piece(GtslItems[j], '^', 1))) and (itemnum = UpperCase(Piece(GtslItems[j], '^', 2))) then 1148 UpdateView(filename, filenum, itemnum, GtslItems[j], lvwItemsTop); 1149 if filenum = '63' then 1150 for j := 0 to GtslMultiSpec.Count - 1 do 1151 begin 1152 mitemnum := Piece(GtslMultiSpec[j], '^', 2); 1153 if itemnum = Piece(mitemnum, '.', 1) then 1154 if DateRangeMultiItems(oldestdate, newestdate, mitemnum) then //******** check specific date range 1155 UpdateView(filename, filenum, mitemnum, GtslMultiSpec[j], lvwItemsTop); 1148 begin 1149 iteminfo := GtslItems[j]; 1150 if filenum = UpperCase(Piece(iteminfo, '^', 1)) then 1151 begin 1152 if tempitemnum = UpperCase(Piece(iteminfo, '^', 2)) then 1153 UpdateView(filename, filenum, tempitemnum, iteminfo, lvwItemsTop) 1154 else 1155 if filenum = '63' then 1156 begin 1157 itemnum := UpperCase(Piece(iteminfo, '^', 2)); 1158 if tempitemnum = Piece(itemnum, '.', 1) then 1159 if DateRangeMultiItems(oldestdate, newestdate, itemnum) then 1160 UpdateView(filename, filenum, itemnum, iteminfo, lvwItemsTop); 1161 end; 1162 end; 1156 1163 end; 1157 1164 end; … … 1202 1209 end; 1203 1210 end; 1211 end; 1212 1213 function TfrmGraphs.DatesInRange(EarlyDate, RecentDate, Date1, Date2: double): boolean; 1214 begin 1215 Result := true; 1216 if Date2 < 0 then // instance 1217 begin 1218 if Date1 < EarlyDate then 1219 Result := false 1220 else if Date1 > RecentDate then 1221 Result := false; 1222 end 1223 else // durations 1224 begin 1225 if Date1 > RecentDate then 1226 Result := false 1227 else if Date2 < EarlyDate then 1228 Result := false; 1229 end; 1204 1230 end; 1205 1231 … … 1371 1397 end; 1372 1398 1399 procedure TfrmGraphs.SaveTestData(typeitem: string); 1400 var 1401 aType, aItem, aItemName: string; 1402 begin 1403 aType := Piece(typeitem, '^', 1); 1404 aItem := Piece(typeitem, '^', 2); 1405 aItemName := MixedCase(ItemName(aType, aItem)); 1406 LabData(typeitem, aItemName, 'top', false); // already have lab data 1407 GtslScratchLab.Clear; 1408 end; 1409 1373 1410 procedure TfrmGraphs.FastLab(aList: TStringList); 1374 1411 var 1375 lastone: boolean;1376 i: integer;1377 aType, aItem, aItemName, typeitem, oldtypeitem, listline: string; 1378 begin 1379 if aList.Count < 1then1412 i, lastnum: integer; 1413 newtypeitem, oldtypeitem, listline: string; 1414 begin 1415 lastnum := aList.Count - 1; 1416 if lastnum < 0 then 1380 1417 exit; 1381 1418 GtslScratchLab.Clear; 1382 1419 aList.Sort; 1383 listline := aList[0]; 1384 oldtypeitem := Pieces(listline, '^', 1, 2); 1385 GtslScratchLab.Add(listline); 1386 for i := 1 to aList.Count - 1 do 1387 begin 1388 lastone := i = aList.Count - 1; 1420 oldtypeitem := Pieces(aList[0], '^', 1, 2); 1421 for i := 0 to lastnum do 1422 begin 1389 1423 listline := aList[i]; 1390 typeitem := Pieces(listline, '^', 1 , 2); 1391 if (typeitem <> oldtypeitem) or lastone then 1392 begin 1393 if lastone then 1394 oldtypeitem := typeitem; 1395 aType := Piece(oldtypeitem, '^', 1); 1396 aItem := Piece(oldtypeitem, '^', 2); 1397 aItemName := MixedCase(ItemName(aType, aItem)); 1398 LabData(oldtypeitem, aItemName, 'top', false); // already have lab data 1399 GtslScratchLab.Clear; 1400 end; 1401 GtslScratchLab.Add(listline); 1402 oldtypeitem := typeitem; 1424 newtypeitem := Pieces(listline, '^', 1 , 2); 1425 if lastnum = i then 1426 begin 1427 if newtypeitem <> oldtypeitem then 1428 begin 1429 SaveTestData(oldtypeitem); 1430 oldtypeitem := newtypeitem; 1431 end; 1432 GtslScratchLab.Add(listline); 1433 SaveTestData(oldtypeitem); 1434 end 1435 else if newtypeitem <> oldtypeitem then 1436 begin 1437 SaveTestData(oldtypeitem); 1438 GtslScratchLab.Add(listline); 1439 oldtypeitem := newtypeitem; 1440 end 1441 else 1442 GtslScratchLab.Add(listline); 1403 1443 end; 1404 1444 end; … … 1667 1707 aChart := (Sender as TChart); 1668 1708 if Not Assigned(FGraphSetting) then Exit; 1669 1709 1670 1710 if not FGraphSetting.VerticalZoom then 1671 1711 begin … … 1898 1938 var 1899 1939 i: integer; 1900 checkdata, high, low, specimen, specnum, units : string;1940 checkdata, high, low, specimen, specnum, units, refrange: string; 1901 1941 begin 1902 1942 if (filetype = '63') and (GtslData.Count > 0) then … … 1909 1949 break; 1910 1950 end; 1911 specnum := Piece(checkdata, '^', 7);1951 refrange := Piece(checkdata, '^', 10); 1912 1952 specimen := Piece(checkdata, '^', 8); 1913 RefUnits(typeitem, specnum, low, high, units); 1914 units := LowerCase(units); 1953 if length(refrange) > 0 then 1954 begin 1955 low := Piece(refrange, '!', 1); 1956 high := Piece(refrange, '!', 2); 1957 units := Piece(checkdata, '^', 11); 1958 end 1959 else 1960 begin 1961 specnum := Piece(checkdata, '^', 7); 1962 RefUnits(typeitem, specnum, low, high, units); 1963 units := LowerCase(units); 1964 end; 1915 1965 if units = '' then units := ' '; 1916 1966 end … … 3190 3240 end; 3191 3241 3192 var 3193 ok, topflag: boolean; 3194 i, j, cnt: integer; 3195 dtdata1, dtdata2, dtdate1, dtdate2: double; 3196 StrForFooter, StrForHeader, aTitle, aDateRange, aCustomDateRange: String; 3197 cdate, itemtype, item, itemtypename, itemname, typeitem, specnum: String; 3198 datax, fmdate1, fmdate2, linestring: String; 3199 aHeader: TStringList; 3200 aGraphItem: TGraphItem; 3201 aListItem: TListItem; 3202 excelApp, workbook, worksheet: Variant; 3203 begin 3204 if (lvwItemsTop.SelCount = 0) and (lvwItemsBottom.SelCount = 0) then 3205 begin 3206 ShowMessage('No Items selected.'); 3207 exit; 3208 end; 3209 try 3210 excelApp := CreateOleObject('Excel.Application'); 3211 except 3212 raise Exception.Create('Cannot start MS Excel!'); 3213 end; 3214 topflag := mnuPopGraphStayOnTop.Checked and mnuPopGraphStayOnTop.Enabled; 3215 Screen.Cursor := crDefault; 3216 aTitle := 'CPRS Graphing'; 3217 dtdate1 := FGraphSetting.FMStartDate; //DateTimeToFMDateTime(FGraphSetting.LowTime); 3218 dtdate2 := FGraphSetting.FMStopDate; //DateTimeToFMDateTime(FGraphSetting.HighTime); 3219 dtdate1 := FMDateTimeOffsetBy(dtdate1, 1); // add a day to start 3220 dtdate2 := dtdate2; 3221 3222 if (length(cboDateRange.Text) < 25) and 3223 (cboDateRange.Text <> 'All Results') and 3224 (cboDateRange.Text <> 'Today') then 3225 aDateRange := 'Date Range: ' + cboDateRange.Text + ' Selected Items from ' + 3226 FormatFMDateTime('mm/dd/yy', dtdate1) + ' to ' + 3227 FormatFMDateTime('mm/dd/yy', dtdate2) 3228 else 3229 aDateRange := 'Date Range: Selected Items from ' + cboDateRange.Text; 3230 dtdate1 := DateTimeToFMDateTime(FGraphSetting.LowTime); 3231 dtdate2 := DateTimeToFMDateTime(FGraphSetting.HighTime); 3232 aCustomDateRange := cboDateRange.Items[cboDateRange.ItemIndex]; 3233 if Piece(aCustomDateRange, '^', 1) = '' then // custom date range 3234 begin 3235 dtdate1 := strtofloat(Piece(aCustomDateRange, '^', 6)); 3236 dtdate2 := strtofloat(Piece(aCustomDateRange, '^', 7)); 3237 end; 3238 aHeader := TStringList.Create; 3239 CreateExcelPatientHeader(aHeader, aTitle, aDateRange); 3240 StrForHeader := ''; 3241 for i := 0 to aHeader.Count - 1 do 3242 begin 3243 StrForHeader := StrForHeader + aHeader[i] + #13; 3244 end; 3245 if length(StrForHeader) > 250 then 3246 StrForHeader := copy(StrForHeader, 1, 250) + #13; // VB script in Excel is limited to 253 3247 StrForFooter := aTitle + ' *** WORK COPY ONLY *** ' 3248 + 'Printed: ' + FormatDateTime('mmm dd, yyyy hh:nn', Now) + #13 3249 + TXT_COPY_DISCLAIMER + #13; 3250 excelApp.Visible := true; 3251 workbook := excelApp.workbooks.add; 3252 worksheet := workbook.worksheets.add; 3253 worksheet.name := aTitle; 3254 worksheet.PageSetup.PrintArea := ''; 3255 worksheet.PageSetup.TopMargin := 110; 3256 worksheet.PageSetup.CenterHeader := StrForHeader; 3257 worksheet.PageSetup.BottomMargin := 75; 3258 worksheet.PageSetup.LeftFooter := StrForFooter; 3259 worksheet.PageSetup.RightFooter := 'Page &P of &N'; 3260 worksheet.PageSetup.PrintTitleRows := '$1:$1'; 3261 worksheet.PageSetup.PrintTitleColumns := '$A:$F'; 3262 AddRow(worksheet, '1', 'Type', 'Item', 'Date', 'End Date', 'Value', 'Other'); 3263 cnt := 1; 3264 aListItem := lvwItemsTop.Selected; 3265 while aListItem <> nil do 3266 begin 3267 itemname := aListItem.Caption; 3268 itemtypename := aListItem.SubItems[0]; 3269 aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]); 3270 typeitem := UpperCase(aGraphItem.Values); 3271 if Piece(typeitem, '^', 1) = '63' then 3272 begin 3273 specnum := Piece(Piece(typeitem, '^', 2), '.', 2); 3274 if length(specnum) > 0 then // multispecimen 3275 if specnum = '1' then 3276 typeitem := Piece(typeitem, '.', 1) 3277 else 3278 typeitem := ''; 3279 end; 3280 itemtype := Piece(typeitem, '^', 1); 3281 item := Piece(typeitem, '^', 2); 3282 for j := 0 to GtslData.Count - 1 do 3283 begin 3284 datax := GtslData[j]; 3285 if Piece(datax, '^', 1) = itemtype then 3286 if Piece(datax, '^', 2) = item then 3287 begin 3288 dtdata1 := strtofloatdef(Piece(datax, '^', 3), -1); 3289 fmdate1 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata1); 3290 if copy(fmdate1, length(fmdate1) - 5, length(fmdate1)) = ' 00:00' then 3291 fmdate1 := copy(fmdate1, 1, length(fmdate1) - 5) + ' '; 3292 cdate := Piece(datax, '^', 4); 3293 if Piece(cdate, '.', 2) = '24' then cdate := Piece(cdate, '.', 1) + '.2359'; 3294 dtdata2 := strtofloatdef(cdate, -1); // restrict to within date range 3295 fmdate2 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata2); 3296 if copy(fmdate2, length(fmdate2) - 5, length(fmdate2)) = ' 00:00' then 3297 fmdate2 := copy(fmdate2, 1, length(fmdate2) - 5) + ' '; 3298 if dtdata2 > 0 then 3299 ok := (dtdata1 <= dtdate2) and (dtdata2 >= dtdate1) // overlap for durations 3300 else 3301 ok := (dtdata1 >= dtdate1) and (dtdata1 <= dtdate2); // inclusion for instances 3302 if ok then 3303 begin 3304 cnt := cnt + 1; 3305 linestring := inttostr(cnt); 3306 AddRow(worksheet, linestring, itemtypename, itemname, fmdate1, fmdate2, Piece(datax, '^', 5), Piece(datax, '^', 8)); 3307 end; 3308 end; 3309 end; 3310 aListItem := lvwItemsTop.GetNextItem(aListItem, sdAll, [isSelected]); 3311 end; 3312 if lvwItemsBottom.Items.Count > 0 then //rewrite to combine 3313 begin 3314 cnt := cnt + 1; 3315 linestring := inttostr(cnt); 3316 AddRow(worksheet, linestring, '', '', '', '', '', ''); 3317 aListItem := lvwItemsBottom.Selected; 3242 procedure FillData(aListView: TListView; worksheet: variant; var cnt: integer); 3243 var 3244 i: integer; 3245 dtdata1, dtdata2: double; 3246 itemtype, item, itemtypename, itemname, typeitem: String; 3247 datax, fmdate1, fmdate2, linestring: String; 3248 aGraphItem: TGraphItem; 3249 aListItem: TListItem; 3250 begin 3251 aListItem := aListView.Selected; 3318 3252 while aListItem <> nil do 3319 3253 begin … … 3322 3256 aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]); 3323 3257 typeitem := UpperCase(aGraphItem.Values); 3324 if Piece(typeitem, '^', 1) = '63' then3325 begin3326 specnum := Piece(Piece(typeitem, '^', 2), '.', 2);3327 if length(specnum) > 0 then // multispecimen3328 if specnum = '1' then3329 typeitem := Piece(typeitem, '.', 1)3330 else3331 typeitem := '';3332 end;3333 3258 itemtype := Piece(typeitem, '^', 1); 3334 3259 item := Piece(typeitem, '^', 2); 3335 for j:= 0 to GtslData.Count - 1 do3260 for i := 0 to GtslData.Count - 1 do 3336 3261 begin 3337 datax := GtslData[ j];3262 datax := GtslData[i]; 3338 3263 if Piece(datax, '^', 1) = itemtype then 3339 3264 if Piece(datax, '^', 2) = item then … … 3341 3266 dtdata1 := strtofloatdef(Piece(datax, '^', 3), -1); 3342 3267 fmdate1 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata1); 3343 if copy(fmdate1, length(fmdate1) - 5, length(fmdate1)) = ' 00:00' then 3344 fmdate1 := copy(fmdate1, 1, length(fmdate1) - 5) + ' '; 3345 cdate := Piece(datax, '^', 4); 3346 if Piece(cdate, '.', 2) = '24' then cdate := Piece(cdate, '.', 1) + '.2359'; 3347 dtdata2 := strtofloatdef(cdate, -1); 3348 fmdate2 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata2); 3349 if copy(fmdate2, length(fmdate2) - 5, length(fmdate2)) = ' 00:00' then 3350 fmdate2 := copy(fmdate2, 1, length(fmdate2) - 5) + ' '; 3351 if dtdata2 > 0 then 3352 ok := (dtdata1 <= dtdate2) and (dtdata2 >= dtdate1) // overlap for durations 3353 else 3354 ok := (dtdata1 >= dtdate1) and (dtdata1 <= dtdate2); // inclusion for instances 3355 if ok then 3268 fmdate1 := StringReplace(fmdate1, ' 00:00', '', [rfReplaceAll]); 3269 dtdata2 := strtofloatdef(Piece(datax, '^', 4), -1); 3270 if DatesInRange(uDateStart, uDateStop, dtdata1, dtdata2) then 3356 3271 begin 3272 fmdate2 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata2); 3273 fmdate2 := StringReplace(fmdate2, ' 00:00', '', [rfReplaceAll]); 3357 3274 cnt := cnt + 1; 3358 3275 linestring := inttostr(cnt); … … 3361 3278 end; 3362 3279 end; 3363 aListItem := lvwItemsBottom.GetNextItem(aListItem, sdAll, [isSelected]); 3364 end; 3280 aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]); 3281 end; 3282 end; 3283 3284 var 3285 topflag: boolean; 3286 i, cnt: integer; 3287 StrForFooter, StrForHeader, ShortHeader, aTitle, aWarning, aDateRange: String; 3288 linestring: String; 3289 aHeader: TStringList; 3290 excelApp, workbook, worksheet: Variant; 3291 begin 3292 try 3293 excelApp := CreateOleObject('Excel.Application'); 3294 except 3295 raise Exception.Create('Cannot start MS Excel!'); 3296 end; 3297 topflag := mnuPopGraphStayOnTop.Checked and mnuPopGraphStayOnTop.Enabled; 3298 Screen.Cursor := crDefault; 3299 aTitle := 'CPRS Graphing'; 3300 aWarning := pnlInfo.Caption; 3301 aDateRange := 'Date Range: ' + cboDateRange.Text + ' Selected Items from ' + 3302 FormatDateTime('mm/dd/yy', FGraphSetting.LowTime) + ' to ' + 3303 FormatDateTime('mm/dd/yy', FGraphSetting.HighTime); 3304 aHeader := TStringList.Create; 3305 CreateExcelPatientHeader(aHeader, aTitle, aWarning, aDateRange); 3306 StrForHeader := ''; 3307 for i := 0 to aHeader.Count -1 do 3308 if (length(StrForHeader) + length(aHeader[i])) < 250 then 3309 StrForHeader := StrForHeader + aHeader[i] + #13; 3310 ShortHeader := Patient.Name + ' ' + Patient.SSN + ' ' 3311 + Encounter.LocationName + ' ' 3312 + FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + IntToStr(Patient.Age) + ')' 3313 + #13 + TXT_COPY_DISCLAIMER; 3314 StrForFooter := aTitle + ' *** WORK COPY ONLY *** ' 3315 + 'Printed: ' + FormatDateTime('mmm dd, yyyy hh:nn', Now) + #13; 3316 excelApp.Visible := true; 3317 workbook := excelApp.workbooks.add; 3318 worksheet := workbook.worksheets.add; 3319 worksheet.name := aTitle; 3320 worksheet.PageSetup.PrintArea := ''; 3321 worksheet.PageSetup.TopMargin := 120; 3322 worksheet.PageSetup.LeftFooter := StrForFooter; 3323 worksheet.PageSetup.RightFooter := 'Page &P of &N'; 3324 AddRow(worksheet, '1', 'Type', 'Item', 'Date1', 'Date2', 'Value', 'Other'); 3325 cnt := 1; 3326 FillData(lvwItemsTop, worksheet, cnt); 3327 if lvwItemsBottom.Items.Count > 0 then 3328 begin 3329 cnt := cnt + 1; 3330 linestring := inttostr(cnt); 3331 AddRow(worksheet, linestring, '', '', '', '', '', ''); 3332 FillData(lvwItemsBottom, worksheet, cnt); 3365 3333 end; 3366 3334 worksheet.Range['A1', 'F' + LineString].Columns.AutoFit; 3367 3335 worksheet.Range['A1', 'F' + LineString].Select; 3368 3336 worksheet.Range['A1', 'F' + LineString].AutoFormat(12, true, true, true, true, true, true); 3369 3337 if length(StrForHeader) > 250 then 3338 worksheet.PageSetup.CenterHeader := ShortHeader // large header does not work (excel errors when > 255 char) 3339 else 3340 worksheet.PageSetup.CenterHeader := StrForHeader; 3370 3341 if topflag then 3371 3342 mnuPopGraphStayOnTopClick(self); … … 3575 3546 begin 3576 3547 textvalue := ValueText(aChart, aSeries, aIndex); 3548 textvalue := StringReplace(textvalue, ' 00:00', '', [rfReplaceAll]); 3577 3549 dttm := Piece(textvalue, '^', 3); 3578 if copy(textvalue, length(textvalue) - 5, length(textvalue)) = ' 00:00' then3579 dttm := Pieces(dttm, ' ', 1, 3);3580 3550 textvalue1 := Piece(textvalue, '^', 2) + ' ' + dttm; 3581 3551 textvalue2 := Piece(textvalue, '^', 4) + ' ' + Piece(textvalue, '^', 5); … … 3646 3616 //Assign(templist); 3647 3617 if aDate <> aDate2 then 3648 titlemsg := aTypeName + ' occur ences for ' + FormatDateTime('mmm d, yyyy', aDate) +3618 titlemsg := aTypeName + ' occurrences for ' + FormatDateTime('mmm d, yyyy', aDate) + 3649 3619 ' - ' + FormatDateTime('mmm d, yyyy', aDate2) 3650 3620 else 3651 titlemsg := aTypeName + ' occur ences for ' + FormatDateTime('mmm d, yyyy', aDate);3621 titlemsg := aTypeName + ' occurrences for ' + FormatDateTime('mmm d, yyyy', aDate); 3652 3622 Insert(0, firstline); 3653 3623 Insert(1, secondline); … … 3679 3649 dtdata1 := strtofloatdef(Piece(datax, '^', 3), -1); 3680 3650 fmdate1 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata1); 3681 if copy(fmdate1, length(fmdate1) - 5, length(fmdate1)) = ' 00:00' then 3682 fmdate1 := copy(fmdate1, 1, length(fmdate1) - 5) + ' '; 3651 fmdate1 := StringReplace(fmdate1, ' 00:00', '', [rfReplaceAll]); 3683 3652 dtdata2 := strtofloatdef(Piece(datax, '^', 4), -1); 3684 3653 fmdate2 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata2); 3685 if copy(fmdate2, length(fmdate2) - 5, length(fmdate2)) = ' 00:00' then 3686 fmdate2 := copy(fmdate2, 1, length(fmdate2) - 5) + ' '; 3654 fmdate2 := StringReplace(fmdate2, ' 00:00', '', [rfReplaceAll]); 3687 3655 if (dtdata2 > dt1) and (dtdata1 < dt2) then 3688 3656 begin … … 3767 3735 spacer := Copy(BIG_SPACES, 1, 40 - length(results)); 3768 3736 results := results + ' ' + spacer + Piece(textvalue, '^', 6); 3769 if copy(results, length(results) - 5, length(results)) = ' 00:00' then 3770 results := copy(results, 1, length(results) - 5); 3737 results := StringReplace(results, ' 00:00', '', [rfReplaceAll]); 3771 3738 tmpOtherList.Add(results); // item occurrence 3772 3739 end; … … 3994 3961 begin 3995 3962 textvalue := ValueText(aChart, aSeries, tmp); 3963 textvalue := StringReplace(textvalue, ' 00:00', '', [rfReplaceAll]); 3996 3964 dttm := Piece(textvalue, '^', 3); 3997 if copy(textvalue, length(textvalue) - 5, length(textvalue)) = ' 00:00' then3998 dttm := Pieces(dttm, ' ', 1, 3);3999 3965 textvalue1 := Piece(textvalue, '^', 2) + ' ' + dttm; 4000 3966 textvalue2 := Piece(textvalue, '^', 4) + ' ' + Piece(textvalue, '^', 5); … … 4063 4029 mnuPopGraphCopy.Enabled := mnuPopGraphSwap.Enabled; 4064 4030 mnuPopGraphPrint.Enabled := mnuPopGraphSwap.Enabled; 4065 mnuPopGraphExport.Enabled := mnuPopGraphSwap.Enabled; 4066 4031 4067 4032 with pnlMain.Parent do 4068 4033 if BorderWidth <> 1 then // only do on float Graph … … 4233 4198 tmpStr := Patient.Name + ' ' + Patient.SSN; 4234 4199 tmpItem := tmpStr + StringOfChar(' ', 39 - Length(tmpStr)) + Encounter.LocationName; 4235 { TODO -oRV -cWVEHR Long Age : Changed to use long age } 4236 //tmpStr := FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + IntToStr(Patient.Age) + ')'; 4237 tmpStr := FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + GetPatientBriefAge(Patient.DFN) + ')'; 4238 {} 4200 tmpStr := FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + IntToStr(Patient.Age) + ')'; 4239 4201 tmpItem := tmpItem + StringOfChar(' ', 74 - (Length(tmpItem) + Length(tmpStr))) + tmpStr; 4240 4202 Add(tmpItem); … … 4249 4211 end; 4250 4212 4251 procedure TfrmGraphs.CreateExcelPatientHeader(var HeaderList: TStringList; PageTitle, DateRange: string);4213 procedure TfrmGraphs.CreateExcelPatientHeader(var HeaderList: TStringList; PageTitle, Warning, DateRange: string); 4252 4214 // this procedure modified from rReports 4253 4215 var 4254 4216 tmpItem: string; 4255 4217 begin 4218 if Warning = TXT_INFO then Warning := ' '; 4256 4219 with HeaderList do 4257 4220 begin … … 4263 4226 + FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + IntToStr(Patient.Age) + ')'; 4264 4227 Add(tmpItem); 4265 //Add(TXT_COPY_DISCLAIMER); // put on footer to avoid length problems4228 Add(TXT_COPY_DISCLAIMER); 4266 4229 Add(DateRange); 4230 Add(Warning); 4267 4231 end; 4268 4232 end; … … 4446 4410 HideGraphs(true); 4447 4411 DateSteps(dateranges); 4412 uDateStart := FGraphSetting.FMStartDate; 4413 uDateStop := FGraphSetting.FMStopDate; 4448 4414 FilterListView(FGraphSetting.FMStartDate, FGraphSetting.FMStopDate); 4449 4415 SelReset(GtslSelCopyTop, lvwItemsTop); … … 4821 4787 pnlItemsBottomInfo.Tag := 1; 4822 4788 lvwItemsBottom.ClearSelection; 4823 if FTooManyItems then FTooManyItems := false 4824 else 4825 begin 4826 ShowMsg('Too many items to graph'); 4827 FTooManyItems := true; // flag so that warning will not be displayed twice 4828 end; 4789 ShowMsg('Too many items to graph'); 4829 4790 for i := 0 to GtslSelPrevBottomFloat.Count - 1 do 4830 4791 lvwItemsBottom.Items[strtoint(GtslSelPrevBottomFloat[i])].Selected := true; … … 5103 5064 if length(itempart) = 0 then break; 5104 5065 if Pos('811.2~', itempart) = 0 then 5105 newprofile := newprofile + itempart +'|'5066 newprofile := newprofile + '|' 5106 5067 else 5107 5068 taxonomies.Add(itempart); … … 5137 5098 begin 5138 5099 Application.ProcessMessages; 5139 GtslTemp.Clear;5140 5100 profiletype := Piece(aProfile, '^', 1); 5141 5101 profilename := Piece(aProfile, '^', 2); … … 5232 5192 else if aListView = lvwItemsBottom then 5233 5193 lvwItemsBottom.ClearSelection; 5234 if FTooManyItems then FTooManyItems := false5235 else5236 begin5237 ShowMsg('Too many items to graph');5238 FTooManyItems := true; // flag so that warning will not be displayed twice5239 end;5240 5194 end; 5241 5195 if aListView = lvwItemsTop then … … 5245 5199 end; 5246 5200 5247 procedure TfrmGraphs.SpecCheck(var spec1, spec2, spec3, spec4: string; var singlespec: boolean);5248 var5249 i: integer;5250 checkstring, datastring: string;5251 begin5252 singlespec := true;5253 spec1 := ''; spec2 := ''; spec3 := ''; spec4 := '';5254 GtslSpec1.Clear; GtslSpec2.Clear; GtslSpec3.Clear; GtslSpec4.Clear;5255 for i := 0 to GtslScratchLab.Count - 1 do5256 begin5257 datastring := GtslScratchLab[i];5258 checkstring := Pieces(datastring, '^', 1, 2) + '^' + Pieces(datastring, '^', 7, 8);5259 if length(spec1) = 0 then5260 begin5261 spec1 := checkstring;5262 GtslSpec1.Add(datastring)5263 end5264 else if spec1 = checkstring then5265 GtslSpec1.Add(datastring)5266 else if length(spec2) = 0 then5267 begin5268 singlespec := false;5269 spec2 := checkstring;5270 GtslSpec2.Add(datastring)5271 end5272 else if spec2 = checkstring then5273 GtslSpec2.Add(datastring)5274 else if length(spec3) = 0 then5275 begin5276 spec3 := checkstring;5277 GtslSpec3.Add(datastring)5278 end5279 else if spec3 = checkstring then5280 GtslSpec3.Add(datastring)5281 else5282 begin5283 spec4 := checkstring;5284 GtslSpec4.Add(datastring)5285 end;5286 end;5287 end;5288 5289 procedure TfrmGraphs.SpecSet(var spec1, spec2, spec3, spec4: string; aItemType, aItemName: string);5290 var5291 i: integer;5292 itemnum, newitemname, newitemnum, newstring: string;5293 begin5294 GtslMultiSpec.Clear;5295 itemnum := Piece(aItemType, '^', 2);5296 if length(spec1) > 0 then5297 begin5298 newitemnum := itemnum + '.1';5299 newitemname := aItemName + ' (' + LowerCase(Piece(spec1, '^', 4)) + ')';5300 for i := 0 to GtslItems.Count - 1 do5301 if aItemType = Pieces(GtslItems[i], '^', 1, 2) then5302 begin5303 newstring := GtslItems[i];5304 GtslItems.Delete(i);5305 break;5306 end;5307 for i := 0 to GtslData.Count - 1 do5308 if aItemType = Pieces(GtslData[i], '^', 1, 2) then5309 GtslData.Delete(i);5310 ResetSpec(GtslSpec1, itemnum, newitemnum, newitemname, newstring);5311 end;5312 if length(spec2) > 0 then5313 begin5314 newitemnum := itemnum + '.2';5315 newitemname := aItemName + ' (' + LowerCase(Piece(spec2, '^', 4)) + ')';5316 ResetSpec(GtslSpec2, itemnum, newitemnum, newitemname, newstring);5317 end;5318 if length(spec3) > 0 then5319 begin5320 newitemnum := itemnum + '.3';5321 newitemname := aItemName + ' (' + LowerCase(Piece(spec3, '^', 4)) + ')';5322 ResetSpec(GtslSpec3, itemnum, newitemnum, newitemname, newstring);5323 end;5324 if length(spec4) > 0 then5325 begin5326 newitemnum := itemnum + '.4';5327 newitemname := aItemName + ' (other)'; // not specific after 3 specimens (from same time)5328 ResetSpec(GtslSpec4, itemnum, newitemnum, newitemname, newstring);5329 end;5330 end;5331 5332 5201 procedure TfrmGraphs.LabAdd(aListView: TListView; filename: string; aIndex, oldlisting: integer; selectlab: boolean); 5333 5202 var … … 5339 5208 aListItem.SubItems.Add(filename); 5340 5209 aListItem.SubItems.Add(''); 5341 aListItem.SubItems.Add( '');5210 aListItem.SubItems.Add(Piece(GtslMultiSpec[aIndex], '^', 8)); 5342 5211 aGraphItem := TGraphItem.Create; 5343 5212 aGraphItem.Values := GtslMultiSpec[aIndex]; … … 5374 5243 i, oldlisting: integer; 5375 5244 filename: string; 5376 spec1, spec2, spec3, spec4: string;5377 5245 begin 5378 5246 if getdata then 5379 5247 FastAssign(rpcGetItemData(aItemType, FMTimeStamp, Patient.DFN), GtslScratchLab); 5380 Spec Check(spec1, spec2, spec3, spec4, singlespec);5248 SpecRefCheck(aItemType, aItemName, singlespec); 5381 5249 if singlespec then 5382 5250 FastAddStrings(GtslScratchLab, GtslData) 5383 5251 else 5384 5252 begin 5385 Spec Set(spec1, spec2, spec3, spec4,aItemType, aItemName);5253 SpecRefSet(aItemType, aItemName); 5386 5254 filename := FileNameX('63'); 5387 5255 … … 5408 5276 end; 5409 5277 end; 5278 5279 // sort out for multiple spec or ref ranges 5280 procedure TfrmGraphs.SpecRefCheck(aItemType, aItemName: string; var singlespec: boolean); 5281 var 5282 i: integer; 5283 aitem, aspec, checkstring, datastring, refrange, low, high, units, srcheck, srcheck1: string; 5284 begin 5285 GtslSpec1.Sorted := true; 5286 GtslSpec1.Clear; 5287 singlespec := true; 5288 srcheck1 := ''; 5289 if GtslScratchLab.Count < 1 then exit; 5290 for i := 0 to GtslScratchLab.Count - 1 do 5291 begin 5292 datastring := GtslScratchLab[i]; 5293 aitem := Piece(datastring, '^', 2); 5294 aspec := Piece(datastring, '^', 7); 5295 refrange := Piece(datastring, '^', 10); 5296 units := Piece(datastring, '^', 11); 5297 if length(refrange) = 0 then 5298 begin 5299 RefUnits(aitem, aspec, low, high, units); 5300 refrange := low + '!' + high; 5301 SetPiece(datastring, '^', 10, refrange); 5302 SetPiece(datastring, '^', 11, units); 5303 end; 5304 srcheck := aitem + '^' + aspec + '^' + refrange + '^' + units; 5305 checkstring := UpperCase(srcheck) + '^' + datastring; 5306 GtslSpec1.Add(checkstring); 5307 if i = 0 then srcheck1 := srcheck 5308 else if srcheck1 <> srcheck then singlespec := false; 5309 end; 5310 end; 5311 5312 // for mutiple spec ranges replace data and items 5313 procedure TfrmGraphs.SpecRefSet(aItemType, aItemName: string); 5314 5315 function MultiRef(aline: string): boolean; 5316 // check for multiple ref ranges on test/specimen 5317 var 5318 i, cnt: integer; 5319 listline, testspec, checkspec: string; 5320 begin 5321 Result := false; 5322 checkspec := Piece(aline, '^', 2); 5323 cnt := 0; 5324 for i := 0 to GtslSpec2.Count - 1 do 5325 begin 5326 listline := GtslSpec2[i]; 5327 testspec := Piece(listline, '^', 2); 5328 if testspec = checkspec then cnt := cnt + 1; 5329 if cnt > 1 then 5330 begin 5331 Result := true; 5332 break; 5333 end; 5334 end; 5335 end; 5336 5337 var 5338 i, lastnum, cnt: integer; 5339 newtsru, oldtsru, listline, newline, oldline, newtest, oldspec, refrange: string; 5340 multispec: boolean; 5341 begin 5342 lastnum := GtslSpec1.Count - 1; 5343 if lastnum < 0 then 5344 exit; 5345 GtslSpec2.Clear; GtslSpec3.Clear; GtslSpec4.Clear; 5346 GtslSpec1.Sort; 5347 oldtsru := ''; newtest := ''; 5348 oldspec := Piece(GtslSpec1[0], '^', 2); 5349 multispec := false; 5350 cnt := 0; 5351 for i := GtslSpec1.Count - 1 downto 0 do // backwards to assure most recent item 5352 begin 5353 listline := GtslSpec1[i]; 5354 if Piece(listline, '^', 2) <> oldspec then multispec := true; 5355 newtsru := Pieces(listline, '^', 1 , 4); 5356 if newtsru <> oldtsru then 5357 begin 5358 cnt := cnt + 1; 5359 newtest := Piece(listline, '^', 6) + '.' + inttostr(cnt); 5360 SetPiece(listline, '^', 1, newtest); 5361 GtslSpec2.Add(listline); 5362 oldtsru := newtsru; 5363 end; 5364 newline := Pieces(listline, '^', 5, 15); 5365 SetPiece(newline, '^', 2, newtest); 5366 GtslSpec3.Add(newline); 5367 end; 5368 oldline := ''; 5369 for i := 0 to GtslItems.Count - 1 do 5370 if aItemType = Pieces(GtslItems[i], '^', 1, 2) then 5371 begin 5372 oldline := GtslItems[i]; 5373 GtslItems.Delete(i); 5374 break; 5375 end; 5376 for i := 0 to GtslSpec2.Count - 1 do 5377 begin 5378 listline := GtslSpec2[i]; 5379 newtest := Piece(oldline, '^', 4); 5380 if multispec then 5381 newtest := newtest + ' (' + LowerCase(Piece(listline, '^', 12)) + ')'; 5382 if MultiRef(listline) then 5383 begin 5384 refrange := Piece(listline, '^', 14); 5385 newtest := newtest + ' [' 5386 + Piece(refrange, '!', 1) + '-' 5387 + Piece(refrange, '!', 2) + ']'; 5388 end; 5389 newline := oldline; 5390 SetPiece(newline, '^', 2, Piece(listline, '^', 1)); 5391 SetPiece(newline, '^', 4, newtest); 5392 SetPiece(newline, '^', 6, Piece(listline, '^', 7)); 5393 SetPiece(newline, '^', 10, Piece(listline, '^', 14)); 5394 SetPiece(newline, '^', 11, Piece(listline, '^', 15)); 5395 GtslSpec4.Add(newline); 5396 end; 5397 FastAddStrings(GtslSpec4, GtslItems); 5398 FastAddStrings(GtslSpec3, GtslData); 5399 FastAssign(GtslSpec4, GtslMultiSpec); 5400 end; 5401 5402 5410 5403 5411 5404 procedure TfrmGraphs.RefUnits(aItem, aSpec: string; var low, high, units: string); … … 5498 5491 end; 5499 5492 end; 5500 end;5501 5502 procedure TfrmGraphs.ResetSpec(aList: TStrings; aItemNum, aNewItemNum, aNewItemName, aNewString: string);5503 var //also add itemx5504 i: integer;5505 checkdate, newdate: double;5506 newestdate, newstring: string;5507 begin5508 GtslTemp.Clear;5509 newdate := 0;5510 for i := 0 to aList.Count - 1 do5511 begin5512 newstring := aList[i];5513 newestdate := FMCorrectedDate(Piece(newstring, '^', 3));5514 checkdate := strtofloatdef(newestdate, -BIG_NUMBER);5515 if checkdate > newdate then newdate := checkdate;5516 SetPiece(newstring, '^', 2, aNewItemNum);5517 GtslTemp.Add(newstring);5518 end;5519 FastAddStrings(GtslTemp, GtslData);5520 newestdate := floattostr(newdate);5521 SetPiece(aNewString, '^', 2, aNewItemNum);5522 SetPiece(aNewString, '^', 4, aNewItemName);5523 SetPiece(aNewString, '^', 6, newestdate);5524 GtslItems.Add(aNewString);5525 GtslMultiSpec.Add(aNewString);5526 5493 end; 5527 5494 … … 5639 5606 var 5640 5607 i: integer; 5641 checktag, checkindex, checkseries, first datecheck, firsttext, nonstring: string;5608 checktag, checkindex, checkseries, firsttext, nonstring: string; 5642 5609 begin 5643 5610 firsttext := MarkText; … … 5649 5616 begin 5650 5617 checkseries := inttostr(Sender.Tag - BIG_NUMBER); 5651 firstdatecheck := floattostr(sender.XValue[ValueIndex]);5652 5618 checktag := inttostr(Sender.ParentChart.Tag); 5653 5619 checkindex := inttostr(ValueIndex + 1); … … 5676 5642 end 5677 5643 else if Sender is TLineSeries then 5678 MarkText := firsttext; 5644 MarkText := firsttext; 5679 5645 end; 5680 5646 … … 5728 5694 displayheight, displaynum, i: integer; 5729 5695 begin 5730 if Not Assigned(FGraphSetting) then Exit;5731 5696 ChartOnZoom(chartDatelineTop); 5732 5697 with aScrollBox do … … 6021 5986 if serLine.Title = 'Blood Pressure' then 6022 5987 BPCheck(aChart, aFileType, serLine, serBPDiastolic, serBPMean); 6023 for i:= 0 to GtslTemp.Count - 1 do5988 for i:= GtslTemp.Count - 1 downto 0 do // go from oldest first 6024 5989 begin 6025 5990 checkdata := GtslTemp[i]; … … 6557 6522 hintformat := Piece(TypeString(Piece(Piece(astring, '^', 1), ' ', 1)), '^', 9); 6558 6523 titlename := Piece(astring, '^', 2); 6524 astring := StringReplace(astring, ' 00:00', '', [rfReplaceAll]); 6559 6525 dttm := Piece(astring, '^', 3); 6560 if copy(astring, length(astring) - 5, length(astring)) = ' 00:00' then6561 dttm := Pieces(dttm, ' ', 1, 3);6562 6526 itemname := Piece(astring, '^', 4); 6563 6527 info := itemname + '~' + Piece(astring, '^', 5) + '~'; … … 6935 6899 end; 6936 6900 6937 procedure TfrmGraphs.lstViewsBottomMouseDown(Sender: TObject;6938 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);6939 begin6940 // for right mouse click make arrangements for view definition ****************6941 end;6942 6943 6901 procedure TfrmGraphs.lvwItemsBottomChange(Sender: TObject; Item: TListItem; 6944 6902 Change: TItemChange); … … 6977 6935 pnlItemsTopInfo.Tag := 1; 6978 6936 lvwItemsTop.ClearSelection; 6979 if FTooManyItems then FTooManyItems := false 6980 else 6981 begin 6982 ShowMsg('Too many items to graph'); 6983 FTooManyItems := true; // flag so that warning will not be displayed twice 6984 end; 6937 ShowMsg('Too many items to graph'); 6985 6938 for i := 0 to GtslSelPrevTopFloat.Count - 1 do 6986 6939 lvwItemsTop.Items[strtoint(GtslSelPrevTopFloat[i])].Selected := true;
Note:
See TracChangeset
for help on using the changeset viewer.