Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Saber nombre de DBGrid seleccionado (Activo) (https://www.clubdelphi.com/foros/showthread.php?t=90081)

mramos65 03-04-2016 04:02:42

Saber nombre de DBGrid seleccionado (Activo)
 
Hola a todos:

Trabajo con Delphi7 y Tablas DBF, tengo en una form 5 Dbgrids,
Tengo un procedimiento para exportar a excell y quiero que al seleccionar o asignarle el foco a uno de los DBGrids, en un popmenu (que tiene cada DBGrid), pueda elegir la opcion exportar a excell y lo haga con el mismo procedimiento sin tener que repetirlo para cada DBGrid.

Por su gran apoyo de siempre.

GRACIAS^\||/

jhonny 03-04-2016 05:51:29

No tengo Delphi a la mano para probar, pero mira si te funciona con Form1.ActiveControl, o sea, si usas en tu procedimiento
Código Delphi [-]
If Form1.ActiveControl is TDBGrid then
   //Haces lo que quieras con 
   TDBGrid(Form1.ActiveControl)

Ya tienes el Grid activo, suponiendo que Form1 fuera tu TForm.

Neftali [Germán.Estévez] 04-04-2016 16:30:43

La otra opción es pasar directamente el DBGrid como parámetro o en el caso de un evento, utilizar el parámetro Sender.

mramos65 05-04-2016 11:38:29

Nombre de DBGrid (Activo) para exportar datos a Excell
 
Realice una funcion con los parametros TDbgrid y Tquery
Declarando en
Type
procedure ExpExcell(grid: tdbgrid; base: tquery);
Luego en
Implementation

Código Delphi [-]
procedure TForm1.ExpExcell(grid: tdbgrid; base: tquery); //Donde  Grid sera el nombre del Dbgrid seleccionado y base El query origen de los datos
 var
  excel:Variant;
  fila, columna:Integer;
begin
  with base, base.SQL do
    begin
      Close;
      Open;
      if IsEmpty then
        begin
          MessageDlg('No existen datos que reportar!', mtWarning,[mbOk], 0);
          Exit;
        end;
      TRY
        excel := CreateOleObject('Excel.Application');
      EXCEPT
        ShowMessage('Excel no se pudo iniciar.');
        exit;
      END;
      excel.Visible := true;
      First;
      fila          := 1;
      excel.Workbooks.Add;
      //Poner los títulos
      for columna := 0 to Grid.Columns.Count-1 do
        excel.Cells[fila,columna + 1].Value := Grid.Columns[columna].Title.Caption;
      fila:=2;
      //Desengachar controles para agilizar
      DisableControls;
      TRY
        while not(eof) do
          begin
            for columna := 0 to Grid.Columns.Count-1 do
              excel.Cells[fila,columna + 1].Value := FieldByName(Grid.Columns[columna].FieldName).asString;
            Next;
            inc(fila);
          end;
        //Ajustar columnas
        for columna:=1 to Grid.Columns.Count-1 do
        begin
        Excel.Columns[Columna].EntireColumn.AutoFit;
        end;

      EXCEPT
        ShowMessage('Atención, se produjo un error en la transmisión.');
      END;
      EnableControls;
    end;
end;
Debo mencionar que este procedimiento es autoria de otro usuario, solo modifique los parametros para realizar un procedimiento adaptable a mi necesidad.
y por ultimo llamando el procedimiento asi:
Código Delphi [-]
procedure Tform1.ExportaraExcell1Click(Sender: TObject);
begin
ExpExcell(DbGrid,TQuery);
end;
Esperando sea de utilidad para otros usuarios, GRACIAS


La franja horaria es GMT +2. Ahora son las 17:53:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi