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

📄 multiselgrid.pas

📁 感应IC卡电脑考勤、门禁、售饭一卡通管理系统是基于我公司开发生产的ESW型智能卡记录器所具有的对持卡人刷卡卡号、时间、次数进行读取贮存等功能
💻 PAS
字号:
unit MultiSelGrid;

interface

uses Provider, 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, DBCtrls,
  ComCtrls, Mask, FormStore, MyGrid, MacroQuery, ADODB, AdoMacroQry,
  StoreForm, ADOQry, DBClient;

type
  TfrmMultiSelGrid = class(TForm)
    DataSource1: TDataSource;
    Panel1: TPanel;
    DBGrid1: TMyGrid;
    Image1: TImage;
    Label7: TLabel;
    qryList: TClientDataSet;
    cmdSelAll: TBitBtn;
    cmdUnSel: TBitBtn;
    cmdOK: TBitBtn;
    cmdCancel: TBitBtn;
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure cmdSelAllClick(Sender: TObject);
    procedure cmdUnSelClick(Sender: TObject);
    procedure cmdCancelClick(Sender: TObject);
    procedure cmdOKClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
	function Choose(dsGrid:TDBGrid; tsField:string=''; tsSelValues:string='') :Boolean;
  end;

var
  frmMultiSelGrid: TfrmMultiSelGrid;

implementation

uses SelfFunc, Main, RptExcel, ZlJjDd;

{$R *.DFM}

function TfrmMultiSelGrid.Choose(dsGrid:TDBGrid; tsField:string=''; tsSelValues:string='') :Boolean;
var dsData :TDataSet;
	i :integer;
    oField :TField;
begin
	dsData :=dsGrid.DataSource.DataSet;
    if not dsData.Active then Exit;
    if dsData.IsEmpty then Exit;
    
    qryList.Close;
    qryList.Filtered :=False;
    qryList.Fields.Clear;
    qryList.FieldDefs.Clear;

    for i :=0 to dsData.FieldCount -1 do
    begin
      with qryList.FieldDefs.AddFieldDef do
      begin
        Name := dsData.Fields[i].FieldName;
        DataType := dsData.Fields[i].DataType;
        oField :=CreateField(qryList);
      end;
      oField.DisplayLabel :=dsData.Fields[i].DisplayLabel;
      oField.DisplayWidth :=dsData.Fields[i].DisplayWidth;
    end;
      with qryList.FieldDefs.AddFieldDef do
      begin
        Name := 'Selected';
        DataType := ftString;
        Size :=1;
        oField :=CreateField(qryList);
      end;
      oField.DisplayLabel :='匡拒';
      oField.DisplayWidth :=4;
      oField.Alignment :=taCenter;

	DBGrid1.Columns.Assign(dsGrid.Columns);
    with DBGrid1.Columns.Add do
    begin
    	FieldName :='Selected';
        Index :=0;
    end;

    qryList.CreateDataSet;
    dsData.First;
    while not dsData.Eof do
    begin
      qryList.Append;
      for i :=dsData.FieldCount -1 downto 0 do
      	qryList.Fields[i].Value :=dsData.Fields[i].Value;
      qryList.Post;
      dsData.Next;
    end;


    Result :=(Self.ShowModal =mrOK);
end;

procedure TfrmMultiSelGrid.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
	if Key <>' ' then Exit;

	with qryList do
    begin
    	Edit;
        if qryList.FieldByName('Selected').AsString ='*' then
        	qryList.FieldByName('Selected').AsString :=''
        else qryList.FieldByName('Selected').AsString :='*';
        Post;
    end;
end;

procedure TfrmMultiSelGrid.DBGrid1MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var oCoord :TGridCoord;
begin
	if Button <>mbLeft then Exit;
	if qryList.IsEmpty then Exit;
	oCoord := DBGrid1.MouseCoord(X, Y);
	if (oCoord.X <= 0) or (oCoord.Y <= 0) then Exit;

	with qryList do
    begin
    	Edit;
        if qryList.FieldByName('Selected').AsString ='*' then
        	qryList.FieldByName('Selected').AsString :=''
        else qryList.FieldByName('Selected').AsString :='*';
        Post;
    end;
end;

procedure TfrmMultiSelGrid.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
	if DBGrid1.Canvas.Brush.Color =DBGrid1.Color then
    if qryList.FieldByName('Selected').AsString ='*' then
    begin
	    DBGrid1.Canvas.Brush.Color :=clInfoBk;
    end;
    DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

procedure TfrmMultiSelGrid.cmdSelAllClick(Sender: TObject);
var SavePlace:TBookMark;
begin
  with qryList do
  begin
  	DisableControls;
    SavePlace := GetBookmark;
    if not qryList.IsEmpty then qryList.First;
    while not qryList.Eof do
    begin
    	if qryList.FieldByName('Selected').AsString <>'*' then
        begin
        	qryList.Edit;
        	qryList.FieldByName('Selected').AsString :='*';
            qryList.Post;
        end;
    	qryList.Next;
    end;
    try
        GotoBookmark(SavePlace);
    Except
        Last;
    end;
    FreeBookmark(SavePlace);
    EnableControls;
  end;
end;

procedure TfrmMultiSelGrid.cmdUnSelClick(Sender: TObject);
var SavePlace:TBookMark;
begin
  with qryList do
  begin
  	DisableControls;
    SavePlace := GetBookmark;
    if not qryList.IsEmpty then qryList.First;
    while not qryList.Eof do
    begin
    	qryList.Edit;
        if qryList.FieldByName('Selected').AsString ='*' then
        	qryList.FieldByName('Selected').AsString :=''
        else qryList.FieldByName('Selected').AsString :='*';
        qryList.Post;
    	qryList.Next;
    end;
    try
        GotoBookmark(SavePlace);
    Except
        Last;
    end;
    FreeBookmark(SavePlace);
    EnableControls;
  end;
end;

procedure TfrmMultiSelGrid.cmdCancelClick(Sender: TObject);
begin
    Close;
end;

procedure TfrmMultiSelGrid.cmdOKClick(Sender: TObject);
begin
	qryList.Filter :='Selected=''*''';
    qryList.Filtered :=True;
    if qryList.IsEmpty then
    begin
    	MsgBox('叫匡拒

⌨️ 快捷键说明

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