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;

posted @ 2022-12-17 23:21  熊大熊二  阅读(105)  评论(0编辑  收藏  举报