📄 statcurve360_f.pas
字号:
end;
procedure TfrmStatCurve360.SetPaintBoxPosition(imgCanvas: TImage; pbCanvas: TPaintBox);
begin
pbCanvas.Left:=imgCanvas.Left+30;
pbCanvas.Top:=imgCanvas.Top+30;
pbCanvas.Width:=imgCanvas.Width-60;
pbCanvas.Height:=imgCanvas.Height-60;
px_min:=0;
px_max:=pbCanvas.Width;
py_min:=pbCanvas.Height;
py_max:=0;
end;
procedure TfrmStatCurve360.DrawLine;
begin
pbCanvas.Canvas.Pen.Color := clRed;
rePaintType:=mRePaint;
pPolyline(tmpLine,pbCanvas);
end;
procedure TfrmStatCurve360.pbCanvasMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
lab_X.Visible:=true;
lab_Y.Visible:=true;
lab_X.Caption:='x: '+formatfloat('0.00',(x/x_scale));
lab_Y.Caption:='y: '+formatfloat('0.00',(py_min-y)/y_scale);
lab_X.Left:=pbCanvas.Left+x+10;
lab_X.Top:=pbCanvas.Top+y-20;
lab_Y.Left:=pbCanvas.Left+x+80;
lab_Y.Top:=pbCanvas.Top+y-20;
if (old_x<>-1) and (old_x>5) and (old_y<pbCanvas.Height-5) then
begin
pbCanvas.Canvas.Pen.Color:=clWhite;
pbCanvas.Canvas.MoveTo(old_x,pbCanvas.Height-5);
pbCanvas.Canvas.LineTo(old_x,0);
pbCanvas.Canvas.MoveTo(5,old_y);
pbCanvas.Canvas.LineTo(pbCanvas.Width,old_y);
end;
if rePaintType=mRePaint then
DrawLine;
if (x>5) and (y<pbCanvas.Height-5) then
begin
pbCanvas.Canvas.Pen.Color:=clBtnFace;
pbCanvas.Canvas.MoveTo(x,pbCanvas.Height-5);
pbCanvas.Canvas.LineTo(x,0);
pbCanvas.Canvas.MoveTo(5,y);
pbCanvas.Canvas.LineTo(pbCanvas.Width,y);
old_x:=x;
old_y:=y;
end;
end;
function TfrmStatCurve360.getData(strRealTime:String):Boolean;
var
strSql:string;
i:integer;
begin
if strRealTime='' then
strRealTime:='%'
else
strRealTime:=LeftStr(strRealTime,13);
strSql:='select Current360h_Time,Current360h_RealTime,Current360h_AverageSpeed from view_current360_car where Car_LicensePlate='''+edtCarLicense.Text+''' and Car_LicensePlateColor='''+edtLicenseColor.Text+''' and Current360h_RealTime LIKE '''+strRealTime+'%'' order by Current360h_ID';
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(strSql);
ADOQuery.Open;
if ADOQuery.RecordCount=0 then
begin
Result:=False;
Exit;
end;
for i:=0 to 59 do
begin
tmpLine[i].x:=ADOQuery.FieldByName('Current360h_Time').Value;
tmpLine[i].y:=ADOQuery.FieldByName('Current360h_AverageSpeed').Value;
ADOQuery.Next;
end;
Result:=True;
end;
procedure TfrmStatCurve360.btnOKClick(Sender: TObject);
var
strSql: String;
strSpeedUpperLimit: String;
begin
rePaintType:=mNoPaint;
pbCanvas.Refresh;
if getData('')=False then
begin
ShowMessage('没有找到符合条件的数据');
Exit;
end
else
begin
strSql:='select TOP 1 Car_Type,Current360h_RealTime,Car_SpeedUpperLimit from view_current360_car where Car_LicensePlate='''+edtCarLicense.Text+''' and Car_LicensePlateColor='''+edtLicenseColor.Text+''' order by Current360h_ID';
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(strSql);
ADOQuery.Open;
if NOT(ADOQuery.FieldByName('Car_Type').Value=NULL) then
labCarType.Caption:='车辆分类:'+ADOQuery.FieldByName('Car_Type').AsString;
if NOT(ADOQuery.FieldByName('Current360h_RealTime').Value=NULL) then
labStartTime.Caption:='起始时刻(对应坐标原点):'+LeftStr(ADOQuery.FieldByName('Current360h_RealTime').AsString,14)+'00';
strSpeedUpperLimit:=ADOQuery.FieldByName('Car_SpeedUpperLimit').AsString;
strSql:='select Car_LicensePlate as 车牌号码,'+
'Car_Type as 车辆类型,'+
'Current360h_RealTime as 实时时刻,'+
'Current360h_AverageSpeed as 平均速度,'+
'Driver_Licence as 驾驶证号 from view_current360_car where Car_LicensePlate='''+edtCarLicense.Text+''' and Car_LicensePlateColor='''+edtLicenseColor.Text+''' order by Current360h_ID';
frmDataList.ADOQuery.Close;
frmDataList.ADOQuery.SQL.Clear;
frmDataList.ADOQuery.SQL.Add(strSql);
frmDataList.ADOQuery.Open;
strSql:='select Car_LicensePlate as 车牌号码,'+
'Car_Type as 车辆类型,'+
'Current360h_RealTime as 实时时刻,'+
'Current360h_AverageSpeed as 平均速度,'+
'Driver_Licence as 驾驶证号 from view_current360_car where Car_LicensePlate='''+edtCarLicense.Text+''' and Car_LicensePlateColor='''+edtLicenseColor.Text+''' and Current360h_AverageSpeed>'+strSpeedUpperLimit+' order by Current360h_ID';
frmDataList.ADOQueryUp.Close;
frmDataList.ADOQueryUp.SQL.Clear;
frmDataList.ADOQueryUp.SQL.Add(strSql);
frmDataList.ADOQueryUp.Open;
end;
DrawLine;
end;
procedure TfrmStatCurve360.pbCanvasPaint(Sender: TObject);
begin
if rePaintType=mRePaint then
DrawLine;
end;
procedure TfrmStatCurve360.btnPrintClick(Sender: TObject);
begin
frmStatCurve360.Print;
end;
procedure TfrmStatCurve360.btnSelectClick(Sender: TObject);
var
TempCOM: Variant;
begin
TempCOM := CreateComObject(StringToGUID('{8EFBB15C-44B7-49BF-8529-F35147FAD8A4}')) as IDispatch;
edtLicenseColor.Text := TempCOM.MMInvoke('','','',DataString);
end;
procedure TfrmStatCurve360.btnDataListClick(Sender: TObject);
begin
frmDataList.Show;
end;
procedure TfrmStatCurve360.edtCarLicenseDblClick(Sender: TObject);
begin
lbCarLicList.Visible:=True;
end;
procedure TfrmStatCurve360.lbCarLicListClick(Sender: TObject);
var
lbindex: Integer;
begin
for lbindex:=0 to lbCarLicList.Items.Count-1 do
begin
if lbCarLicList.Selected[lbindex] then
Break;
end;
edtCarLicense.Text:=lbCarLicList.Items.Strings[lbindex];
lbCarLicList.Visible:=False;
end;
procedure TfrmStatCurve360.FormShow(Sender: TObject);
begin
rePaintType:=mNoPaint;
pbCanvas.Refresh;
end;
procedure TfrmStatCurve360.edtCarLicenseKeyPress(Sender: TObject;
var Key: Char);
begin
if key=#97 then //a
key:=#65; //A
if key=#98 then //b
key:=#66; //B
if key=#99 then //c
key:=#67; //C
if key=#100 then //d
key:=#68; //D
if key=#101 then //e
key:=#69; //E
if key=#102 then //f
key:=#70; //F
if key=#103 then //g
key:=#71; //G
if key=#104 then //h
key:=#72; //H
if key=#105 then //i
key:=#73; //I
if key=#106 then //j
key:=#74; //J
if key=#107 then //k
key:=#75; //K
if key=#108 then //l
key:=#76; //L
if key=#109 then //m
key:=#77; //M
if key=#110 then //n
key:=#78; //N
if key=#111 then //o
key:=#79; //O
if key=#112 then //p
key:=#80; //P
if key=#113 then //q
key:=#81; //Q
if key=#114 then //r
key:=#82; //R
if key=#115 then //s
key:=#83; //S
if key=#116 then //t
key:=#84; //T
if key=#117 then //u
key:=#85; //U
if key=#118 then //v
key:=#86; //V
if key=#119 then //w
key:=#87; //W
if key=#120 then //x
key:=#88; //X
if key=#121 then //y
key:=#89; //Y
if key=#122 then //z
key:=#90; //Z
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -