Hola mantraxer21.
Un ejemplo muy simplificado como para darte una idea:
DataModule:
Código Delphi
[-]
...
implementation
uses Forms;
procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
IBTransaction1.DefaultDatabase:= IBDatabase1;
with IBDataSetMaster do
begin
Database:= IBDatabase1;
Transaction:= IBTransaction1;
SelectSQL.Text:= 'SELECT ID, FECHASOLICITUD, IDSOLICITANTE FROM MAESTRO';
Open;
end;
with IBDataSetDetail do
begin
Database:= IBDatabase1;
Transaction:= IBTransaction1;
DataSource:= dsMaster;
SelectSQL.Clear;
SelectSQL.Add('SELECT ID,IDMAESTRO,IDMATERIAL, FECHADEVOLUCION');
SelectSQL.Add('FROM DETALLE WHERE IDMAESTRO = :ID');
Open;
end;
with IBQueryMaterial do
begin
Database:= IBDatabase1;
Transaction:= IBTransaction1;
SQL.Text:= 'SELECT * FROM MATERIAL';
Open;
end;
dsMaster.DataSet:= IBDataSetMaster;
dsDetail.DataSet:= IBDataSetDetail;
dsMaterial.DataSet:= IBQueryMaterial;
end;
procedure TDataModule1.DataModuleDestroy(Sender: TObject);
begin
IBDataSetMaster.Close;
IBDataSetDetail.Close;
IBQueryMaterial.Close;
IBTransaction1.Commit;
end;
Form1:
Código Delphi
[-]
...
implementation
uses Unit2, Unit3;
procedure TForm1.FormCreate(Sender: TObject);
begin
DataModule1:= TDataModule1.Create(nil);
end;
procedure TForm1.btnAgregarClick(Sender: TObject);
begin
Form2:= TForm2.Create(Self);
Form2.Show;
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:= (Source is TDBGrid) and (TDBGrid(Source).Name = 'DBGridMaterial');
end;
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
Form2.Close; with TDBGrid(Source).DataSource.DataSet do
ShowMessage(FieldByName('MATERIAL').AsString);
end;
...
Form2:
Código Delphi
[-]
...
implementation
uses Unit2;
procedure TForm2.Edit1Change(Sender: TObject);
begin
with DataModule1.IBQueryMaterial do
begin
Close;
SQL.Text:= 'SELECT * FROM MATERIAL WHERE MATERIAL LIKE :PARAM';
ParamByName('PARAM').AsString := '%'+Edit1.Text+'%';
Open;
end;
end;
procedure TForm2.DBGridMaterialDblClick(Sender: TObject);
begin
DBGridMaterial.BeginDrag(True);
end;
...
A fin de evitar largas explicaciones, muchas propiedades publicadas las asigné en tiempo de ejecución, pero podes hacerlo en tiempo de diseño desde el
Object Inspector.
Saludos