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

📄 productquery.pas

📁 用delphi编写的数据库管理软件
💻 PAS
字号:
unit ProductQuery;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Base_Dll, StdCtrls, Grids, DBGridEh, ExtCtrls, DB, DBClient, ADODB,
  dxdbtrel, jpeg;

type
  TfrmProductQuery = class(TfrmBase_DLL)
    CDSProduct: TClientDataSet;
    CDSTMP: TClientDataSet;
    DSTMP: TDataSource;
    GroupBox1: TGroupBox;
    Label3: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit3: TEdit;
    Edit2: TEdit;
    Edit1: TEdit;
    Panel1: TPanel;
    DBGridEh1: TDBGridEh;
    Button1: TButton;
    Button4: TButton;
    Button2: TButton;
    Image1: TImage;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Button2Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure CDSTMPAfterScroll(DataSet: TDataSet);
  private
    procedure CreateTMPData;
    procedure DeleteCDSData;
    procedure assingcarimg;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmProductQuery: TfrmProductQuery;

implementation

uses DataProcess, Global, untImageBrowse;

{$R *.dfm}

procedure TfrmProductQuery.FormDestroy(Sender: TObject);
begin
  inherited;
  frmProductQuery:=nil;
end;

procedure TfrmProductQuery.FormCreate(Sender: TObject);
begin
  inherited;
  CreateTMPData;
end;

procedure TfrmProductQuery.Button1Click(Sender: TObject);
begin
  inherited;
  edit1.Text:='';
  edit2.Text:='';
  edit3.Text:='';
end;

procedure TfrmProductQuery.Button4Click(Sender: TObject);
var
  sFilter:string;
begin
  inherited;
sFilter:='';
if Trim(edit1.Text) <> '' then
   begin
   if sFilter<>'' then sFilter := sFilter+' and ';
    sFilter:= sFilter+' fCode like '+vartosql('%'+Trim(Edit1.Text)+'%');
   end;
if Trim(edit2.Text) <> '' then
   begin
   if sFilter<>'' then sFilter := sFilter+' and ';
      sFilter:= sFilter+' fName like '+vartosql('%'+Trim(Edit2.Text)+'%');
   end;

if Trim(edit2.Text) <> '' then
   begin
   if sFilter<>'' then sFilter := sFilter+' and ';
      sFilter:= sFilter+' fModel like '+vartosql('%'+Trim(Edit3.Text)+'%');
   end;

if sFilter='' then sFilter:=' fid > 0 ';   

DeleteCDSData;

GetsqlData(CDSProduct,'tVehicle','fid',sFilter,20);
if CDSproduct.RecordCount > 0 then
  begin
    CDSProduct.First;
    while not CDSProduct.Eof do
      begin
        CDSTMP.AppendRecord([  False,
                              CDSproduct.FieldByName('fid').AsInteger,
                              CDSproduct['fcode'],
                              CDSproduct['fname'],
                              CDSproduct['fmodel'],
                              CDSProduct['fcolor'],
                              CDSProduct['ffuel'],
                              CDSProduct['frentday'],
                              CDSProduct['fPicture'] ]);
      CDSproduct.Next;
      end;
  CDStmp.Fields.FieldByName('fcode').ReadOnly:=True;
  CDStmp.Fields.FieldByName('fname').ReadOnly:=True;
  CDStmp.Fields.FieldByName('fmodel').ReadOnly:=True;
  CDStmp.Fields.FieldByName('fcolor').ReadOnly:=True;
  CDStmp.Fields.FieldByName('ffuel').ReadOnly:=True;
  CDStmp.Fields.FieldByName('fselect').ReadOnly:=False;
  end;
end;

procedure TfrmProductQuery.CreateTMPData;
begin
  with CDSTMP do
    begin
      Close;
      FieldDefs.Add('fSelect',ftboolean);
      FieldDefs.Add('fid',ftInteger);
      FieldDefs.Add('fcode',ftString,20);
      FieldDefs.Add('fname',ftString,40);
      FieldDefs.Add('fmodel',ftString,50);
      FieldDefs.Add('fcolor',ftString,48);
      FieldDefs.Add('ffuel',ftFloat);
      FieldDefs.Add('frentday',ftFloat);
      FieldDefs.Add('fPicture',ftString,80);

      Createdataset;
      open;
      fields.FieldByName('fid').Visible:=False;
      fields.FieldByName('frentday').Visible:=False;
      fields.FieldByName('fPicture').Visible:=False;

      fields.FieldByName('fcode').DisplayLabel:='车号';
      fields.FieldByName('fcode').DisplayWidth:=10;

      fields.FieldByName('fname').DisplayLabel:='车名';
      fields.FieldByName('fname').DisplayWidth:=16;

      fields.FieldByName('fmodel').DisplayLabel:='车型';
      fields.FieldByName('fmodel').DisplayWidth:=20;

      fields.FieldByName('fcolor').DisplayLabel:='颜色';
      fields.FieldByName('fcolor').DisplayWidth:=16;

      fields.FieldByName('ffuel').DisplayLabel:='排气量';
      fields.FieldByName('ffuel').DisplayWidth:=8;

      fields.FieldByName('fselect').DisplayLabel:='选择';
      fields.FieldByName('fselect').DisplayWidth:=6;

    end;
end;

procedure TfrmProductQuery.DBGridEh1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
  inherited;
  if CDSTMP.RecNo  mod 2 = 0 then
    begin
      DBGridEh1.Canvas.Brush.Color:=$00EAEFED;
      DBGridEh1.Canvas.Font.Color:=clBlack;
    end
    else
    begin
      DBGridEh1.Canvas.Brush.Color:=clWhite;
      DBGridEh1.Canvas.Font.Color:=clBlack;
    end;
  if gdselected in state then
    begin
      DBGridEh1.Canvas.Brush.Color:=clBackground;
      DBGridEh1.Canvas.Font.Color:=clWhite;
    end;
  DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

procedure TfrmProductQuery.DBGridEh1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if (key=VK_DOWN) or (key=VK_TAB) then
    begin
        (sender as TDBgridEH).DataSource.DataSet.Next;
        key:=0;
    end;
end;

procedure TfrmProductQuery.Button2Click(Sender: TObject);
begin
  inherited;
  if CDSTMP.RecordCount = 0 then Exit;
  PublicData:=CDSTmp.Data;  
  frmProductQuery.Close;
end;

procedure TfrmProductQuery.DeleteCDSData;
begin
  if CDSTMP.Active then
    begin
      CDSTMP.First;
      while not CDSTMP.Eof do
        CDSTMP.Delete;

    CDStmp.Fields.FieldByName('fcode').ReadOnly:=False;
    CDStmp.Fields.FieldByName('fname').ReadOnly:=False;
    CDStmp.Fields.FieldByName('fmodel').ReadOnly:=False;
    CDStmp.Fields.FieldByName('fcolor').ReadOnly:=False;
    CDStmp.Fields.FieldByName('ffuel').ReadOnly:=False;
    end;
end;

procedure TfrmProductQuery.Image1Click(Sender: TObject);
begin
  inherited;
  if not CDSTmp.Active then Exit;
  if CDStmp.FieldByName('fPicture').AsString <> '' then
    begin
      ItemImages:=CDStmp.FieldByName('fPicture').AsString;
      openModalForm(TfrmImageBrowse,self,Tform(FrmImageBrowse));
    end;
end;

procedure TfrmProductQuery.assingcarimg;
var
  imgStream:TmemoryStream;
  jpg:TjpegImage;
begin
  if CDSTMP.FieldByName('fPicture').AsString<>'' then
    begin
      try
        imgStream:=TmemoryStream.Create;
        jpg:=TjpegImage.Create;
        try
          imgStream.LoadFromFile(CDSTMP.FieldByName('fPicture').AsString);
          jpg.LoadFromStream(imgStream);
          image1.Picture.Assign(jpg);
        except
          image1.Picture:=nil;
        end;
      finally
        imgStream.Free;
        Jpg.free;
      end;
    end
    else
    image1.Picture:=nil;
end;

procedure TfrmProductQuery.CDSTMPAfterScroll(DataSet: TDataSet);
begin
  inherited;
assingcarimg;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -