📄 kxianmain.~pas
字号:
SecLineData[i].sBatchNo :=SecCurrentCode;
curTmp :=round(Fields.Fields[5].AsFloat *10);
if CurTmp >3000 then CurTmp:= lastTmp;
if CurTmp <-400 then CurTmp:= LastTmp;
SecLineData[I].iOpenT:= curTmp;//OPEN
MINT := CurTmp;
MAXT := CurTmp;
j :=0;
AMT :=0;
while (j <= MINSTEP -1) AND (NOT adodtest.EOF) do
begin
curTmp :=round(Fields.Fields[5].AsFloat *10);
if CurTmp >3000 then CurTmp:= lastTmp;
if CurTmp <-400 then CurTmp:= LastTmp;
IF MINT >CurTmp THEN MINT := CurTmp;
IF MAXT <CurTmp THEN MAXT := CurTmp;
SecLineData[I].iCloseT:= curTmp; //CLOSE
AMT := AMT + SecLineData[I].iCloseT;
lastTmp := CurTmp;
j := j+1;
NEXT;
end ;
SecLineData[I].iMaxT:= MAXT; //High
SecLineData[I].iMinT:= MINT; //Low
SecLineData[i].dtDateTime := Fields.Fields[2].AsDateTime;
SecLineData[I].iFlag:= minutesbetween(begintime, SecLineData[i].dtDateTime); //存放标识flag
SecLineData[I].iAvgT:= ROUND(AMT/J);
I :=I+1;
END;
close;
SecDayCount := I;
End
End;
Procedure TFormKXianMain.DrawEMPTY(Sender: Tobject);
Var TempString:String;
VAR KWIDTH :INTEGER;
Begin
with ImageWork do
If DayCount<=0 Then
Begin
Canvas.Brush.Color:=clWhite;//clBLACK;
Canvas.Brush.style:=bsSolid;
Canvas.Pen.Style:=psSolid ;
Canvas.Pen.Color:=clRed;//CLWHITE;//clMaroon;
Canvas.FillRect(Rect(0,0,PaintWidth,PaintHeight));
//左边竖直线
Canvas.Pen.Color:=clRed;//CLWHITE;//;clred;
Canvas.MoveTo(LeftX-1,Topy);
Canvas.LineTo(LeftX-1,PaintHeight);
//上边水平线
Canvas.MoveTo(0,TopY);
Canvas.LineTo(PaintWidth,TopY);
Canvas.MoveTo(0,TopY-2);
Canvas.LineTo(PaintWidth,TopY-2);
//右边竖直线
Canvas.MoveTo(PaintWidth-RightX,TopY);
Canvas.LineTo(PaintWidth-RightX,PaintHeight);
//下边水平线
Canvas.MoveTo(0,PaintHeight-BottomY);
Canvas.LineTo(PaintWidth-RightX,PaintHeight-BottomY);
//画1/6线
PageTopY:=PaintHeight-BottomY-topy;
Canvas.Pen.Style:=psDot;
Canvas.Pen.Color:=CLGRAY;//clMaroon;
Canvas.MoveTo(LeftX ,topy + Round(PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(PageTopY/6));
Canvas.MoveTo(LeftX ,topy + Round(2*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(2*PageTopY/6));
Canvas.Pen.Style:=psSolid;
Canvas.MoveTo(LeftX ,topy + Round(3*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(3*PageTopY/6));
Canvas.Pen.Style:=psDot;
Canvas.MoveTo(LeftX ,topy + Round(4*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(4*PageTopY/6));
Canvas.MoveTo(LeftX ,topy + Round(5*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(5*PageTopY/6));
KWIDTH := PAINTWIDTH - LEFTX - RIGHTX;
Canvas.MoveTo(LeftX + ROUND(KWIDTH/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH/6),PaintHeight-BottomY);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*2/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*2/6),PaintHeight-BottomY);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*3/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*3/6),PaintHeight-BottomY);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*4/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*4/6),PaintHeight-BottomY);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*5/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*5/6),PaintHeight-BottomY);
Canvas.Font.Color := clRED;
Canvas.Brush.Color:=clWhite;//clBlack;
Canvas.Font.Size:=11;
Canvas.Font.name:='宋体';
TempString:=' 批温度记录查看器 V1.0, Designed by 黄春森, 2007.7';
Canvas.TextOut(1,1,TempString);
End;
End;
Procedure TFormKXianMain.DrawEMPTYSec(Sender: Tobject);
Var TempString:String;
VAR KWIDTH :INTEGER;
Begin
with imageSec do
If SecDayCount<=0 Then
Begin
Canvas.Brush.Color:=clWhite;//clbLACK;
Canvas.Brush.style:=bsSolid;
Canvas.Pen.Style:=psSolid ;
Canvas.Pen.Color:=clMaroon;
Canvas.FillRect(Rect(0,0,PaintWidth,PaintHeight));
//左边竖直线
Canvas.Pen.Color:=clRED;//CLWHITE;//clred;
Canvas.MoveTo(LeftX-1,Topy);
Canvas.LineTo(LeftX-1,PaintHeight);
//上边水平线
Canvas.MoveTo(0,TopY);
Canvas.LineTo(PaintWidth,TopY);
Canvas.MoveTo(0,TopY-2);
Canvas.LineTo(PaintWidth,TopY-2);
//右边竖直线
Canvas.MoveTo(PaintWidth-RightX,TopY);
Canvas.LineTo(PaintWidth-RightX,PaintHeight);
//下边水平线
Canvas.MoveTo(0,PaintHeight-BottomY);
Canvas.LineTo(PaintWidth-RightX,PaintHeight-BottomY);
//画1/3线
PageTopY:=PaintHeight-BottomY-topy;
Canvas.Pen.Style:=psDot;
Canvas.Pen.Color:=CLGRAY;//clMaroon;
Canvas.MoveTo(LeftX ,topy + Round(PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(PageTopY/6));
Canvas.MoveTo(LeftX ,topy + Round(2*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(2*PageTopY/6));
Canvas.Pen.Style:=psSolid;
Canvas.MoveTo(LeftX ,topy + Round(3*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(3*PageTopY/6));
Canvas.Pen.Style:=psDot;
Canvas.MoveTo(LeftX ,topy + Round(4*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(4*PageTopY/6));
Canvas.MoveTo(LeftX ,topy + Round(5*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(5*PageTopY/6));
KWIDTH := PAINTWIDTH - LEFTX - RIGHTX;
Canvas.MoveTo(LeftX + ROUND(KWIDTH/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH/6),PaintHeight-BottomY);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*2/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*2/6),PaintHeight-BottomY);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*3/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*3/6),PaintHeight-BottomY);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*4/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*4/6),PaintHeight-BottomY);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*5/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*5/6),PaintHeight-BottomY);
Canvas.Font.Color := clRED;
Canvas.Brush.Color:=clBlack;
Canvas.Font.Size:=9;
Canvas.Font.name:='宋体';
TempString:='标准对照';
Canvas.TextOut(1,1,TempString);
End;//数据集中数据个数大于0
End;
//画线的初始化
Procedure TFormKXianMain.DrawLineInIt(Sender: Tobject);
Var li_cnt, li_num : integer;//计算总许可格子数
Begin
If DayCount<=0 Then exit;
BeginDate:=0;
enddate :=daycount -1;
li_cnt :=trunc(int((PaintWidth-RightX-leftx)/ DefaultWidth)) ;
if currentX < leftx then CurrentX := LeftX + Round((DefaultWidth-1)/2);
li_num := Trunc((CurrentX - leftx)/DefaultWidth+0.5);
leftDate := CurrentDate - li_num;
if leftDate <0 then leftDate :=0;
RightDate := leftdate + li_cnt -1;
if RightDate > endDate then RightDAte := endDate;
CurrentX:=LeftX +(currentDate-LeftDate)*DefaultWidth + Round((DefaultWidth-1)/2);
End;
Procedure TFormKXianMain.DrawLineInItSec(Sender: Tobject);
Var li_cnt, li_num : integer;//计算总许可格子数
Begin
If SecDayCount<=0 Then exit;
SecBeginDate:=0;
SecEnddate :=SecDaycount -1;
li_cnt :=trunc(int((PaintWidth-RightX-leftx)/ DefaultWidth)) ;
if SeccurrentX < leftx then SecCurrentX := LeftX + Round((DefaultWidth-1)/2);
li_num := Trunc((SecCurrentX - leftx)/DefaultWidth+0.5);
SecLeftDate := SecDate - li_num;
if SecLeftDate <0 then SecLeftDate :=0;
SecRightDate := SecLeftdate + li_cnt -1;
if SecRightDate > SecEndDate then SecRightDAte := SecEndDate;
SecCurrentX:=LeftX +(SecDate-SecLeftDate)*DefaultWidth + Round((DefaultWidth-1)/2);
end;
//画线
Procedure TFormKXianMain.EnlageLineInIt(Sender: Tobject; flag : integer);
var oldmsi , li_tmp:integer;
Var li_cnt : integer;//计算总许可格子数
Begin
oldmsi :=0;
If DayCount<=0 Then exit;
if flag <0 then oldmsi :=msi - 1;
if flag >=0 then oldmsi :=msi+1;
if msi <0 then msi :=0;
if msi >length(ms)-1 then msi :=length(ms)-1;
BeginDate:=0;
EndDate:=DayCount-1;
li_cnt :=trunc(int((PaintWidth-RightX-leftx)/ DefaultWidth)) ;
currentDate:=round(currentDate*Ms[oldmsi]/MS[msi]); //计算当前位置
if currentDate> Daycount-1 then currentDate :=Daycount -1;
if DayCount <= Li_cnt then
begin //总格子少时
LeftDate :=0;
RightDate :=EndDate;
end
else
Begin //总格子多时,放大或缩小后的当前格位置,紧接计算Leftdate和RightDate
leftdate :=round(LeftDate*MS[oldmsi]/MS[msi]); //计算左边的起始位置
if currentdate - leftDate > li_cnt-1 then leftDate :=currentdate-li_cnt+1;
RightDate := LeftDate +li_cnt-1;
if RightDate > EndDate then
begin
li_tmp := RightDate - Enddate;
RightDate := RightDate- li_tmp;
Leftdate :=Leftdate -Li_tmp;
end
end;
CurrentX:=LeftX +(currentDate-LeftDate)*DefaultWidth + Round((DefaultWidth-1)/2);
End;
Procedure TFormKXianMain.EnlageLineInItSec(Sender: Tobject; flag : integer);
var oldmsi , li_tmp:integer;
Var li_cnt : integer;//计算总许可格子数
Begin
oldmsi :=0;
If SecDayCount<=0 Then exit;
if flag <0 then oldmsi :=msi - 1;
if flag >=0 then oldmsi :=msi+1;
if msi <0 then msi :=0;
if msi >length(ms)-1 then msi :=length(ms)-1;
SecBeginDate:=0;
SecEndDate:=SecDayCount-1;
li_cnt :=trunc(int((PaintWidth-RightX-leftx)/ DefaultWidth)) ;
SecDate:=round(SecDate*Ms[oldmsi]/MS[msi]); //计算当前位置
if SecDate> SecDaycount-1 then SecDate :=SecDaycount -1;
if SecDayCount <= Li_cnt then
begin //总格子少时
SecLeftDate :=0;
SecRightDate :=SecEndDate;
end
else
Begin //总格子多时,放大或缩小后的当前格位置,紧接计算Leftdate和RightDate
Secleftdate :=round(SecLeftDate*MS[oldmsi]/MS[msi]); //计算左边的起始位置
if SecDate - SecleftDate > li_cnt-1 then SecleftDate :=Secdate-li_cnt+1;
SecRightDate := SecLeftDate +li_cnt-1;
if SecRightDate > SecEndDate then
begin
li_tmp := SecRightDate - SecEnddate;
SecRightDate := SecRightDate- li_tmp;
SecLeftdate :=SecLeftdate -Li_tmp;
end
end;
SecCurrentX:=LeftX +(SecDate-SecLeftDate)*DefaultWidth + Round((DefaultWidth-1)/2);
End;
Procedure TFormKXianMain.DrawLine(Sender: Tobject);
Var kpjg,spjg,zgjg,zdjg,PJJG:Integer;
Var x1,x2,y1,y2,x3,y3,x4,y4, AX,AY,PREAX,PREAY:Integer;
Var I,Kheight:Integer;
Var TempString,OutStr, TEMPSTR:String;
Var TempLen,StrLen:Integer;
VAR KWIDTH :INTEGER;
VAR KTMP, TMPT: INTEGER;
VAR KXISHU :REAL;
Begin
with imageWork do
If DayCount>0 Then
Begin
Canvas.Brush.Color:=clWhite;//clBlack;
Canvas.Brush.style:=bsSolid;
Canvas.Pen.Style:=psSolid;
Canvas.FillRect(Rect(0,TOPY,PaintWidth,PaintHeight));
//左边竖直线
Canvas.Pen.Color:=clRED;//CLWHITE;//clred;
Canvas.MoveTo(LeftX-1,Topy);
Canvas.LineTo(LeftX-1,PaintHeight);
//上边水平线
Canvas.MoveTo(0,TopY);
Canvas.LineTo(PaintWidth,TopY);
Canvas.MoveTo(0,TopY-2);
Canvas.LineTo(PaintWidth,TopY-2);
//右边竖直线
Canvas.MoveTo(PaintWidth-RightX,TopY);
Canvas.LineTo(PaintWidth-RightX,PaintHeight);
//下边水平线
Canvas.MoveTo(0,PaintHeight-BottomY);
Canvas.LineTo(PaintWidth-RightX,PaintHeight-BottomY);
//画1/6线
PageTopY:=Height-BottomY-topy ;
Canvas.Pen.Style:=psDot;
Canvas.Pen.Color:=clMaroon;// CLGRAY;//;
Canvas.MoveTo(LeftX ,topy + Round(PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(PageTopY/6));
Canvas.MoveTo(LeftX ,topy + Round(2*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(2*PageTopY/6));
Canvas.Pen.style:=psSolid;
Canvas.MoveTo(LeftX ,topy + Round(3*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(3*PageTopY/6));
Canvas.Pen.style:=psDot;
Canvas.MoveTo(LeftX ,topy + Round(4*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(4*PageTopY/6));
Canvas.MoveTo(LeftX ,topy + Round(5*PageTopY/6));
Canvas.LineTo(PaintWidth-RightX,topy + Round(5*PageTopY/6));
Canvas.FONT.COLOR:=CLRED;
Canvas.FONT.SIZE:=9;
KWIDTH := PAINTWIDTH - LEFTX - RIGHTX;
KTMP := LineData[RIGHTDATE].iFlag-LineData[LEFTDATE].iFlag;
KXISHU := KTMP / ((RIGHTDATE-LEFTDATE)*(DEFAULTWIDTH ));
TMPT := LineData[LEFTDATE].iFlag + ROUND(0*KXISHU);
TempStr:=IntToStr(TMPT);
Canvas.TextOut(LEFTX +1,PaintHeight-BottomY+1,TempStr);
TMPT := LineData[LEFTDATE].iFlag + ROUND(KWIDTH/6*KXISHU);
TempStr:=IntToStr(TMPT);
Canvas.TextOut(LEFTX+ ROUND(KWIDTH/6)+1,PaintHeight-BottomY+1,TempStr);
Canvas.MoveTo(LeftX + ROUND(KWIDTH/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH/6),PaintHeight-BottomY);
TMPT := LineData[LEFTDATE].iFlag + ROUND(KWIDTH*2/6*KXISHU);
TempStr:=IntToStr(TMPT);
Canvas.TextOut(LEFTX+ ROUND(KWIDTH*2/6)+1,PaintHeight-BottomY+1,TempStr);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*2/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*2/6),PaintHeight-BottomY);
TMPT := LineData[LEFTDATE].iFlag + ROUND(KWIDTH*3/6*KXISHU);
TempStr:=IntToStr(TMPT);
Canvas.TextOut(LEFTX+ ROUND(KWIDTH*3/6)+1,PaintHeight-BottomY+1,TempStr);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*3/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*3/6),PaintHeight-BottomY);
TMPT := LineData[LEFTDATE].iFlag + ROUND(KWIDTH*4/6*KXISHU);
TempStr:=IntToStr(TMPT);
Canvas.TextOut(LEFTX+ ROUND(KWIDTH*4/6)+1,PaintHeight-BottomY+1,TempStr);
Canvas.MoveTo(LeftX + ROUND(KWIDTH*4/6),topy);
Canvas.LineTo(LeftX + ROUND(KWIDTH*4/6),PaintHeight-BottomY);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -