Ver Mensaje Individual
  #1  
Antiguo 03-12-2015
scigliano scigliano is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 10
Reputación: 0
scigliano Va por buen camino
Manipular PageControl en Form heredado

Hola, un saludo a todos...

Tengo un formulario base (UBaseForm), donde guardo los procedimientos y funciones que más utilizo en otros form. Por una consulta que realicé en días pasados aquí en el club, decidí trabajar con "Herencia", he estado leyendo y documentándome al respecto, ya que soy novato en ese tema.

El punto es que necesito manipular las pestañas de un PageControl en un formulario heredado desde el formulario base, pero hasta el momento no he tenido éxito.

Me explico: Tengo un procedimiento en el formulario base al que le paso como parámetros el nombre de un campo y la pestaña donde se encuentra, para que lo muestre y le pase el foco.

A continuación les muestro lo que llevo hecho, para que me orienten.

En la primera prueba, definí el PageControl en la sección Interface/Var, no da error, pero al ejecutar el procedimiento no muestra la pestaña que requiero.

Código Delphi [-]
unit UBaseForm;

interface

uses
  vcl.ComCtrls, ....

type
  TBaseForm = class(TForm)
  .
  .

var
   BaseForm: TBaseForm;
   //******************************************
   //*** OPCION 1: DECLARACION DEL PAGECONTROL
   //******************************************
   PageControl1: TPageControl;

implementation

procedure TBaseForm.MostrarEdit(NameCampo:TEdit ; NameSheet:TTabSheet);
begin
   //*** Activa la pestaña
   PageControl1.ActivePage := NameSheet;
   //*** Pasa el foco al campo
   NameCampo.SetFocus;
   Abort;
end;

En la segunda prueba, definí el PageControl en la sección Var dentro del procedimiento, tampoco da error, pero al ejecutar el procedimiento no muestra la pestaña que requiero.

Código Delphi [-]
unit UBaseForm;

interface

uses
  vcl.ComCtrls, ....

type
  TBaseForm = class(TForm)
  .
  .

var
   BaseForm: TBaseForm;

implementation

procedure TBaseForm.MostrarEdit(NameCampo:TEdit ; NameSheet:TTabSheet);
var
   //******************************************
   //*** OPCION 2: DECLARACION DEL PAGECONTROL
   //******************************************
   PageControl1: TPageControl;
begin
   //*** Activa la pestaña
   PageControl1.ActivePage := NameSheet;
   //*** Pasa el foco al campo
   NameCampo.SetFocus;
   Abort;
end;

Para llamar al procedimiento desde el form heredado, utilizo la siguiente instrucción:
Código Delphi [-]
MostrarEdit(TxtCodigo,TabSheet1);

Al no poder ejecutarse el SetFocus en la pestaña requerida, obviamente aparece el mensaje:
"Cannot focus a disabled or invisible windows"

Qué me falta definir o declarar ?

Gracias anticipadas por sus comentarios...
Responder Con Cita