请问大家两个问题
   1。怎样将DBGrid中满足某个条件的记录的背景变成指定的颜色;
   2。怎样获得一个窗体中的某个组件的类型,如:现已经有edit和其他组件,怎样才能通过编写代码;来找到edit,然后来获取其相关属性值,即,在众多的组件中找到特定的组件及其相关属性值。
  
           谢谢~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!!!!!!!

解决方案 »

  1.   

    问题1
    procedure Tfrm_main.onDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
          if (query1.fieldbyname('字段名')='ff') then
          dbgrid.Canvas.Font.Color := clWhite;
          end;
          dbgrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end; 问题2,循环遍历组件.
    for i:=0 to form1.ComponentCount-1 do
      begin
      if form1.Components[i] is Tedit tHEN
    SHOWMESSAGE(' IS EDIT');   end;
      

  2.   

    procedure TFORM1.onDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    Begin
          IF (Query1.FieldByname('字段名').AsString='值') then
              Dbgrid.Canvas.Font.Color := clWhite;
          Dbgrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end; procedure TForm1.Button1Click(Sender: TObject);
    var
       Name:String;
    begin
       For i:=0 to Form1.ComponentCount-1 do
       Begin
          if Form1.Components[i] is Tedit Then
          Begin
            Name:=TEdit(Form1.Components[i]).Name;
            Showmessage(Name+'是Edit组件');
          End;
       End;
    End;
      

  3.   

    上例中
    IF (Query1.FieldByname('字段名').AsString='值') then
        Dbgrid.Canvas.Font.Color := clWhite;
    改成IF (Query1.FieldByname('字段名').AsString='值') then
    Begin
        Dbgrid.Canvas.Font.Color := clRed;
        DBGrid1.Canvas.Brush.Color := clYellow;
    End;
      

  4.   

    不好意思,第二个程序种忘了声明i的属性,应该是
    procedure TForm1.Button1Click(Sender: TObject);
    var
        i:Integer;
        Name:String;
    begin
    ...