Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Comportamiento extraño del TPageControl (https://www.clubdelphi.com/foros/showthread.php?t=64468)

Chris 02-04-2009 20:13:03

Comportamiento extraño del TPageControl
 
Hola programadores Delphianos. Vengo con una duda que me desconcierta. Estoy desarrollando en D2009 un protótipo de GUI y el siguiente problema es el siguiente:

Tengo dos tablas, las clásica: Una maestro y otra de detalles. En la primera página o hoja tengo controles de edición (TDBEdit's) solo para los datos de la tabla maestra, y en la segunda página controles exclusivos para la tabla de detalles. En la segunda página no aparece ningún control que esté relacionado a la tabla maestra. Hasta ahí todo normal.

Fuera del PageControl, tengo unos botones que están relacionados a algunas TDBActions que están relacionadas a la tabla maestra. Uno de los botones para la acción de Post o Cancel, otro para Insert y así sucesivamente. Lo que sucede es que cuando la primera página del PageControl está activada, los controles se activan normalmente. Cuando activo la segunda página, la de la tabla de detalles, todas las TDBActions que están relacionadas a la tabla maestra se deshabilitan automáticamente, volviendose a habilitar cuando regreso a la primera página.

Este es un corportamiento muy peculiar y no entiendo que es lo que está sucediendo.

PD.: Entiendo que algunas acciones, como Post o Cancel se deshabilitan normalmente cuando la tabla relacionada no está en modo de edición. Sin embargo, aún estando en modo de edición, las acciones se deshabilidan al pasarme a la segunda página o hoja.

Saludos. Espero que me puedan aclarar sobre esto, si esto es normal o es alguna configuración especial que tengo que modificar. De antemano, gracias.

roman 02-04-2009 20:28:10

¿Estás usando Standard Actions? Porque estas acciones hacen "magia" para determinar el destino o target de la acción y al parecer basan esta "magia" en los controles de edición y no en el datasource o dataset presentes (quita todos los controles DBEdit y verás que la acción siempre está inhabilitada independientemente de la página del PageControl), de manera que -supongo- al no haber controles de edición visibles, determinan que la acción debe inhabilitarse.

Lo que puedes hacer es utilizar el evento OnUpdate de la acción para que determines tú mismo cuándo inhabilitar/habilitar la acción.

// Saludos

Chris 02-04-2009 20:45:00

Gracias Román por la info. Así es, estoy utilizando los Standard Actions. Provaré a ver que sucede. Me supongo que en el evento OnUpdate debo ingresar el Esta_Action.Enable := True; ¿Es correcta mi suposición?

roman 02-04-2009 20:55:32

Así es, aunque yo pondría algo que me permita discernir si se habilita o inhabilita la acción. Por ejemplo, para la acción de POST yo pondría algo como

Código Delphi [-]
LaAcción.Enabled := ElDataSet.State in dsEditModes;

// Saludos

Chris 02-04-2009 21:16:09

Gracia román. :)


La franja horaria es GMT +2. Ahora son las 21:51:58.

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