Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cómo saber el tipo de componente asociado a una DBGrid? (https://www.clubdelphi.com/foros/showthread.php?t=68383)

gandalf_uy 10-06-2010 18:44:39

Cómo saber el tipo de componente asociado a una DBGrid?
 
Buenas, estoy necesitando saber lo siguiente: Tengo una DBGrid, que esta apunta a un DataSource, que a su vez puede estar siendo referenciado por una tabla o por un query.

Yo lo que necesito saber es que tipo de componente es el que está mostrando el grid, si el query o la tabla.

DBGrid1.DataSource.DataSet.Name me devuelve el nombre del componente pero no de que tipo es.

A su vez, si hago DBGrid1.DataSource.DataSet.ClassName no me muestra nada, y en tiempo de ejecución, al inspeccionar el DataSet, me dice que en la propiedad NestedDataSetClass del DataSet me indica el tipo de componente que necesito, pero si quiero acceder a ella mediante código me da el error de "Cannot access protected symbol DataSet.NestedDataSetClass"

Cómo puedo acceder a ese dato de manera fácil y sencilla?

Gracias

maeyanes 10-06-2010 18:48:33

Vaya... hubo un error al envíar el mensaje...

Moderadores, por favor si pueden borrar este mensaje...


Gracias... :)

maeyanes 10-06-2010 18:49:52

Hola...

Deberías poder hacer algo como esto:

Código Delphi [-]
if not Assigned(DBGrid1.DataSource) and not Assigned(DBGrid1.DataSource.DataSet) then
  ShowMessage('No tiene asignado un DataSet')
else
  if DBGrid1.DataSource.DataSet.ClassType is TTable then
    ShowMessage('El DataSet es un TTable')
  else
    if DBGrid1.DataSource.DataSet.ClassType is TQuery then
      ShowMessage('El DataSet es un TQuery')


Saludos...

gandalf_uy 10-06-2010 19:14:06

Muchas gracias, me funcionó, ahora no entiendo porque cuando le corría el debbuging no me mostraba nada en esa propiedad, por eso la descarté...

Saludos y gracias nuevamente... :p

maeyanes 10-06-2010 19:27:18

Hola...

Es por que esa propiedad es en realidad es un método de clase (class function TObject.ClassName: string) y para poder obtener su valor en tiempo de debuging necesitas especificar la opción Allow side effects and function calls en las propiedades de la variable/método/propiedad que estás viendo (Watch properties)...


Saludos...


La franja horaria es GMT +2. Ahora son las 15:11:03.

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