第一个:如何判断DBGrid有记录被选中了?我要在DBGrid有记录被选中的时候打开删除界面,如果没有选中的记录则提示。
第二个:如何判断某一个界面显示的时候前面的界面名称?我现在有两个界面,一个是数据录入界面,一个是数据查询界面,这两个界面都有删除按钮,调用的是同一个删除界面。我要在删除界面的OnShow界面中判断是从哪个界面点出来的,相应的显示也不相同。
第三个:我现在点击DBGrid的时候不是整行都变颜色,而是这一行的那个字段名变颜色,怎么让整行都变颜色?

解决方案 »

  1.   

    1.DBGrid1.SelectedRows.Count
    2.加个变量标识一下,a窗体点出来时,变量赋值1,b窗体点出时,变量赋值2......
    3.DBGrid1.Options := DBGrid1.Options + [dgRowSelect]
      

  2.   

    1.可作一個復選框,程序中去處理判斷,有打勾就打開刪除界面,與否剛給出提示;
    2.最簡單的就是,可加一個全局變量a來標識是那一個form,然後再根據這個a這個id來作相應的操作;
    3.dbgrid整行變色:在option里面把dgRowSelect设为Trueif ((State=[gdSelected]) or (State=[gdSelected,gdFocused])) then
    begin
    DBGrid1.Canvas.Font.Color:=ClYellow;
    DBGrid1.Canvas.Brush.Color:=clblue;
    DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end
    else
    begin
    end;
      

  3.   

    dbgrid多行選中example:procedure TForm1.Button1Click(Sender: TObject); 
    var 
           i, j: Integer; 
           s: string; 
    begin 
           if DBGrid1.SelectedRows.Count>0 then 
           with DBGrid1.DataSource.DataSet do 
           for i:=0 to DBGrid1.SelectedRows.Count-1 do 
           begin 
                  GotoBook(pointer(DBGrid1.SelectedRows.Items[i])); 
                  for j := 0 to FieldCount-1 do 
                  begin 
                          if (j>0) then s:=s+', '; 
                          s:=s+Fields[j].AsString; 
                   end; 
                  Listbox1.Items.Add(s); 
                  s:= ''; 
            end; 
    end;
      

  4.   

    dbgrid细致使用,的确还有一些不方便的地方
    比如 可行选 和 可编辑 冲突,
    当前可见的第一列的宽度超过dbgrid宽度时(此时只有该列可见),无法拉列的右端来调整列宽
      

  5.   

    为什么DBGrid1.SelectedRows.Count总是0 啊?
      

  6.   

    Dataset open后DBGrid应该始终有记录被选中,不需要判断。只要判断一下dataSet.recordcount是不是0就可以了。
      

  7.   

    这个稍稍研究一下CXGRID用该可以弄出来的
    CXGRID初见的话是有点绕
    熟悉就好