TBookMark(书签)
书签
书签的作用是在数据集的某个位置做一个标记,以后可以快速方便地回到那个位置。TDataSet中提供了若干个属性和方法用于管理书签。
如果读Bookmark属性,返回当前记录的书签。如果写Bookmark属性,它能使一个指定的书签成为当前书签。
TDataSet中有关书签的几个函数都是虚拟的,TDataSet的派生类TBDEDataSet重新定义了这些方法,包括:
.BookmarkValid判断某个书签是否合法;
.CompareBookmarks比较两个书签是否相同;
.GetBookmark创建一个书签来标记当前记录;
.GotoBookmark回到用GetBookmark标记的位置;
.FreeBookmark删除一个书签。
要创建一个书签,首先要声明一个TBookmark类型的变量,然后调用GetBookmark函数创建一个标记当前记录的书签。TBookmark类型的变量实际上是一个无类型的指针。
在调用GotoBookmark之前,最好先调用BookmarkValid判断书签是否合法,因为书签标记的记录有可能已删掉。如果BookmarkValid返回True,说明书签是合法的,可以调用GotoBookmark跳转到书签标记的位置。
可以调用CompareBookmarks比较两个书签是否相同,如果两个书签不同,这个函数就返回1。如果两个书签相同或者都是NIL,这个函数就返回0。
GotoBookmark需要传递一个参数,即书签。
FreeBookmark用于删除一个书签。当一个书签已用不到时,应当及时删除它,因为书签也是一种资源。
选择dbgridgh 选中几个(放一个鼠标右键事件)
选中所需数据,点击事件,下一页就显示所需数据
//鼠标右键事件
procedure TFromCopyRightWH.N2Click(Sender: TObject);
var rightid : string;
i : Integer;
tempBookMark: TBookMark;
begin
with dbgrdh1.DataSource.DataSet do
begin
for i:=0 to dbgrdh1.SelectedRows.Count-1 do
begin
dbgrdh1.DataSource.DataSet.Bookmark:=dbgrdh1.SelectedRows.Items[i];
tempBookMark:=dbgrdh1.DataSource.DataSet.GetBookmark;
GotoBookmark(pointer(dbgrdh1.SelectedRows.Items[i]));
rightid :=rightid+ dbgrdh1.DataSource.DataSet.fieldbyname('rightid').AsString+',';
end;
end;
Delete(rightid,Length(rightid),1);
FormCopyRightHB.SetValue(rightid);
dbgrdh1.Datasource.Dataset.GotoBookmark(tempBookMark);
FormCopyRightHB.ShowModal();
end;
//显示页赋值方法
procedure TFormCopyRightHB.SetValue( rightid : string);
begin
rightidHB:=rightid;
with DM.qry_SelectHB do
begin
Close;
sql.clear;
SQL.Add('SELECT rightid as 序号,JMName as 节目名称, Publish as 出品方, Director as 导演,Actor as 主演,');
sql.Add('JMType,(select JMTypeName from T_JMType where id =JMType)as 节目类型,');
SQL.Add('Publishyears as 出品年代, MadeIn,(SELECT MadeInName FROM T_MadeIn
WHERE Id = madein )as 产地, Version as 版本,volume as 总集数,rightid,checked
FROM T_CopyRight ');
SQL.Add('where rightid in( '+rightid+' )');
Open;
end;
dbgrd1.DataSource:=DM.ds_SelectHB;
dbgrd1.Columns.Items[0].Width:=30;
dbgrd1.Columns.Items[1].Width:=70;
dbgrd1.Columns.Items[2].Width:=100;
dbgrd1.Columns.Items[3].Width:=100;
dbgrd1.Columns.Items[4].Width:=100;
dbgrd1.Columns.Items[5].Width:=70;
dbgrd1.Columns.Items[6].Width:=70;
dbgrd1.Columns.Items[7].Width:=70;
dbgrd1.Columns.Items[8].Width:=70;
end;