Ver Mensaje Individual
  #2  
Antiguo 07-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mantraxer21.

Un ejemplo muy simplificado como para darte una idea:

DataModule:
Código Delphi [-]
...
implementation
uses Forms;

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
  { Se supone a IBDatabase1 configurada y conectada }
  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,   // DataModule
     Unit3;   // Form material

procedure TForm1.FormCreate(Sender: TObject);
begin
  DataModule1:= TDataModule1.Create(nil);
end;

// Agregar material
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; // Cerrar el form (Opcional)
// Aquí las acciones que desees con los campos del registro seleccionado de la tabla "MATERIAL".
// En el ejemplo solamente muestro el campo "MATERIAL" en un mensaje.
  with TDBGrid(Source).DataSource.DataSet do
    ShowMessage(FieldByName('MATERIAL').AsString);
end;
...

Form2:
Código Delphi [-]
...
implementation   

uses Unit2; // DataModule

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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita