⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statcurve360_f.pas

📁 汽车行驶记录仪360小时的全程速度时间曲线图的组件。
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -