22.07.2009, 21:50
|
|
Активный
|
|
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
|
|
попробуй так select.rar
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, ExtCtrls;
type
MyType1 = record
zap1: integer;
zap2: string;
zap3: integer;
end;
type
MyType2 = record
zap1: integer;
zap2: string;
zap3: integer;
end;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DataSource1: TDataSource;
DataSource2: TDataSource;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ADOTable2: TADOTable;
ADOTable1key: TAutoIncField;
ADOTable1familiy: TWideStringField;
ADOTable1imu: TWideStringField;
ADOTable1vozrast: TWideStringField;
ADOTable2keyy: TAutoIncField;
ADOTable2familiy: TWideStringField;
ADOTable2imu: TWideStringField;
ADOTable2vozrast: TWideStringField;
procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
procedure DBGrid2DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
aa: array of MyType1;
bb: array of MyType2;
implementation
{$R *.dfm}
function findAA(const S:integer):integer;
var
i:integer;
begin
Result:=0;
for i:=0 to Length(bb)-1 do
begin
if aa[S].zap2 = bb[i].zap2 then
begin
Result:= aa[S].zap1;
exit;
end;
end;
end;
function findBB(const S:integer):integer;
var
i:integer;
begin
Result:=0;
for i:=0 to Length(aa)-1 do
begin
if bb[S].zap2 = aa[i].zap2 then
begin
Result:= bb[S].zap1;
exit;
end;
end;
end;
//--------------------------------------------------------------------------
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
i:integer;
begin
if Length(aa)>0 then
begin
i:=DBGrid1.DataSource.DataSet.RecNo;
if DBGrid1.DataSource.DataSet.RecNo = aa[i-1].zap3 then
begin
dbgrid1.Canvas.Brush.Color := cllime;
DBGrid1.Canvas.Font.Color := clRed;
dbGrid1.DefaultDrawDataCell(Rect,Field,State);
end;
end;
end;
procedure TForm1.DBGrid2DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
i:integer;
begin
if Length(bb)>0 then
begin
i:=DBGrid2.DataSource.DataSet.RecNo;
if DBGrid2.DataSource.DataSet.RecNo = bb[i-1].zap3 then
begin
dbgrid2.Canvas.Brush.Color := cllime;
DBGrid2.Canvas.Font.Color := clRed;
dbGrid2.DefaultDrawDataCell(Rect,Field,State);
end;
end;
end;
//-----------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
i1, i2, p1, p2 : integer;
begin
DBGrid1.DataSource.DataSet.First;
DBGrid2.DataSource.DataSet.First;
p1 := DBGrid1.DataSource.DataSet.RecordCount-1 ;
p2 := DBGrid2.DataSource.DataSet.RecordCount-1 ;
for i1:=0 to p1 do
begin
SetLength(aa, Length(aa) + 1);
aa[i1].zap1:= DBGrid1.DataSource.DataSet.RecNo;
aa[i1].zap2:= DBGrid1.DataSource.DataSet.FieldValues['vozrast'];
DBGrid1.DataSource.DataSet.Next;
end;
for i2:=0 to p2 do
begin
SetLength(bb, Length(bb) + 1);
bb[i2].zap1:= DBGrid2.DataSource.DataSet.RecNo;
bb[i2].zap2:= DBGrid2.DataSource.DataSet.FieldValues['vozrast'];
DBGrid2.DataSource.DataSet.Next;
end;
for i1:=0 to Length(aa)-1 do
begin
aa[i1].zap3 := findAA(i1);
end;
for i2:=0 to Length(bb)-1 do
begin
bb[i2].zap3 := findBB(i2);
end;
DBGrid1.DataSource.DataSet.First;
DBGrid2.DataSource.DataSet.First;
end;
end.
вариант не идеальный
|