PDA

Ver la Versión Completa : Cambiar de pagina de un TPageControl


mrmanuel
27-04-2004, 17:25:24
Hola a todos.

Tengo una aplicacion con un PageControl que tiene 4 páginas
en tiempo de ejcución (Cuando creo por primera vez la aplicación) la situo en la primera página, pero no me visualiza su contenido, sino que me muestra el contenido de la ventana activa que se quedo en tiempo de diseño.
Luego me vuevo por las distintas páginas y funciona perfectamente, solo sucede esto al principio de todo.

¿como podría visualizar el contenido de esta página?

uso: PageControl.ActivePageIndex:= 0;
para situarme en la primera página, la pestaña correspondiente se queda activa, pero el contenido de concuerda.

Tambien necesitario ocultar alguna de estas paginas dependiendo de unos parametros dados, es decir, mostrar unas o ocultar otras en tiempo de ejecución.


Gracias.

delphi.com.ar
27-04-2004, 17:27:48
Te cuento que hago eso habitualmente y nunca tuve un problema... ¿Estas seguro que los controles que ves estan puestos en ese TabSheet? (Que el Parent no sea el form)

mrmanuel
27-04-2004, 17:33:31
si los campos que quiero mostrar estan en el TabSheet, de hecho, los tengo renombrados a cada uno de ellos con el nombre caracteristico de los datos que visualizan. y es eso justamente lo que no me muestra al crear la aplicación. despues boy cambiando de pestaña y me muestra todos perfectamente.

delphi.com.ar
27-04-2004, 17:36:40
Prueba luego de cambiar el TabIndex hacer un Refresh del PageControl... ¿No se estará produciendo algun error que capturas?

mrmanuel
27-04-2004, 17:43:50
pregunta tonta:

como cambio el TabIndex? y el Refresh?

y no capturo ningun error.

gracias

delphi.com.ar
27-04-2004, 17:53:50
Mil disculpas, la idea no es el TabIndex, sinó el ActivePageIndex, y luego ejecutas el método Refresh.

Saludos!

mrmanuel
27-04-2004, 17:57:23
nada, no funciona

delphi.com.ar
27-04-2004, 18:00:49
Porque no posteas el código+el DFM??...
Sin toda la lógica extra

mrmanuel
28-04-2004, 15:24:30
*DFM

object Form1: TForm1
Left = 146
Top = 111
Width = 803
Height = 498
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnActivate = FormActivate
PixelsPerInch = 96
TextHeight = 13
object PageControl: TPageControl
Left = 5
Top = 36
Width = 779
Height = 233
ActivePage = Pag_Validar_Clave
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Arial'
Font.Style = []
ParentFont = False
TabOrder = 0
object Pag_Direccion: TTabSheet
Caption = 'Dirección'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
end
object Pag_Permiso: TTabSheet
Caption = 'Permiso'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'MS Sans Serif'
Font.Style = []
ImageIndex = 2
ParentFont = False
end
object Contrato: TTabSheet
Caption = 'Contrato'
ImageIndex = 2
end
object Pag_Validar_Clave: TTabSheet
Caption = 'Clave Test'
ImageIndex = 3
end
end
end




*.pas


unit borrar;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;

type
TForm1 = class(TForm)
PageControl: TPageControl;
Pag_Direccion: TTabSheet;
Pag_Permiso: TTabSheet;
Contrato: TTabSheet;
Pag_Validar_Clave: TTabSheet;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormActivate(Sender: TObject);
begin
//Mostramos la paguina que nos interesa del PageControl
PageControl.ActivePageIndex:= 0;


//PageControl.Refresh;
//PageControl.ActivePage. := 0;// .Name:= 'Pag_Direccion';
//Pages[0].Visible:= True; // .Show; //.Pag_Direccion;

end;

end.

delphi.com.ar
28-04-2004, 16:06:34
Primero quiero recomendarte que uses la etiqueta [delphi] o en su defecto [code] para publicar código en el foro.
Ahora, te comento que el ejemplo me funciona correctamente, mi única duda es ¿Qué versión de los CommonControls tienes instalada?...

mrmanuel
28-04-2004, 16:27:11
Siento lo del código pero no se como se usa la etiqueta Code, la he probado y no saca nada nuevo.

y respecto a la version del CommonControls ¿donde puedo sacar ese dato??

ha y claro que funciona, he borrado los datos que tendria que mostrar y por lo tanto no se puede comprobar. los reenvio

delphi.com.ar
28-04-2004, 16:35:32
Puedes verlo en la versión de la dll comctl32.dll... ¿Qué sistema operativo usas?

jachguate
28-04-2004, 19:55:09
Siento lo del código pero no se como se usa la etiqueta Code, la he probado y no saca nada nuevo

Podes aprender a usar la etiqueta [ code ] siguiendo el vínculo de mi firma.

de la misma forma se usan las nuevas etiquetas [ delphi ] y [ sql ]


Begin
ShowMessage('Esto se ve mucho mejor');
End;


Hasta luego.

;)

mrmanuel
29-04-2004, 13:31:45
hola y gracias a todos

creo que ya he localizado el problema, en el evento Show del TabSheet, paso el foco a un determinado campo, varia segun el TabSheet.

¿puede ser por eso?