1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595: 596: 597: 598: 599: 600: 601: 602: 603: 604: 605: 606: 607: 608: 609: 610: 611: 612: 613: 614: 615: 616: 617: 618: 619: 620: 621: 622: 623: 624: 625: 626: 627: 628: 629: 630: 631: 632: 633: 634: 635: 636: 637: 638: 639: 640: 641: 642: 643: 644: 645: 646: 647: 648: 649: 650: 651: 652: 653: 654: 655: 656: 657: 658: 659: 660: 661: 662: 663: 664: 665: 666: 667: 668: 669: 670: 671: 672: 673: 674: 675: 676: 677: 678: 679: 680: 681: 682: 683: 684: 685: 686: 687: 688: 689: 690: 691: 692: 693: 694: 695: 696: 697: 698: 699: 700: 701: 702: 703: 704: 705: 706: 707: 708: 709: 710: 711: 712: 713: 714: 715: 716: 717: 718: 719: 720: 721: 722: 723: 724: 725: 726: 727: 728: 729: 730: 731: 732: 733: 734: 735: 736: 737: 738: 739: 740: 741: 742: 743: 744: 745: 746: 747: 748: 749: 750: 751: 752: 753: 754: 755: 756: 757: 758: 759: 760: 761: 762: 763: 764: 765: 766: 767: 768: 769: 770: 771: 772: 773: 774: 775: 776: 777: 778: 779: 780: 781: 782: 783: 784: 785: 786: 787: 788: 789: 790: 791: 792: 793: 794: 795: 796: 797: 798: 799: 800: 801: 802: 803: 804: 805: 806: 807: 808: 809: 810: 811: 812: 813: 814: 815: 816: 817: 818: 819: 820: 821: 822: 823: 824: 825: 826: 827: 828: 829: 830: 831: 832: 833: 834: 835: 836: 837: 838: 839: 840: 841: 842: 843: 844: 845: 846: 847: 848: 849: 850: 851: 852: 853: 854: 855: 856: 857: 858: 859: 860: 861: 862: 863: 864: 865: 866: 867: 868: 869: 870: 871: 872: 873: 874: 875: 876: 877: 878: 879: 880: 881: 882: 883: 884: 885: 886: 887: 888: 889: 890: 891: 892: 893: 894: 895: 896: 897: 898: 899: 900: 901: 902: 903: 904: 905: 906: 907: 908: 909: 910: 911: 912: 913: 914: 915: 916: 917: 918: 919: 920: 921: 922: 923: 924: 925: 926: 927: 928: 929: 930: 931: 932: 933: 934: 935: 936: 937: 938: 939: 940: 941: 942: 943: 944: 945: 946: 947: 948: 949: 950: 951: 952: 953: 954: 955: 956: 957: 958: 959: 960: 961: 962: 963: 964: 965: 966: 967: 968: 969: 970: 971: 972: 973: 974: 975: 976: 977: 978: 979: 980: 981: 982: 983: 984: 985: 986: 987: 988: 989: 990: 991: 992: 993: 994: 995: 996: 997: 998: 999: 1000: 1001: 1002: 1003: 1004: 1005: 1006: 1007: 1008: 1009: 1010: 1011: 1012: 1013: 1014: 1015: 1016: 1017: 1018: 1019: 1020: 1021: 1022: 1023: 1024: 1025: 1026: 1027: 1028: 1029: 1030: 1031: 1032: 1033: 1034: 1035: 1036: 1037: 1038: 1039: 1040: 1041: 1042: 1043: 1044: 1045: 1046: 1047: 1048: 1049: 1050: 1051: 1052: 1053: 1054: 1055: 1056: 1057: 1058: 1059: 1060: 1061: 1062: 1063: 1064: 1065: 1066: 1067: 1068: 1069: 1070: 1071: 1072: 1073: 1074: 1075: 1076: 1077: 1078: 1079: 1080: 1081: 1082: 1083: 1084: 1085: 1086: 1087: 1088: 1089: 1090: 1091: 1092: 1093: 1094: 1095: 1096: 1097: 1098: 1099: 1100: 1101: 1102: 1103: 1104: 1105: 1106: 1107: 1108: 1109: 1110: 1111: 1112: 1113: 1114: 1115: 1116: 1117: 1118: 1119: 1120: 1121: 1122: 1123: 1124: 1125: 1126: 1127: 1128: 1129: 1130: 1131: 1132: 1133: 1134: 1135: 1136: 1137: 1138: 1139: 1140: 1141: 1142: 1143: 1144: 1145: 1146: 1147: 1148: 1149: 1150: 1151: 1152: 1153: 1154: 1155: 1156: 1157: 1158: 1159: 1160: 1161: 1162: 1163: 1164: 1165: 1166: 1167: 1168: 1169: 1170: 1171: 1172: 1173: 1174: 1175: 1176: 1177: 1178: 1179: 1180: 1181: 1182: 1183: 1184: 1185: 1186: 1187: 1188: 1189: 1190: 1191: 1192: 1193: 1194: 1195: 1196: 1197: 1198: 1199: 1200: 1201: 1202: 1203: 1204: 1205: 1206: 1207: 1208: 1209: 1210: 1211: 1212: 1213: 1214: 1215: 1216: 1217: 1218: 1219: 1220: 1221: 1222: 1223: 1224: 1225: 1226: 1227: 1228: 1229: 1230: 1231: 1232: 1233: 1234: 1235: 1236: 1237: 1238: 1239: 1240: 1241: 1242: 1243: 1244: 1245: 1246: 1247: 1248: 1249: 1250: 1251: 1252: 1253: 1254: 1255: 1256: 1257: 1258: 1259: 1260: 1261: 1262: 1263: 1264: 1265: 1266: 1267: 1268: 1269: 1270: 1271: 1272: 1273: 1274: 1275: 1276: 1277: 1278: 1279: 1280: 1281: 1282: 1283: 1284: 1285: 1286: 1287: 1288: 1289: 1290: 1291: 1292: 1293: 1294: 1295: 1296: 1297: 1298: 1299: 1300: 1301: 1302: 1303: 1304: 1305: 1306: 1307: 1308: 1309: 1310: 1311: 1312: 1313: 1314: 1315: 1316: 1317: 1318: 1319: 1320: 1321: 1322: 1323: 1324: 1325: 1326: 1327: 1328: 1329: 1330: 1331: 1332: 1333: 1334: 1335: 1336: 1337: 1338: 1339: 1340: 1341: 1342: 1343: 1344: 1345: 1346: 1347: 1348: 1349: 1350: 1351: 1352: 1353: 1354: 1355: 1356: 1357: 1358: 1359: 1360: 1361: 1362: 1363: 1364: 1365: 1366: 1367: 1368: 1369: 1370: 1371: 1372: 1373: 1374: 1375: 1376: 1377: 1378: 1379: 1380: 1381: 1382: 1383: 1384: 1385: 1386: 1387: 1388: 1389: 1390: 1391: 1392: 1393: 1394: 1395: 1396: 1397: 1398: 1399: 1400: 1401: 1402: 1403: 1404: 1405: 1406: 1407: 1408: 1409: 1410: 1411: 1412: 1413: 1414: 1415: 1416: 1417: 1418: 1419: 1420: 1421: 1422: 1423: 1424: 1425: 1426: 1427: 1428: 1429: 1430: 1431: 1432: 1433: 1434: 1435: 1436: 1437: 1438: 1439: 1440: 1441: 1442: 1443: 1444: 1445: 1446: 1447: 1448: 1449: 1450: 1451: 1452: 1453: 1454: 1455: 1456: 1457: 1458: 1459: 1460: 1461: 1462: 1463: 1464: 1465: 1466: 1467: 1468: 1469: 1470: 1471: 1472: 1473: 1474: 1475: 1476: 1477: 1478: 1479: 1480: 1481: 1482: 1483: 1484: 1485: 1486: 1487: 1488: 1489: 1490: 1491: 1492: 1493: 1494: 1495:
| unit AOI;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, Grids, DBGrids, ADODB, StdCtrls, DateUtils, Series, TeEngine, ExtCtrls, TeeProcs, Chart, DbChart, ComCtrls, IniFiles, Printers, Mask, OleServer, Excel97, ComObj, ShellApi, IdGlobal, Jpeg ;
type TfrmAOI = class(TForm) Label1: TLabel; Label2: TLabel; Button1: TButton; PageControl1: TPageControl; TabSheet1: TTabSheet; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; ListView1: TListView; ListView2: TListView; ListView3: TListView; ListView4: TListView; ComboBox1: TComboBox; DateTimePicker1: TDateTimePicker; DateTimePicker2: TDateTimePicker; TabSheet2: TTabSheet; ListView5: TListView; TabSheet3: TTabSheet; Chart1: TChart; Series1: TBarSeries; Series2: TBarSeries; Series3: TBarSeries; Series4: TBarSeries; Series5: TBarSeries; Button2: TButton; Button3: TButton; PrintDialog1: TPrintDialog; SaveDialog1: TSaveDialog; Button5: TButton; TabSheet5: TTabSheet; Label7: TLabel; Edit3: TEdit; Label8: TLabel; Edit4: TEdit; TabSheet6: TTabSheet; Button6: TButton; ListView6: TListView; Chart3: TChart; Series6: TBarSeries; Series7: TBarSeries; Label9: TLabel; MaskEdit1: TMaskEdit; Series8: TLineSeries; Series9: TLineSeries; Series10: TBarSeries; Button4: TButton; procedure Button1Click(Sender: TObject); procedure ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); procedure ListView2Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); procedure ListView3Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); procedure Button4Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Chart1GetLegendText(Sender: TCustomAxisPanel; LegendStyle: TLegendStyle; Index: Integer; var LegendText: String); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Chart2GetLegendText(Sender: TCustomAxisPanel; LegendStyle: TLegendStyle; Index: Integer; var LegendText: String); procedure ListView6Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); procedure Edit3Change(Sender: TObject); procedure Edit4Change(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Chart3GetLegendText(Sender: TCustomAxisPanel; LegendStyle: TLegendStyle; Index: Integer; var LegendText: String); procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); private public end;
var frmAOI: TfrmAOI; Felder: array[0..22] of String;
implementation
uses funktionen, loading;
{$R *.dfm}
procedure Protokoll(Meldung: STring); var t_Datei: TextFile; begin AssignFile(t_Datei, 'fehler.txt'); ReSet(t_datei); Append(t_Datei); WriteLn(t_Datei, DateTimeToStr(now) + ' ' + Meldung + ' : ' + SysErrorMessage(GetLastError)); CloseFile(t_Datei); end;
procedure Zeile_Aufschluesseln(Zeile: String); var i, izelle: Integer; begin ZeroMemory(@Felder,SizeOf(Felder)); izelle := 0; for i:=1 to length(zeile) do begin if Zeile[i] <> ';' then Felder[izelle] := Felder[izelle] + zeile[i] else inc(izelle); end; end;
function GetSchicht(Zeit: TTime): Char; var FruehStart, FruehEnde, SpaetEnde, SpaetStart, NachtStart, NachtEnde, pfad:String; ini: TIniFile; begin result := 'N'; pfad := ExtractFilePath(ParamStr(0)); pfad := pfad + '\mde.ini'; ini:=TIniFile.Create(pfad); FruehStart:= ini.ReadString('Allgemein','FruehStart',FruehStart); FruehEnde:= ini.ReadString('Allgemein','FruehEnde',FruehEnde); SpaetStart:= ini.ReadString('Allgemein','SpaetStart',SpaetStart); SpaetEnde:= ini.ReadString('Allgemein','SpaetEnde',SpaetEnde); NachtStart:= ini.ReadString('Allgemein','NachtStart',NachtStart); NachtEnde:= ini.ReadString('Allgemein','NachtEnde',NachtEnde); ini.free; if Zeit >= StrToTime(FormatDateTime('hh:mm',StrToTime(FormatDateTime('hh:nn', StrToDateTime(FruehStart))))) then if Zeit <= StrToTime(FormatDateTime('hh:mm',StrToTime(FormatDateTime('hh:nn', StrToDateTime(FruehEnde))))) then result := 'F'; if Zeit >= StrToTime(FormatDateTime('hh:mm',StrToTime(FormatDateTime('hh:nn', StrToDateTime(SpaetStart))))) then if Zeit <= StrToTime(FormatDateTime('hh:mm',StrToTime(FormatDateTime('hh:nn', StrToDateTime(SpaetEnde))))) then result := 'S'; if (Zeit <= StrToTime(FormatDateTime('hh:mm',StrToTime(FormatDateTime('hh:nn', StrToDateTime(NachtEnde)))))) or (Zeit >= StrToTime(FormatDateTime('hh:nn',StrToTime(FormatDateTime('hh:nn', StrToDateTime(NachtStart)))))) then result := 'N'; end;
procedure Berechne_DiagrammData(); var Datum: TDateTime; i, z, index, AnzahlLoetstellen, AnzahlBT, AnzahlSeriennummern: Integer; FruehFehlerDia, SpaetFehlerDia, NachtFehlerDia: array[0..10] of Word; SeriennummerDia, FehlerhafteBGRDia: Array[0..3] of Integer; FehlerBauteileDia: Array[0..1000] of ShortString; check: Boolean; ListItem : TListItem; tmpBeschriftung, Schicht: String; Frueh, Spaet: Extended; begin frmAOI.ListView5.Clear; frmAOI.ListView6.Clear; AnzahlLoetstellen := StrToInt(frmAOI.Edit3.Text); AnzahlBT := StrToInt(frmAOI.Edit4.Text); Frueh := 0; Spaet := 0; Datum := StrToDate(FormatDateTime('dd.mm.yyyy', frmAOI.DateTimePicker1.Date)); While Datum <> StrToDate(FormatDateTime('dd.mm.yyyy', frmAOI.DateTimePicker2.Date))+1 do begin ZeroMemory(@FruehFehlerDia,SizeOf(FruehFehlerDia)); ZeroMemory(@SpaetFehlerDia,SizeOf(SpaetFehlerDia)); ZeroMemory(@NachtFehlerDia,SizeOf(NachtFehlerDia)); ZeroMemory(@SeriennummerDia,SizeOf(SeriennummerDia)); ZeroMemory(@FehlerhafteBGRDia,SizeOf(FehlerhafteBGRDia)); check:= false; for i:=0 to frmAOI.Listview1.Items.Count-1 do begin if StrToDate(frmAOI.ListView1.Items[i].Caption) = Datum then begin index := StrToInt(frmAOI.ListView1.Items[i].SubItems[1]); if frmAOI.ListView1.Items[i].SubItems[3] = 'F' then FruehFehlerDia[index] := FruehFehlerDia[index] + StrToInt(frmAOI.ListView1.Items[i].SubItems[0]); if frmAOI.ListView1.Items[i].SubItems[3] = 'S' then SpaetFehlerDia[index] := SpaetFehlerDia[index] + StrToInt(frmAOI.ListView1.Items[i].SubItems[0]); if frmAOI.ListView1.Items[i].SubItems[3] = 'N' then NachtFehlerDia[index] := NachtFehlerDia[index] + StrToInt(frmAOI.ListView1.Items[i].SubItems[0]); check := true; end else begin if check = true then break; end; end; check:= false; for i:=0 to frmAOI.Listview4.Items.Count-1 do begin if StrToDate(frmAOI.ListView4.Items[i].Caption) = Datum then begin if frmAOI.ListView4.Items[i].SubItems[1] = 'F' then SeriennummerDia[0] := StrToInt(frmAOI.ListView4.Items[i].SubItems[0]); if frmAOI.ListView4.Items[i].SubItems[1] = 'S' then SeriennummerDia[1] := StrToInt(frmAOI.ListView4.Items[i].SubItems[0]); if frmAOI.ListView4.Items[i].SubItems[1] = 'N' then SeriennummerDia[2] := StrToInt(frmAOI.ListView4.Items[i].SubItems[0]); check := true; end else begin if check = true then break; end; end; check:= false; for i:=0 to frmAOI.Listview2.Items.Count-1 do begin if StrToDate(frmAOI.ListView2.Items[i].Caption) = Datum then begin if frmAOI.ListView2.Items[i].SubItems[2] = 'F' then FehlerhafteBGRDia[0] := FehlerhafteBGRDia[0] + 1; if frmAOI.ListView2.Items[i].SubItems[2] = 'S' then FehlerhafteBGRDia[1] := FehlerhafteBGRDia[1] + 1; if frmAOI.ListView2.Items[i].SubItems[2] = 'N' then FehlerhafteBGRDia[2] := FehlerhafteBGRDia[2] + 1; check := true; end else begin if check = true then break; end; end;
if SeriennummerDia[0] <> 0 then begin ListItem := frmAOI.ListView5.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', Datum); ListItem.SubItems.Add('F'); ListItem.SubItems.Add(IntToStr(FruehFehlerDia[4])); ListItem.SubItems.Add(FloatToStr(FruehFehlerDia[4]/(SeriennummerDia[0] * AnzahlLoetstellen)*1000000)); ListItem.SubItems.Add(IntToStr(FruehFehlerDia[3])); ListItem.SubItems.Add(FloatToStr(FruehFehlerDia[3]/(SeriennummerDia[0] * AnzahlLoetstellen)*1000000)); ListItem.SubItems.Add(IntToStr(FruehFehlerDia[1])); ListItem.SubItems.Add(FloatToStr(FruehFehlerDia[1]/(SeriennummerDia[0] * AnzahlBT)*1000000)); ListItem.SubItems.Add(IntToStr(FruehFehlerDia[6])); ListItem.SubItems.Add(FloatToStr(FruehFehlerDia[6]/(SeriennummerDia[0] * AnzahlBT)*1000000)); ListItem.SubItems.Add(IntToStr(FruehFehlerDia[2])); ListItem.SubItems.Add(FloatToStr(FruehFehlerDia[2]/(SeriennummerDia[0] * AnzahlBT)*1000000)); ListItem.SubItems.Add(IntToStr(FruehFehlerDia[9])); ListItem.SubItems.Add(FloatToStr(FruehFehlerDia[9]/(SeriennummerDia[0])*1000000)); ListItem.SubItems.Add(IntToStr(SeriennummerDia[0])); ListItem.SubItems.Add(IntToStr(FehlerhafteBGRDia[0])); ListItem.SubItems.Add(FloatToStr(FehlerhafteBGRDia[0]/(SeriennummerDia[0]/100))); ListItem.SubItems.Add(IntToStr(FruehFehlerDia[5])); ListItem.SubItems.Add(FloatToStr(FruehFehlerDia[5]/(SeriennummerDia[0] * AnzahlBT)*1000000)); end;
if SeriennummerDia[1] <> 0 then begin ListItem := frmAOI.ListView5.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', Datum); ListItem.SubItems.Add('S'); ListItem.SubItems.Add(IntToStr(SpaetFehlerDia[4])); ListItem.SubItems.Add(FloatToStr(SpaetFehlerDia[4]/(SeriennummerDia[1] * AnzahlLoetstellen)*1000000)); ListItem.SubItems.Add(IntToStr(SpaetFehlerDia[3])); ListItem.SubItems.Add(FloatToStr(SpaetFehlerDia[3]/(SeriennummerDia[1] * AnzahlLoetstellen)*1000000)); ListItem.SubItems.Add(IntToStr(SpaetFehlerDia[1])); ListItem.SubItems.Add(FloatToStr(SpaetFehlerDia[1]/(SeriennummerDia[1] * AnzahlBT)*1000000)); ListItem.SubItems.Add(IntToStr(SpaetFehlerDia[6])); ListItem.SubItems.Add(FloatToStr(SpaetFehlerDia[6]/(SeriennummerDia[1] * AnzahlBT)*1000000)); ListItem.SubItems.Add(IntToStr(SpaetFehlerDia[2])); ListItem.SubItems.Add(FloatToStr(SpaetFehlerDia[2]/(SeriennummerDia[1] * AnzahlBT)*1000000)); ListItem.SubItems.Add(IntToStr(SpaetFehlerDia[9])); ListItem.SubItems.Add(FloatToStr(SpaetFehlerDia[9]/(SeriennummerDia[1])*1000000)); ListItem.SubItems.Add(IntToStr(SeriennummerDia[1])); ListItem.SubItems.Add(IntToStr(FehlerhafteBGRDia[1])); ListItem.SubItems.Add(FloatToStr(FehlerhafteBGRDia[1]/(SeriennummerDia[1]/100))); ListItem.SubItems.Add(IntToStr(SpaetFehlerDia[5])); ListItem.SubItems.Add(FloatToStr(SpaetFehlerDia[5]/(SeriennummerDia[1] * AnzahlBT)*1000000)); end;
if SeriennummerDia[2] <> 0 then begin ListItem := frmAOI.ListView5.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', Datum); ListItem.SubItems.Add('N'); ListItem.SubItems.Add(IntToStr(NachtFehlerDia[4])); ListItem.SubItems.Add(FloatToStr(NachtFehlerDia[4]/(SeriennummerDia[2] * AnzahlLoetstellen)*1000000)); ListItem.SubItems.Add(IntToStr(NachtFehlerDia[3])); ListItem.SubItems.Add(FloatToStr(NachtFehlerDia[3]/(SeriennummerDia[2] * AnzahlLoetstellen)*1000000)); ListItem.SubItems.Add(IntToStr(NachtFehlerDia[1])); ListItem.SubItems.Add(FloatToStr(NachtFehlerDia[1]/(SeriennummerDia[2] * AnzahlBT)*1000000)); ListItem.SubItems.Add(IntToStr(NachtFehlerDia[6])); ListItem.SubItems.Add(FloatToStr(NachtFehlerDia[6]/(SeriennummerDia[2] * AnzahlBT)*1000000)); ListItem.SubItems.Add(IntToStr(NachtFehlerDia[2])); ListItem.SubItems.Add(FloatToStr(NachtFehlerDia[2]/(SeriennummerDia[2] * AnzahlBT)*1000000)); ListItem.SubItems.Add(IntToStr(NachtFehlerDia[9])); ListItem.SubItems.Add(FloatToStr(NachtFehlerDia[9]/(SeriennummerDia[2])*1000000)); ListItem.SubItems.Add(IntToStr(SeriennummerDia[2])); ListItem.SubItems.Add(IntToStr(FehlerhafteBGRDia[2])); ListItem.SubItems.Add(FloatToStr(FehlerhafteBGRDia[2]/(SeriennummerDia[2]/100))); ListItem.SubItems.Add(IntToStr(NachtFehlerDia[5])); ListItem.SubItems.Add(FloatToStr(NachtFehlerDia[5]/(SeriennummerDia[2] * AnzahlBT)*1000000)); end; Datum := Datum + 1; end;
frmAOI.Series1.Clear; frmAOI.Series2.Clear; frmAOI.Series3.Clear; frmAOI.Series4.Clear; frmAOI.Series5.Clear; frmAOI.Series6.Clear; frmAOI.Series7.Clear; frmAOI.Series8.Clear; frmAOI.Series9.Clear; frmAOI.Series10.Clear;
Datum := StrToDate(frmAOI.ListView5.Items[0].Caption); Schicht := frmAOI.ListView5.Items[0].SubItems[0]; for i:=0 to frmAOI.Listview5.Items.Count-1 do begin if DaysBetween(Datum, StrToDate(frmAOI.ListView5.Items[i].Caption)) > 1 then begin while Datum <> StrToDate(frmAOI.ListView5.Items[i].Caption)-1 do begin Datum := Datum + 1; tmpBeschriftung := FormatDateTime('d.m', Datum) + #13 + Wochentag(Datum); tmpBeschriftung:= tmpBeschriftung + #13 + 'Früh';
frmAOI.Series1.Add(0, tmpBeschriftung); frmAOI.Series2.Add(0, tmpBeschriftung); frmAOI.Series3.Add(0, tmpBeschriftung); frmAOI.Series4.Add(0, tmpBeschriftung); frmAOI.Series5.Add(0, tmpBeschriftung); frmAOI.Series6.Add(0, tmpBeschriftung); frmAOI.Series7.Add(0, tmpBeschriftung); frmAOI.Series8.Add(0, tmpBeschriftung); frmAOI.Series9.Add(0, tmpBeschriftung); frmAOI.Series10.Add(0, tmpBeschriftung);
Frueh := 0;
tmpBeschriftung := FormatDateTime('d.m', Datum) + #13 + Wochentag(Datum); tmpBeschriftung:= tmpBeschriftung + #13 + 'Spät';
frmAOI.Series1.Add(0, tmpBeschriftung); frmAOI.Series2.Add(0, tmpBeschriftung); frmAOI.Series3.Add(0, tmpBeschriftung); frmAOI.Series4.Add(0, tmpBeschriftung); frmAOI.Series5.Add(0, tmpBeschriftung); frmAOI.Series6.Add(0, tmpBeschriftung); frmAOI.Series7.Add(0, tmpBeschriftung); frmAOI.Series8.Add(0, tmpBeschriftung); frmAOI.Series9.Add(0, tmpBeschriftung); frmAOI.Series10.Add(0, tmpBeschriftung);
Spaet := 0; end; end; if FormatDateTime('dd.mm.yyyy', Datum) <> frmAOI.ListView5.Items[i].Caption then begin if (frmAOI.ListView5.Items[i].SubItems[0] <> 'F') and (frmAOI.ListView5.Items[i].SubItems[0] <> 'N') then begin tmpBeschriftung := FormatDateTime('d.m', StrToDate(frmAOI.ListView5.Items[i].Caption)) + #13 + Wochentag(StrToDate(frmAOI.ListView5.Items[i].Caption)); tmpBeschriftung:= tmpBeschriftung + #13 + 'Früh';
frmAOI.Series1.Add(0, tmpBeschriftung); frmAOI.Series2.Add(0, tmpBeschriftung); frmAOI.Series3.Add(0, tmpBeschriftung); frmAOI.Series4.Add(0, tmpBeschriftung); frmAOI.Series5.Add(0, tmpBeschriftung); frmAOI.Series6.Add(0, tmpBeschriftung); frmAOI.Series7.Add(0, tmpBeschriftung); frmAOI.Series8.Add(0, tmpBeschriftung); frmAOI.Series9.Add(Spaet, tmpBeschriftung); frmAOI.Series10.Add(0, tmpBeschriftung);
Frueh := 0; end; end;
if (frmAOI.ListView5.Items[i].SubItems[0] <> 'N') then begin tmpBeschriftung := FormatDateTime('d.m', StrToDate(frmAOI.ListView5.Items[i].Caption)) + #13 + Wochentag(StrToDate(frmAOI.ListView5.Items[i].Caption)); if frmAOI.ListView5.Items[i].SubItems[0] = 'F' then begin tmpBeschriftung:= tmpBeschriftung + #13 + 'Früh'; frmAOI.Series6.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[12]), tmpBeschriftung); frmAOI.Series7.Add(0, tmpBeschriftung); frmAOI.Series8.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[15]), tmpBeschriftung); frmAOI.Series9.Add(Spaet, tmpBeschriftung);
Frueh := StrToFloat(frmAOI.ListView5.Items[i].SubItems[15]); end; if frmAOI.ListView5.Items[i].SubItems[0] = 'S' then begin tmpBeschriftung:= tmpBeschriftung + #13 + 'Spät'; frmAOI.Series6.Add(0, tmpBeschriftung); frmAOI.Series7.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[12]), tmpBeschriftung); frmAOI.Series8.Add(Frueh, tmpBeschriftung); frmAOI.Series9.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[15]), tmpBeschriftung);
Spaet := StrToFloat(frmAOI.ListView5.Items[i].SubItems[15]); end; if frmAOI.ListView5.Items[i].SubItems[0] = 'N' then tmpBeschriftung:= tmpBeschriftung + #13 + 'Nacht';
frmAOI.Series1.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[2]), tmpBeschriftung); frmAOI.Series2.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[4]), tmpBeschriftung); frmAOI.Series3.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[6]), tmpBeschriftung); frmAOI.Series4.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[8]), tmpBeschriftung); frmAOI.Series5.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[10]), tmpBeschriftung); frmAOI.Series10.Add(StrToFloat(frmAOI.ListView5.Items[i].SubItems[17]), tmpBeschriftung); end;
if i <> frmAOI.Listview5.Items.Count-1 then begin if ((frmAOI.ListView5.Items[i].SubItems[0] = 'F') and (frmAOI.ListView5.Items[i].Caption <> frmAOI.ListView5.Items[i+1].Caption)) or ((frmAOI.ListView5.Items[i].SubItems[0] = 'F') and(frmAOI.ListView5.Items[i+1].SubItems[0] = 'N')) then begin tmpBeschriftung := FormatDateTime('d.m', StrToDate(frmAOI.ListView5.Items[i].Caption)) + #13 + Wochentag(StrToDate(frmAOI.ListView5.Items[i].Caption)); tmpBeschriftung:= tmpBeschriftung + #13 + 'Spät';
frmAOI.Series1.Add(0, tmpBeschriftung); frmAOI.Series2.Add(0, tmpBeschriftung); frmAOI.Series3.Add(0, tmpBeschriftung); frmAOI.Series4.Add(0, tmpBeschriftung); frmAOI.Series5.Add(0, tmpBeschriftung); frmAOI.Series6.Add(0, tmpBeschriftung); frmAOI.Series7.Add(0, tmpBeschriftung); frmAOI.Series8.Add(Frueh, tmpBeschriftung); frmAOI.Series9.Add(0, tmpBeschriftung); frmAOI.Series10.Add(0, tmpBeschriftung);
Spaet:=0; end; end; Datum := StrToDate(frmAOI.ListView5.Items[i].Caption); end;
AnzahlSeriennummern := 0; for i:=0 to frmAOI.Listview4.Items.Count-1 do begin AnzahlSeriennummern := AnzahlSeriennummern + StrToInt(frmAOI.ListView4.Items[i].SubItems[0]); end;
for i:=0 to frmAOI.Listview3.Items.Count-1 do begin z:=0; check:=false; while z < 999 do begin if (FehlerBauteileDia[z] = frmAOI.ListView3.Items[i].SubItems[1]) and (FehlerBauteileDia[z+3] = frmAOI.ListView3.Items[i].SubItems[4]) then begin FehlerBauteileDia[z+2] := IntToStr(StrToInt(FehlerBauteileDia[z+2]) + StrToInt(frmAOI.ListView3.Items[i].SubItems[0])); check:=true; end; if FehlerBauteileDia[z] = '' then break; z:= z + 4; end; if check = false then begin FehlerBauteileDia[z] := frmAOI.ListView3.Items[i].SubItems[1]; FehlerBauteileDia[z+1] := frmAOI.ListView3.Items[i].SubItems[2]; FehlerBauteileDia[z+2] := frmAOI.ListView3.Items[i].SubItems[0]; FehlerBauteileDia[z+3] := frmAOI.ListView3.Items[i].SubItems[4]; end; end; z:=0; while z < 999 do begin if FehlerBauteileDia[z] <> '' then begin ListItem := frmAOI.ListView6.Items.Add; ListItem.Caption := FehlerBauteileDia[z]; ListItem.SubItems.Add(FehlerBauteileDia[z+1]); ListItem.SubItems.Add(FehlerBauteileDia[z+2]); ListItem.SubItems.Add(FehlerBauteileDia[z+3]); if AnzahlSeriennummern <> 0 then begin if ('Kurzschluß/zu viel Lot' = FehlerBauteileDia[z+3]) or ('offene Lötstelle/zu wenig Lot' = FehlerBauteileDia[z+3]) then ListItem.SubItems.Add(FloatToStr((StrToInt(FehlerBauteileDia[z+2])/((AnzahlSeriennummern) * StrToInt(frmAOI.Edit3.Text)))*1000000)) else ListItem.SubItems.Add(FloatToStr((StrToInt(FehlerBauteileDia[z+2])/((AnzahlSeriennummern) * StrToInt(frmAOI.Edit4.Text)))*1000000)) end; z:= z + 4; end else break; end;
ZeroMemory(@FruehFehlerDia,SizeOf(FruehFehlerDia)); ZeroMemory(@SpaetFehlerDia,SizeOf(SpaetFehlerDia)); ZeroMemory(@NachtFehlerDia,SizeOf(NachtFehlerDia)); ZeroMemory(@SeriennummerDia,SizeOf(SeriennummerDia)); ZeroMemory(@FehlerhafteBGRDia,SizeOf(FehlerhafteBGRDia)); ZeroMemory(@FehlerBauteileDia,SizeOf(FehlerBauteileDia));
frmAOI.ListView6.AlphaSort; end;
procedure TfrmAOI.Button1Click(Sender: TObject); var Datum: TDateTime; pfad, zeile, tmpSerNr:String; Schicht, aktSchicht: Char; FruehFehler, SpaetFehler, NachtFehler: array[0..30] of String; FruehSerNr, SpaetSerNr, NachtSerNr, FruehBauteil, SpaetBauteil, NachtBauteil: array[0..1000] of String; ini: TIniFile; DateiDB: TextFile; i, i_progressBar, AnzahlFrueh, AnzahlSpaet, AnzahlNacht, index: Integer; check, progressBar, insert: Boolean; SchichtDatum: TDateTime; ListItem : TListItem; begin frmLoad.Show; frmLoad.Update; frmLoad.ProgressBar1.Max := 100; Chart1.Title.Text.Clear; Chart1.Title.Text.Add('Fehlerrate Basic Induktion LT ' + FormatDateTime('MMMM', DateTimePicker2.Date)); Chart1.Foot.Text.Clear; Chart1.Foot.Text.Add('Erstellt am: ' + FormatDateTime('dd.mm.yyyy', now)); Chart3.Title.Text.Clear; Chart3.Title.Text.Add('ppm Ausschuß ' + FormatDateTime('MMMM', DateTimePicker2.Date)); Chart3.Foot.Text.Clear; Chart3.Foot.Text.Add('Erstellt am: ' + FormatDateTime('dd.mm.yyyy', now));
AnzahlSpaet := 0; AnzahlFrueh := 0; i_progressBar := 0; progressBar := true; SchichtDatum := now;
if ComboBox1.ItemIndex <> -1 then begin ListView1.Clear; ListView2.Clear; ListView3.Clear; ListView4.Clear; for i:=0 to 1000 do begin if i <= 30 then begin FruehFehler[i]:='0'; SpaetFehler[i]:='0'; NachtFehler[i]:='0'; if i mod 3 = 0 then begin FruehFehler[i] := IntToStr(i div 3); SpaetFehler[i] := IntToStr(i div 3); NachtFehler[i] := IntToStr(i div 3); end; end; FruehSerNr[i]:='0'; SpaetSerNr[i]:='0'; NachtSerNr[i]:='0'; FruehBauteil[i]:='0'; SpaetBauteil[i]:='0'; NachtBauteil[i]:='0'; end; AnzahlFrueh := 0; AnzahlSpaet := 0; AnzahlNacht := 0; pfad := ExtractFilePath(ParamStr(0)); pfad := pfad + '\mde.ini'; ini:=TIniFile.Create(pfad); pfad := ini.ReadString('AOI','Pfad' + IntToSTr(ComboBox1.ItemIndex + 1),pfad); ini.free; if directoryexists(pfad) then begin Schicht := 'X'; Datum := StrToDate(FormatDateTime('dd.mm.yyyy', DateTimePicker1.Date)); While Datum <> StrToDate(FormatDateTime('dd.mm.yyyy', DateTimePicker2.Date))+1 do begin if FileExists(pfad + '\' + FormatDateTime('yyyymmdd', Datum)+'.AOI') then begin AssignFile(DateiDB, pfad + '\' + FormatDateTime('yyyymmdd', Datum)+'.AOI'); ReSet(DateiDB); while not Eof(DateiDB) do begin if i_progressBar = 100 then progressBar := false; if i_progressBar = 0 then progressBar := true; if progressBar = true then inc(i_progressBar) else dec(i_progressBar); frmLoad.ProgressBar1.Position := i_progressBar; ReadLn(DateiDB, zeile); Zeile_Aufschluesseln(zeile); if (MaskEdit1.Text = ' . . ') or (MaskEdit1.Text = Felder[2]) then begin if not IstInString(zeile, 'PASS') then begin aktSchicht := GetSchicht(StrToTime(Felder[7])); if ((FormatDateTime('dd.mm.yyyy', SchichtDatum) <> Felder[6]) and (aktSchicht <> 'N') and (Schicht <> 'X')) or ((SecondsBetween(SchichtDatum , StrToDateTime(Felder[6] + ' ' + Felder[7])) > 28800) and (Schicht <> 'X')) then begin i:=0; while i < 30 do begin ListItem := ListView1.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(FruehFehler[i+1]); ListItem.SubItems.Add(FruehFehler[i]); ListItem.SubItems.Add(FruehFehler[i+2]); ListItem.SubItems.Add('F'); ListItem := ListView1.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(SpaetFehler[i+1]); ListItem.SubItems.Add(SpaetFehler[i]); ListItem.SubItems.Add(SpaetFehler[i+2]); ListItem.SubItems.Add('S'); ListItem := ListView1.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(NachtFehler[i+1]); ListItem.SubItems.Add(NachtFehler[i]); ListItem.SubItems.Add(NachtFehler[i+2]); ListItem.SubItems.Add('N'); i:= i + 3; end; i:=0; while i < 1000 do begin if FruehSerNr[i] <> '0' then begin ListItem := ListView2.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(FruehSerNr[i+1]); ListItem.SubItems.Add(FruehSerNr[i]); ListItem.SubItems.Add('F'); end; if SpaetSerNr[i] <> '0' then begin ListItem := ListView2.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(SpaetSerNr[i+1]); ListItem.SubItems.Add(SpaetSerNr[i]); ListItem.SubItems.Add('S'); end; if NachtSerNr[i] <> '0' then begin ListItem := ListView2.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(NachtSerNr[i+1]); ListItem.SubItems.Add(NachtSerNr[i]); ListItem.SubItems.Add('N'); end; i:= i + 2; end; i:=0; while i < 1000 do begin if FruehBauteil[i] <> '0' then begin ListItem := ListView3.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(FruehBauteil[i+1]); ListItem.SubItems.Add(FruehBauteil[i]); ListItem.SubItems.Add(FruehBauteil[i+2]); ListItem.SubItems.Add('F'); ListItem.SubItems.Add(FruehBauteil[i+3]); end; if SpaetBauteil[i] <> '0' then begin ListItem := ListView3.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(SpaetBauteil[i+1]); ListItem.SubItems.Add(SpaetBauteil[i]); ListItem.SubItems.Add(SpaetBauteil[i+2]); ListItem.SubItems.Add('S'); ListItem.SubItems.Add(SpaetBauteil[i+3]); end; if NachtBauteil[i] <> '0' then begin ListItem := ListView3.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(NachtBauteil[i+1]); ListItem.SubItems.Add(NachtBauteil[i]); ListItem.SubItems.Add(NachtBauteil[i+2]); ListItem.SubItems.Add('N'); ListItem.SubItems.Add(NachtBauteil[i+3]); end; i:= i + 4; end; insert := false; for i:=0 to ListView4.Items.Count-1 do begin if ListView4.Items[i].Caption = FormatDateTime('dd.mm.yyyy', SchichtDatum) then begin if ListView4.Items[i].SubItems[1] = 'F' then ListView4.Items[i].SubItems[0] := IntToStr(StrToInt(ListView4.Items[i].SubItems[0]) + AnzahlFrueh); if ListView4.Items[i].SubItems[1] = 'S' then ListView4.Items[i].SubItems[0] := IntToStr(StrToInt(ListView4.Items[i].SubItems[0]) + AnzahlSpaet); if ListView4.Items[i].SubItems[1] = 'N' then ListView4.Items[i].SubItems[0] := IntToStr(StrToInt(ListView4.Items[i].SubItems[0]) + AnzahlNacht); insert := true; end; end; if insert = false then begin ListItem := ListView4.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); if AnzahlFrueh <> 0 then ListItem.SubItems.Add(IntToStr(AnzahlFrueh)) else ListItem.SubItems.Add('0'); ListItem.SubItems.Add('F'); AnzahlFrueh := 0; ListItem := ListView4.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); if AnzahlSpaet <> 0 then ListItem.SubItems.Add(IntToStr(AnzahlSpaet)) else ListItem.SubItems.Add('0'); ListItem.SubItems.Add('S'); AnzahlSpaet := 0; ListItem := ListView4.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); if AnzahlNacht <> 0 then ListItem.SubItems.Add(IntToStr(AnzahlNacht)) else ListItem.SubItems.Add('0'); ListItem.SubItems.Add('N'); AnzahlNacht := 0; end else begin AnzahlFrueh := 0; AnzahlSpaet := 0; AnzahlNacht := 0; end; tmpSerNr := ''; for i:=0 to 1000 do begin if i <= 30 then begin FruehFehler[i]:='0'; SpaetFehler[i]:='0'; NachtFehler[i]:='0'; if i mod 3 = 0 then begin FruehFehler[i] := IntToStr(i div 3); SpaetFehler[i] := IntToStr(i div 3); NachtFehler[i] := IntToStr(i div 3); end; end; FruehSerNr[i]:='0'; SpaetSerNr[i]:='0'; NachtSerNr[i]:='0'; FruehBauteil[i]:='0'; SpaetBauteil[i]:='0'; NachtBauteil[i]:='0'; end; end; if tmpSerNr <> Felder[4] then begin if aktSchicht = 'F' then inc(AnzahlFrueh); if aktSchicht = 'S' then inc(AnzahlSpaet); if aktSchicht = 'N' then inc(AnzahlNacht); tmpSerNr := Felder[4]; end; if (aktSchicht = 'F') then begin If Felder[13] <> '' then begin FruehFehler[StrToInt(Felder[13])*3 + 1] := IntToStr(StrToInt(FruehFehler[StrToInt(Felder[13])*3 + 1]) + 1); FruehFehler[StrToInt(Felder[13])*3 + 2] := Felder[14]; SchichtDatum := StrToDateTime(Felder[6] + ' ' + Felder[7]); Schicht := 'F'; if Felder[13] <> '0' then begin check := false; for i:=0 to 1000 do begin if FruehSerNr[i] = Felder[4] then begin FruehSerNr[i+1] := IntToStr(StrToInt(FruehSerNr[i+1]) + 1); check := true; break; end; if FruehSerNr[i] = '0' then break; end; if check = false then begin FruehSerNr[i] := Felder[4]; FruehSerNr[i+1] := IntToStr(StrToInt(FruehSerNr[i+1]) + 1); end; check := false; for i:=0 to 1000 do begin if (FruehBauteil[i] = Felder[10]) and (FruehBauteil[i+3] = Felder[14]) then begin FruehBauteil[i+1] := IntToStr(StrToInt(FruehBauteil[i+1]) + 1); FruehBauteil[i+2] := Felder[11]; check := true; break; end; if FruehBauteil[i] = '0' then break; end; if check = false then begin FruehBauteil[i] := Felder[10]; FruehBauteil[i+1] := IntToStr(StrToInt(FruehBauteil[i+1]) + 1); FruehBauteil[i+2] := Felder[11]; FruehBauteil[i+3] := Felder[14]; end; end; end; end; if aktSchicht = 'S' then begin If Felder[13] <> '' then begin SpaetFehler[StrToInt(Felder[13])*3 + 1] := IntToStr(StrToInt(SpaetFehler[StrToInt(Felder[13])*3 + 1]) + 1); SpaetFehler[StrToInt(Felder[13])*3 + 2] := Felder[14]; SchichtDatum := StrToDateTime(Felder[6] + ' ' + Felder[7]); Schicht := 'S'; if Felder[13] <> '0' then begin check := false; for i:=0 to 1000 do begin if SpaetSerNr[i] = Felder[4] then begin SpaetSerNr[i+1] := IntToStr(StrToInt(SpaetSerNr[i+1]) + 1); check := true; break; end; if SpaetSerNr[i] = '0' then break; end; if check = false then begin SpaetSerNr[i] := Felder[4]; SpaetSerNr[i+1] := IntToStr(StrToInt(SpaetSerNr[i+1]) + 1); end; check := false; for i:=0 to 1000 do begin if (SpaetBauteil[i] = Felder[10]) and (SpaetBauteil[i+3] = Felder[14]) then begin SpaetBauteil[i+1] := IntToStr(StrToInt(SpaetBauteil[i+1]) + 1); SpaetBauteil[i+2] := Felder[11]; check := true; break; end; if SpaetBauteil[i] = '0' then break; end; if check = false then begin SpaetBauteil[i] := Felder[10]; SpaetBauteil[i+1] := IntToStr(StrToInt(SpaetBauteil[i+1]) + 1); SpaetBauteil[i+2] := Felder[11]; SpaetBauteil[i+3] := Felder[14]; end; end; end; end; if (aktSchicht = 'N') and (Schicht <> 'X') then begin If Felder[13] <> '' then begin NachtFehler[StrToInt(Felder[13])*3 + 1] := IntToStr(StrToInt(NachtFehler[StrToInt(Felder[13])*3 + 1]) + 1); NachtFehler[StrToInt(Felder[13])*3 + 2] := Felder[14]; SchichtDatum := StrToDateTime(Felder[6] + ' ' + Felder[7]); Schicht := 'N'; if Felder[13] <> '0' then begin check := false; for i:=0 to 1000 do begin if NachtSerNr[i] = Felder[4] then begin NachtSerNr[i+1] := IntToStr(StrToInt(NachtSerNr[i+1]) + 1); check := true; break; end; if NachtSerNr[i] = '0' then break; end; if check = false then begin NachtSerNr[i] := Felder[4]; NachtSerNr[i+1] := IntToStr(StrToInt(NachtSerNr[i+1]) + 1); end; check := false; for i:=0 to 1000 do begin if (NachtBauteil[i] = Felder[10]) and (NachtBauteil[i+3] = Felder[14]) then begin NachtBauteil[i+1] := IntToStr(StrToInt(NachtBauteil[i+1]) + 1); NachtBauteil[i+2] := Felder[11]; check := true; break; end; if NachtBauteil[i] = '0' then break; end; if check = false then begin NachtBauteil[i] := Felder[10]; NachtBauteil[i+1] := IntToStr(StrToInt(NachtBauteil[i+1]) + 1); NachtBauteil[i+2] := Felder[11]; NachtBauteil[i+3] := Felder[14]; end; end; end; end; end else begin if tmpSerNr <> Felder[4] then begin index := 5; if Felder[index] = '' then index:=7 else index:=6; if GetSchicht(StrToTime(Felder[index])) = 'F' then inc(AnzahlFrueh); if GetSchicht(StrToTime(Felder[index])) = 'S' then inc(AnzahlSpaet); if GetSchicht(StrToTime(Felder[index])) = 'N' then inc(AnzahlNacht); tmpSerNr := Felder[4]; end;
end; end; end; CloseFile(DateiDB); end; Datum := Datum + 1; end; i:=0; while i < 30 do begin ListItem := ListView1.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(FruehFehler[i+1]); ListItem.SubItems.Add(FruehFehler[i]); ListItem.SubItems.Add(FruehFehler[i+2]); ListItem.SubItems.Add('F'); ListItem := ListView1.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(SpaetFehler[i+1]); ListItem.SubItems.Add(SpaetFehler[i]); ListItem.SubItems.Add(SpaetFehler[i+2]); ListItem.SubItems.Add('S'); ListItem := ListView1.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(NachtFehler[i+1]); ListItem.SubItems.Add(NachtFehler[i]); ListItem.SubItems.Add(NachtFehler[i+2]); ListItem.SubItems.Add('N'); i:= i + 3; end; i:=0; while i < 1000 do begin if FruehSerNr[i] <> '0' then begin ListItem := ListView2.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(FruehSerNr[i+1]); ListItem.SubItems.Add(FruehSerNr[i]); ListItem.SubItems.Add('F'); end; if SpaetSerNr[i] <> '0' then begin ListItem := ListView2.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(SpaetSerNr[i+1]); ListItem.SubItems.Add(SpaetSerNr[i]); ListItem.SubItems.Add('S'); end; if NachtSerNr[i] <> '0' then begin ListItem := ListView2.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(NachtSerNr[i+1]); ListItem.SubItems.Add(NachtSerNr[i]); ListItem.SubItems.Add('N'); end; i:= i + 2; end; i:=0; while i < 1000 do begin if FruehBauteil[i] <> '0' then begin ListItem := ListView3.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(FruehBauteil[i+1]); ListItem.SubItems.Add(FruehBauteil[i]); ListItem.SubItems.Add(FruehBauteil[i+2]); ListItem.SubItems.Add('F'); ListItem.SubItems.Add(FruehBauteil[i+3]); end; if SpaetBauteil[i] <> '0' then begin ListItem := ListView3.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(SpaetBauteil[i+1]); ListItem.SubItems.Add(SpaetBauteil[i]); ListItem.SubItems.Add(SpaetBauteil[i+2]); ListItem.SubItems.Add('S'); ListItem.SubItems.Add(SpaetBauteil[i+3]); end; if NachtBauteil[i] <> '0' then begin ListItem := ListView3.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); ListItem.SubItems.Add(NachtBauteil[i+1]); ListItem.SubItems.Add(NachtBauteil[i]); ListItem.SubItems.Add(NachtBauteil[i+2]); ListItem.SubItems.Add('N'); ListItem.SubItems.Add(NachtBauteil[i+3]); end; i:= i + 4; end; ListItem := ListView4.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); if AnzahlFrueh <> 0 then ListItem.SubItems.Add(IntToStr(AnzahlFrueh)) else ListItem.SubItems.Add('0'); ListItem.SubItems.Add('F'); AnzahlFrueh := 0; ListItem := ListView4.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); if AnzahlSpaet <> 0 then ListItem.SubItems.Add(IntToStr(AnzahlSpaet)) else ListItem.SubItems.Add('0'); ListItem.SubItems.Add('S'); AnzahlSpaet := 0; ListItem := ListView4.Items.Add; ListItem.Caption := FormatDateTime('dd.mm.yyyy', SchichtDatum); if AnzahlNacht <> 0 then ListItem.SubItems.Add(IntToStr(AnzahlNacht)) else ListItem.SubItems.Add('0'); ListItem.SubItems.Add('N');
ListView1.AlphaSort; ListView2.AlphaSort; ListView3.AlphaSort; frmLoad.ProgressBar1.Position := 100;
Berechne_DiagrammData(); end else ShowMessage('Der Pfad in der INI-Datei stimmt nicht, oder Sie haben keine Berechtigung'); end else ShowMessage('Sie müssen einen Eintrag in der Combobox auswählen');
for i:=0 to 30 do begin FruehFehler[i] := EmptyStr; SpaetFehler[i] := EmptyStr; NachtFehler[i] := EmptyStr; end; for i:=0 to 1000 do begin FruehSerNr[i] := EmptyStr; SpaetSerNr[i] := EmptyStr; NachtSerNr[i] := EmptyStr; FruehBauteil[i] := EmptyStr; SpaetBauteil[i] := EmptyStr; NachtBauteil[i] := EmptyStr; end;
frmLoad.Close; end;
procedure TfrmAOI.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin Compare := CompareDateTime(StrToDateTime(Item1.Caption), StrToDateTime(Item2.Caption)); if Compare = 0 then Compare := CompareText(Item1.SubItems[3], Item2.SubItems[3]); end;
procedure TfrmAOI.ListView2Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin Compare := CompareDateTime(StrToDateTime(Item1.Caption), StrToDateTime(Item2.Caption)); if Compare = 0 then Compare := CompareText(Item1.SubItems[2], Item2.SubItems[2]); if Compare = 0 then Compare := CompareText(Item1.SubItems[0], Item2.SubItems[0]); end;
procedure TfrmAOI.ListView3Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin Compare := CompareDateTime(StrToDateTime(Item1.Caption), StrToDateTime(Item2.Caption)); if Compare = 0 then Compare := CompareText(Item1.SubItems[3], Item2.SubItems[3]); if Compare = 0 then Compare := CompareText(Item1.SubItems[1], Item2.SubItems[1]); end;
procedure TfrmAOI.Button4Click(Sender: TObject); var Excel:Variant; i: Integer; begin frmLoad.Show; frmLoad.Update; try Excel := CreateOleObject('Excel.Application'); except ShowMessage('Excel konnte nicht gestartet werden !'); Exit; end; Excel.Workbooks.Add; Excel.Cells[1, 1].Value :='Fehlertyp:'; Excel.Cells[3, 1].Value :='Datum'; Excel.Cells[3, 2].Value :='Anzahl'; Excel.Cells[3, 3].Value :='FehlerID'; Excel.Cells[3, 4].Value :='Fehlerbeschreibung'; Excel.Cells[3, 5].Value :='Schicht'; for i:=0 to Listview1.Items.Count-1 do begin Excel.Cells[i+4, 1].Value :=ListView1.Items[i].Caption; Excel.Cells[i+4, 2].Value :=ListView1.Items[i].SubItems[0]; Excel.Cells[i+4, 3].Value :=ListView1.Items[i].SubItems[1]; Excel.Cells[i+4, 4].Value :=ListView1.Items[i].SubItems[2]; Excel.Cells[i+4, 5].Value :=ListView1.Items[i].SubItems[3]; end;
Excel.Cells[1, 7].Value :='Seriennummer:'; Excel.Cells[3, 7].Value :='Datum'; Excel.Cells[3, 8].Value :='SerNr'; Excel.Cells[3, 9].Value :='Anzahl'; Excel.Cells[3, 10].Value :='Schicht'; for i:=0 to Listview2.Items.Count-1 do begin Excel.Cells[i+4, 7].Value :=ListView2.Items[i].Caption; Excel.Cells[i+4, 8].Value :=ListView2.Items[i].SubItems[0]; Excel.Cells[i+4, 9].Value :=ListView2.Items[i].SubItems[1]; Excel.Cells[i+4, 10].Value :=ListView2.Items[i].SubItems[2]; end;
Excel.Cells[1, 12].Value :='Bauteile:'; Excel.Cells[3, 12].Value :='Datum'; Excel.Cells[3, 13].Value :='Bauteil'; Excel.Cells[3, 14].Value :='Anzahl'; Excel.Cells[3, 15].Value :='Beschreibung'; Excel.Cells[3, 16].Value :='Schicht'; Excel.Cells[3, 17].Value :='Fehler'; for i:=0 to Listview3.Items.Count-1 do begin Excel.Cells[i+4, 12].Value :=ListView3.Items[i].Caption; Excel.Cells[i+4, 13].Value :=ListView3.Items[i].SubItems[0]; Excel.Cells[i+4, 14].Value :=ListView3.Items[i].SubItems[1]; Excel.Cells[i+4, 15].Value :=ListView3.Items[i].SubItems[2]; Excel.Cells[i+4, 16].Value :=ListView3.Items[i].SubItems[3]; Excel.Cells[i+4, 17].Value :=ListView3.Items[i].SubItems[4]; end; Excel.Visible:= true;
Excel.Cells[1, 19].Value :='Anzahl Seriennummern:'; Excel.Cells[3, 19].Value :='Datum'; Excel.Cells[3, 20].Value :='Anzahl'; Excel.Cells[3, 21].Value :='Schicht'; for i:=0 to Listview4.Items.Count-1 do begin Excel.Cells[i+4, 19].Value :=ListView4.Items[i].Caption; Excel.Cells[i+4, 20].Value :=ListView4.Items[i].SubItems[0]; Excel.Cells[i+4, 21].Value :=ListView4.Items[i].SubItems[1]; end; Excel.Visible:= true; frmLoad.Close; end;
procedure TfrmAOI.FormShow(Sender: TObject); var pfad, tmp:String; ini: TIniFile; Anzahl, i: Integer; begin Anzahl := 0; pfad := ExtractFilePath(ParamStr(0)); pfad := pfad + '\mde.ini'; ini:=TIniFile.Create(pfad); Anzahl:= ini.ReadInteger('AOI','Anzahl',Anzahl); Edit3.Text := ini.ReadString('AOI','AnzahlLoetstellen',tmp); Edit4.Text := ini.ReadString('AOI','AnzahlBT',tmp); for i:=1 to Anzahl do begin Combobox1.Items.Add(Ini.ReadString('AOI', 'Name' + IntToStr(i), pfad)); end; ini.Free; ComboBox1.ItemIndex := 0;
DateTimePicker1.DateTime := now - DayOfWeek(now) + 2; DateTimePicker2.DateTime := now;
end;
procedure TfrmAOI.Chart1GetLegendText(Sender: TCustomAxisPanel; LegendStyle: TLegendStyle; Index: Integer; var LegendText: String); begin if index = 0 then LegendText := 'ppm offene Lötstelle'; if index = 1 then LegendText := 'ppm ZB'; if index = 2 then LegendText := 'ppm Bauteil fehlt'; if index = 3 then LegendText := 'ppm Bauteil besch.'; if index = 4 then LegendText := 'ppm Position Bauteil'; if index = 5 then LegendText := 'ppm Grabstein'; if index = 6 then LegendText := 'Frühschicht Prozent Fehlerhaft'; if index = 7 then LegendText := 'Spätschicht Prozent Fehlerhaft'; end;
procedure TfrmAOI.Button2Click(Sender: TObject); var datei, pfad: String; ini: TiniFile; begin pfad := ExtractFilePath(ParamStr(0)); pfad := pfad + 'mde.ini'; ini:=TIniFile.Create(pfad); pfad := ini.ReadString('Kennzahlen','Pfad',pfad); ini.Free; SaveDialog1.InitialDir := pfad; SaveDialog1.Execute; datei := SaveDialog1.FileName; case PageControl1.TabIndex of 2: Chart_Speichern(Chart1, datei, 945, 550); 3: Chart_Speichern(Chart3, datei, 945, 550); end; DiagrammDesign(Chart1, 373, 945, 8, 8, 10, clBlack, taLeftJustify, 8, clBlue, taRightJustify, clWhite, RGB(15, 185, 185), laBottom, 1, 1, 1, 1); DiagrammDesign(Chart3, 373, 945, 8, 8, 10, clBlack, taLeftJustify, 8, clBlue, taRightJustify, clWhite, RGB(15, 185, 185), laBottom, 1, 1, 1, 1); end;
procedure TfrmAOI.Button3Click(Sender: TObject); var bmp , TargetBitmap: TBitmap; begin bmp := TBitmap.Create; bmp.Assign(frmAOI.GetFormImage); TargetBitmap := TBitmap.Create; TargetBitmap.Height := frmAOI.PageControl1.Height-41; TargetBitmap.Width := frmAOI.PageControl1.Width-26; BitBlt(TargetBitmap.Canvas.Handle, 0, 0, frmAOI.PageControl1.Width, frmAOI.PageControl1.Height-20, bmp.Canvas.Handle,frmAOI.PageControl1.Left+12, frmAOI.PageControl1.Top+33, SRCCOPY); if PrintDialog1.Execute then begin Printer.orientation:=polandscape; Printer.BeginDoc; SetMapMode(Printer.Canvas.Handle, MM_ANISOTROPIC); Printer.Canvas.StretchDraw(RECT(0,0,Printer.PageWidth,Printer.PageHeight), TargetBitmap); Printer.EndDoc; end; end;
procedure TfrmAOI.Button5Click(Sender: TObject); var Excel:Variant; i: Integer; begin frmLoad.Show; frmLoad.Update; try Excel := CreateOleObject('Excel.Application'); except ShowMessage('Excel konnte nicht gestartet werden !'); Exit; end; Excel.Workbooks.Add; Excel.Cells[1, 1].Value :='Datum:'; Excel.Cells[1, 2].Value :='Schicht'; Excel.Cells[1, 3].Value :='OL'; Excel.Cells[1, 4].Value :='ppm OL'; Excel.Cells[1, 5].Value :='ZB'; Excel.Cells[1, 6].Value :='ppm ZB'; Excel.Cells[1, 7].Value :='BT fehlt'; Excel.Cells[1, 8].Value :='ppm BT fehlt'; Excel.Cells[1, 9].Value :='BT besch.'; Excel.Cells[1, 10].Value :='ppm BT besch.'; Excel.Cells[1, 11].Value :='Pos BT'; Excel.Cells[1, 12].Value :='ppm Pos BT'; Excel.Cells[1, 13].Value :='Ausschuß'; Excel.Cells[1, 14].Value :='ppm Ausschuß'; Excel.Cells[1, 15].Value :='gepr. BGR '; Excel.Cells[1, 16].Value :='fehlerhaft BGR'; Excel.Cells[1, 17].Value :='Prozent Fehler'; frmLoad.Progressbar1.Max := Listview5.Items.Count; for i:=0 to Listview5.Items.Count-1 do begin frmLoad.Progressbar1.Position := i; Excel.Cells[i+2, 1].Value :=ListView5.Items[i].Caption; Excel.Cells[i+2, 2].Value :=ListView5.Items[i].SubItems[0]; Excel.Cells[i+2, 3].Value :=StrToFloat(ListView5.Items[i].SubItems[1]); Excel.Cells[i+2, 4].Value :=StrToFloat(ListView5.Items[i].SubItems[2]); Excel.Cells[i+2, 5].Value :=StrToFloat(ListView5.Items[i].SubItems[3]); Excel.Cells[i+2, 6].Value :=StrToFloat(ListView5.Items[i].SubItems[4]); Excel.Cells[i+2, 7].Value :=StrToFloat(ListView5.Items[i].SubItems[5]); Excel.Cells[i+2, 8].Value :=StrToFloat(ListView5.Items[i].SubItems[6]); Excel.Cells[i+2, 9].Value :=StrToFloat(ListView5.Items[i].SubItems[7]); Excel.Cells[i+2, 10].Value :=StrToFloat(ListView5.Items[i].SubItems[8]); Excel.Cells[i+2, 11].Value :=StrToFloat(ListView5.Items[i].SubItems[9]); Excel.Cells[i+2, 12].Value :=StrToFloat(ListView5.Items[i].SubItems[10]); Excel.Cells[i+2, 13].Value :=StrToFloat(ListView5.Items[i].SubItems[11]); Excel.Cells[i+2, 14].Value :=StrToFloat(ListView5.Items[i].SubItems[12]); Excel.Cells[i+2, 15].Value :=StrToFloat(ListView5.Items[i].SubItems[13]); Excel.Cells[i+2, 16].Value :=StrToFloat(ListView5.Items[i].SubItems[14]); Excel.Cells[i+2, 17].Value :=StrToFloat(ListView5.Items[i].SubItems[15]); end; Excel.Visible:= true; frmLoad.Close; end;
procedure TfrmAOI.Chart2GetLegendText(Sender: TCustomAxisPanel; LegendStyle: TLegendStyle; Index: Integer; var LegendText: String); begin if index = 0 then LegendText := 'Frühschicht Prozent Fehlerhaft'; if index = 1 then LegendText := 'Spätschicht Prozent Fehlerhaft'; end;
procedure TfrmAOI.ListView6Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin Compare := StrToInt(Item2.SubItems[1])-StrToInt(Item1.SubItems[1]); end;
procedure TfrmAOI.Edit3Change(Sender: TObject); var ini: TIniFile; pfad:string; begin pfad := ExtractFilePath(ParamStr(0)); pfad := pfad + 'mde.ini'; ini:=TIniFile.Create(pfad); ini.WriteString('AOI','AnzahlLoetstellen',edit3.Text); ini.Free; end;
procedure TfrmAOI.Edit4Change(Sender: TObject); var ini: TIniFile; pfad:string; begin pfad := ExtractFilePath(ParamStr(0)); pfad := pfad + 'mde.ini'; ini:=TIniFile.Create(pfad); ini.WriteString('AOI','AnzahlBT',edit4.Text); ini.Free; end;
procedure TfrmAOI.Button6Click(Sender: TObject); var Excel:Variant; i: Integer; begin frmLoad.Show; frmLoad.Update; try Excel := CreateOleObject('Excel.Application'); except ShowMessage('Excel konnte nicht gestartet werden !'); Exit; end; Excel.Workbooks.Add; Excel.Cells[1, 1].Value :='Bauteil:'; Excel.Cells[1, 2].Value :='Beschreibung'; Excel.Cells[1, 3].Value :='Anzahl'; Excel.Cells[1, 4].Value :='Fehler'; Excel.Cells[1, 5].Value :='ppm'; frmLoad.Progressbar1.Max := Listview6.Items.Count; for i:=0 to Listview6.Items.Count-1 do begin frmLoad.ProgressBar1.Position := frmLoad.ProgressBar1.Position + 1; Excel.Cells[i+2, 1].Value :=ListView6.Items[i].Caption; Excel.Cells[i+2, 2].Value :=ListView6.Items[i].SubItems[0]; Excel.Cells[i+2, 3].Value :=ListView6.Items[i].SubItems[1]; Excel.Cells[i+2, 4].Value :=ListView6.Items[i].SubItems[2]; Excel.Cells[i+2, 5].Value :=StrToFloat(ListView6.Items[i].SubItems[3]); end; frmLoad.ProgressBar1.Position := frmLoad.Progressbar1.Max; Excel.Visible:= true; frmLoad.Close; end;
procedure TfrmAOI.Chart3GetLegendText(Sender: TCustomAxisPanel; LegendStyle: TLegendStyle; Index: Integer; var LegendText: String); begin if index = 0 then LegendText := 'Frühschicht ppm Ausschuß'; if index = 1 then LegendText := 'Spätschicht ppm Ausschuß'; end;
procedure TfrmAOI.FormCreate(Sender: TObject); begin DiagrammDesign(Chart1, 373, 945, 8, 8, 10, clBlack, taLeftJustify, 8, clBlue, taRightJustify, clWhite, clWhite, laBottom, 1, 1, 1, 1); DiagrammDesign(Chart3, 373, 945, 8, 8, 10, clBlack, taLeftJustify, 8, clBlue, taRightJustify, clWhite, clWhite, laBottom, 1, 1, 1, 1); frmAOI.Resize; end;
procedure TfrmAOI.FormResize(Sender: TObject); begin PageControl1.Height := frmAOI.Height - PageControl1.Top - 70; PageControl1.Width := frmAOI.Width - PageControl1.Left - 20;
Chart1.Height := PageControl1.Height - 40; Chart1.Width := PageControl1.Width - 20; Chart3.Height := PageControl1.Height - 40; Chart3.Width := PageControl1.Width - 20;
Listview5.Height := PageControl1.Height - 80; Listview5.Width := PageControl1.Width - 20; Button5.Top := Listview5.Top + Listview5.Height + 5;
Button3.Top := PageControl1.Height + PageControl1.Top + 5; Button2.Top := PageControl1.Height + PageControl1.Top + 5; end;
end. |