Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-12-2007
Avatar de Nieto
Nieto Nieto is offline
Miembro
 
Registrado: nov 2007
Posts: 18
Poder: 0
Nieto Va por buen camino
Question Como puedo localizar un DBGrid en un Tabsheet?

Buenos dias,

Foro,

Tengo un problema. Y explico la situacion,

1. Tengo un pagecontrol, que en tiempo de ejecucion creo "n" tabsheet y dbgrids.


Como puedo buscar o localizar un dbgrid en la hojas creadas tabsheets en tiempo de ejecucion.

Nota : Tambien los dbgrid estan creadas en tiempo de ejecucion.

Por donde puedo empezar ? Tienen alguna idea.

Saludos,

Gracias
Responder Con Cita
  #2  
Antiguo 03-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Te sirve algo como esto?

Código Delphi [-]
ShowMessage(TDBGrid(FindComponent('DBGrid1')).Owner.Name);

Donde DBGrid1 es el nombre del DBGrid en cuestión .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 03-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Incluso, podemos activar el TabSheet que contiene ese DBGrid, asi:

Código Delphi [-]
PageControl1.ActivePage := TTabSheet(TDBGrid(FindComponent('DBGrid1')).Parent);
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #4  
Antiguo 03-12-2007
Avatar de Nieto
Nieto Nieto is offline
Miembro
 
Registrado: nov 2007
Posts: 18
Poder: 0
Nieto Va por buen camino
Jhonny,

Los Componentes que utilizo son Twwdbgrid, en este caso utilizaria este codigo:

Codigo:

ShowMessage(TwwDBGrid(FindComponent(Twwdbgrid)).Owner.Name);
Responder Con Cita
  #5  
Antiguo 03-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Si, TwwDBGrid es descendiente de TWinControl, no sera necesario que especifiques la clase el TwwDBGrid, de hecho tambien puedes hacerlo asi, en cualquiera de los dos casos:

Caso 1:
Código Delphi [-]
ShowMessage(TWinControl(FindComponent('DBGrid1')).Parent.Name);

Caso 2:
Código Delphi [-]
PageControl1.ActivePage := TTabSheet(TWinControl(FindComponent('DBGrid1')).Parent);
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 03-12-2007
Avatar de Nieto
Nieto Nieto is offline
Miembro
 
Registrado: nov 2007
Posts: 18
Poder: 0
Nieto Va por buen camino
Jhonny,

Disculpa mi ignorancia,

Haber si te entendi, en el caso del 'DBGrid1' es un campo fijo verdad o es como debo de buscarlo, porque en mi caso yo creo los dbgrids en tiempo de ejecucion, y no se que nombres les puso .

Mi duda es : como se que debo de asignar como busqueda en el FindComponent
Responder Con Cita
  #7  
Antiguo 03-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Ideate un mecanismo que asigne los nombres a los DBGrid a la hora de crearlos en ejecución.

Asi tendras ese identificador que es necesario para ejecutar el codigo que te he mencionado.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #8  
Antiguo 03-12-2007
Avatar de Nieto
Nieto Nieto is offline
Miembro
 
Registrado: nov 2007
Posts: 18
Poder: 0
Nieto Va por buen camino
Ok,

AL momento de crear los Grids hago esto:

Código Delphi [-]
  public
    { Public declarations }
   ListaGrid: TObjectList;


procedure TFRpt.GeneraHojas;
var sg: TwwDbGrid
begin
  if not Assigned(ListaGrid) then
    ListaGrid := TObjectList.Create;

    sg  := TwwDbGrid.Create(self);
    ListaGrid.Add(sg);

end;

Entonces seria poner en codigo delphi algo asi

Código Delphi [-]
PageControlIngresos.ActivePage := TTabSheet(Twincontrol(FindComponent(ListaGrid.Items.[i].Name)).Parent);

Saludos;

Última edición por jhonny fecha: 03-12-2007 a las 19:28:36. Razón: Colocar etiquetas DELPHI
Responder Con Cita
  #9  
Antiguo 03-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Antes de seguir, por favor usa las etiquetas DELPHI que tiene el foro para mostrar codigo fuente...

Por otro lado, esta bien que captures asi el TabSheet en cuestión, pero deberias asignar un nombre al DBGrid al momento de crearlo, por ejemplo asi:

Código Delphi [-]
  public
    { Public declarations }
   ListaGrid: TObjectList;


procedure TFRpt.GeneraHojas;
var sg: TwwDbGrid
begin
  if not Assigned(ListaGrid) then
    ListaGrid := TObjectList.Create;

    sg  := TwwDbGrid.Create(self);
    sg.Name := 'sg'+IntToStr(ListaGrid.Count);
    ListaGrid.Add(sg);

end;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #10  
Antiguo 03-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Lo que deberías hacer es derivar de TObjectList y crearte tu propia lista, simplificará mucho las cosas.

Código Delphi [-]
TRows = class(TObjectList)
 private
   { private declarations }
 protected
   { protected declarations }
    function GetItem(Index: Integer): TwwGrid;
    procedure SetItem(Index: Integer; ARow: TwwGrid);

 public
   { public declarations }
  property Items[index:integer] : TwwGrid read GetItem write SetItem;
  function Busca(Nombre:string):integer;
 published
   { published declarations }
 end;
implementation

function TRows.GetItem(Index: Integer): ;
begin
  Result := TwwGrid(inherited GetItem(index));
end;

procedure TRows.SetItem(Index: Integer; ARow: TwwGrid);
begin
  inherited SetItem(index, ARow);

end;

function TRows.Busca(Nombre:string):integer;
begin
   for Result := 0 to Count -1 do
     if items[i].Name = Nombre then
        Exit;
   Result:= -1;
end;
Ahora ya tienes redefinido el TobjectList para guardar Grids de tu propio tipo.
Si quieres buscar uno:
Código Delphi [-]
var idx:integer;
begin
  idx := ListaGrids.Busca('dbgrid1');
  if idx <> -1 then
    PageControl1.ActivePage := TTabsheet(ListaGrids[i].Parent);
end;

... Hay formas mejores, pero tendrías que modificar mucho, no sé si será viable. Si estas interesado, pregunta.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 03-12-2007
Avatar de Nieto
Nieto Nieto is offline
Miembro
 
Registrado: nov 2007
Posts: 18
Poder: 0
Nieto Va por buen camino
Disculpa, me falto poner esa parte, si lo hago al momento de crear la tabla.

Pero, ya encontre la manera de sacar el componente Twwdbgrid con este codigo,

Código Delphi

for a := 0 to ComponentCount - 1 do begin
Componente := '';
if Components[a] is TwwDBGrid then
Componente := (Components[a] as TwwDBGrid).Name;
if Componente <> '' then Break;

end;


Solo lo que me falta convertir el nombre del componente a Twwdbgrid,

Para poder exportar a Excel

Con esta funcion :

Código Delphi

dGrid := TwwDBGrid(Componente); No estoy seguro si asi es como se aplica para convertir a Twwdbgrid.
ExportaAExcel3(DGrid, Nombre, x, j);


Saludos,
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TabSheet como los de windos como puedo lograrlos? grafipack Varios 6 09-03-2007 16:14:59
Como puedo ver el contenido de IBTable en un DBGrid Delphius Firebird e Interbase 9 08-09-2006 20:53:07
como puedo imprimir un DBGrid Bitbanner Tablas planas 2 07-02-2005 13:08:05
Donde puedo localizar las Trivial para D7? jhges Varios 13 28-03-2004 01:44:02
Localizar dentro de 1 dbgrid cisterpe OOP 6 12-09-2003 11:05:57


La franja horaria es GMT +2. Ahora son las 15:56:37.


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
Copyright 1996-2007 Club Delphi