EhLib使用说明(7)

2019-08-30 18:03

明,下面是对程序中的栅格 MemberGrid 的合条件的整行进行变色,变成黑体背景黄色的,其它不合条件的行的颜色为正常字体,白色背景,只在 DrawColumnCelL 事件中设条件其它的不变,如下:

procedure TClientForm.MemberGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var

oldcolor:tcolor; oldpm:tpenmode; begin

if DM.ProjectTEAM_LEADER.Value = DM.Emp_ProjEMP_NO.Value then {设定变色的行的条件}

MemberGrid.Canvas.Font.Style := [fsBold];

MemberGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State); {上面是演示程序的原内容,以下是增加部分} if DM.ProjectTEAM_LEADER.Value =DM.Emp_ProjEMP_NO.Value then {设定变色的行的条件} begin

oldpm:= MemberGrid.Canvas.pen.mode;

oldcolor:= MemberGrid.Canvas.Brush.color; MemberGrid.Canvas.Brush.color:=clyellow; MemberGrid.Canvas.pen.mode:=pmmask;

MemberGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State); MemberGrid.Canvas.Brush.color:=oldcolor; MemberGrid.Canvas.pen.mode:=oldpm; end; end;

感觉上这个方法和前面的几个颜色控制方法的原理是一样的,都是通过ONDrawColumnCell事件来实现变色醒目美化的功能。:)

2003-11-19 9:43:56 如何在DBGrid中能支持多项记录的选择 这份文档来自国外,粗略看了一下,很有用,推荐给大家学习使用。 【Question】: How to do multi-selecting records in TDBGrid? When you add [dgMultiSelect] to the Options property of a DBGrid, you give yourself the ability to select multiple records within the grid.

The records you select are represented as bookmarks and are stored in the SelectedRows property. The SelectedRows property is an object of type TBookmarkList. The properties and methods are described below.

// property SelectedRows: TBookmarkList read FBookmarks;

// TBookmarkList = class // public

{* The Clear method will free all the selected records within the DBGrid *} // procedure Clear;

{* The Delete method will delete all the selected rows from the dataset *} // procedure Delete;

{* The Find method determines whether a bookmark is in the selected list. *} // function Find(const Item: TBookmarkStr; // var Index: Integer): Boolean; {* The IndexOf method returns the index of the bookmark within the Items property. *}

// function IndexOf(const Item: TBookmarkStr): Integer;

{* The Refresh method returns a boolean value to notify whether any orphans were dropped (deleted) during the time the record has been selected in the grid. The refresh method can be used to update the selected list to minimize the possibility of accessing a deleted record. *}

// function Refresh: Boolean; True = orphans found {* The Count property returns the number of currently selected items in the DBGrid *}

// property Count: Integer read GetCount; {* The CurrentRowSelected property returns a boolean value and determines whether the current row is selected or not. *}

// property CurrentRowSelected: Boolean // read GetCurrentRowSelected // write SetCurrentRowSelected;

{* The Items property is a TStringList of TBookmarkStr *} // property Items[Index: Integer]: TBookmarkStr // read GetItem; default; // end;

unit Unit1;

interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables; type

TForm1 = class(TForm) Table1: TTable; DBGrid1: TDBGrid; Count: TButton; Selected: TButton;

Clear: TButton; Delete: TButton; Select: TButton;

GetBookMark: TButton; Find: TButton;

FreeBookmark: TButton; DataSource1: TDataSource;

procedure CountClick(Sender: TObject); procedure SelectedClick(Sender: TObject); procedure ClearClick(Sender: TObject); procedure DeleteClick(Sender: TObject); procedure SelectClick(Sender: TObject);

procedure GetBookMarkClick(Sender: TObject); procedure FindClick(Sender: TObject);

procedure FreeBookmarkClick(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end; var

Form1: TForm1;

Bookmark1: TBookmark; z: Integer;

implementation

{$R *.DFM}

//Example of the Count property

procedure TForm1.CountClick(Sender: TObject); begin

if DBgrid1.SelectedRows.Count > 0 then begin

showmessage(inttostr(DBgrid1.SelectedRows.Count)); end; end;

//Example of the CurrentRowSelected property procedure TForm1.SelectedClick(Sender: TObject); begin

if DBgrid1.SelectedRows.CurrentRowSelected then showmessage('Selected');

end;

//Example of the Clear Method

procedure TForm1.ClearClick(Sender: TObject); begin

dbgrid1.SelectedRows.Clear; end;

//Example of the Delete Method

procedure TForm1.DeleteClick(Sender: TObject); begin

DBgrid1.SelectedRows.Delete; end; {*

This example iterates through the selected rows of the grid and displays the second field of the dataset.

The Method DisableControls is used so that the DBGrid will not update when the dataset is changed. The last position of the dataset is saved as a TBookmark. The IndexOf method is called to check whether or not the bookmark is still existent. The decision of using the IndexOf method rather than the Refresh method should be determined by the specific application. *}

procedure TForm1.SelectClick(Sender: TObject); var

x: word;

TempBookmark: TBookMark; begin

DBGrid1.Datasource.Dataset.DisableControls; with DBgrid1.SelectedRows do if Count > 0 then begin

TempBookmark:= DBGrid1.Datasource.Dataset.GetBookmark; for x:= 0 to Count - 1 do begin

if IndexOf(Items[x]) > -1 then begin

DBGrid1.Datasource.Dataset.Bookmark:= Items[x];

showmessage(DBGrid1.Datasource.Dataset.Fields[1].AsString); end; end; end;

DBGrid1.Datasource.Dataset.GotoBookmark(TempBookmark);

DBGrid1.Datasource.Dataset.FreeBookmark(TempBookmark); DBGrid1.Datasource.Dataset.EnableControls; end; {*

This example allows you to set a bookmark and and then search for the bookmarked record within selected a record(s) within the DBGrid. *}

//Sets a bookmark

procedure TForm1.GetBookMarkClick(Sender: TObject); begin

Bookmark1:= DBGrid1.Datasource.Dataset.GetBookmark; end;

//Frees the bookmark

procedure TForm1.FreeBookmarkClick(Sender: TObject); begin

if assigned(Bookmark1) then begin

DBGrid1.Datasource.Dataset.FreeBookmark(Bookmark1); Bookmark1:= nil; end; end;

//Uses the Find method to locate the position of the bookmarked record within the selected list in the DBGrid

procedure TForm1.FindClick(Sender: TObject); begin

if assigned(Bookmark1) then begin

if DBGrid1.SelectedRows.Find(TBookMarkStr(Bookmark1),z) then showmessage(inttostr(z)); end; end;

end.

2003-11-19 10:11:21 另外一种可以在在Delphi中随意控制DBGrid 每一行颜色的方法 有个问题是在Delphi中使用DBGrid时,如何让DBGrid中每一行颜色按照用户自己的意愿控 制。最初看到这个问题时,我们以为非常非常简单,所以马上动手准备解决它。结果却发现不是

那么回事,传统方法根本不能发挥作用。在电脑面前一直坐到凌晨4点,不断地调试,幸运


EhLib使用说明(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013管理类联考数学真题分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: