第一个问题:
  你应该用TABLE控件,QUERY控件只有查询功能而没有数据感知功能,如一定要用QUERY
则可在QUERY1的AfterScroll事件中通知QUERY2作相当的记录移动.
  因为中DBGRID中的指针移动时会引发QUERY1的AfterScroll事件,然后在这个事件中
根据新指针的记录内容通知QUEYR2作相应的记录移动却可实现你的要求.第二个问题:
  我简单实现一下,供你参考:
     我在FORM上放一个LABEL1
  定义FORM的ONMouseMove事件如下:procedure TFrmMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   With Label1 do
   begin
     if (X>Left) and (X<Left+Width) and (y>Top) and (y<top+Height) then
        Color:=clRed
     else
        color:=clBlack;
   end;
end;  
  

解决方案 »

  1.   

    第一个问题:
    解决的方法:从另一个数据集获得参数。
    你可以用TQuery控件,Query1为主,Query2为从,Query1与Query2有一致的字段,其中Query2的属性DataSource指向Query1,并且Query2的SQL属性中提供参数,该参数的值就是Query1的对应字段的值。如果在运行期间没有给参数赋值,它就在query1中查找对应的字段,然后用这个字段的值作为参数的值。
    如:Query1.Sql:='SELECT CustNo,Company,Add1 FROM Custtable
        Query2.Sql:='SELECT CustNo,OrderNo,SaleDate From Ordertable Where 
                     CustNo = :custno'  (:cusno是个参数)