PDA

Ver la Versión Completa : Ayuda con PageControl


elbilla
15-07-2004, 01:59:56
Tengo un pequeño programa en el q hago lo siguiente:

1- En el Page control paso de una pestaña a otra con botones dentro de los TabSheet (con TabSheet.visible:=true) , pero como puedo hacer para q solo se pueda pasar con mis botones y no con las pestañas(TabSheet del PageControl). He probado a poner el Enabled a False, pero entonces desactiva todo el PageControl y no funcionan los botones. Otra cosa es q cada vez q lo abro se inicia en un TabSheet distinto y no el primero.

2- Este primer programita es un juego, pero hay unos cuantos más. ¿Cómo hago para q me salgan todos en la misma ventana? Me explico: El primero q he hecho tiene un TPanel (donde estan todos los botones para empezar los juegos) y pulsando el boton se oculta el Tpanel y se abre el PageControl.
Mi pregunta es como es la forma más comoda de hacerlo. Yo he pensado hacerlo con PageControl, 8 juegos=8 Pagecontrol, y mostrandolos y ocultandolos segun el juego. Es correcto así o me recomendais otra forma.
Se puede hacer con las Frames ??? Lo q no sé muy bien es como funcionan. Saldrian los Frames dentro del Form principal ??
Bueno mañana lo probaré.

Un saludo.

delphi.com.ar
15-07-2004, 02:21:18
Te recomiendo probar el TNotebook, es algo similar a un TPageControl pero sin los tabs.

Saludos!

roman
15-07-2004, 02:35:20
Lo primero es muy fácil. El evento OnChanging del PageControl se genera cuando se intenta cambiar de ficha. Si asignas false al parámetro AllowChange de este evento entonces no se realiza el cambio de página.

Lo único que tienes que hacer entonces fijar una variable booleana que pondrías a true sólo si haces el cambio mediante el botón:


procedure TForm1.PageControl1Changing(Sender: TObject; var AllowChange: Boolean);
begin
AllowChange := CanChange;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CanChange := true;
PageControl1.ActivePageIndex := PageControl1.ActivePageIndex + 1;
CanChange := false;
end;


En cuanto a lo segundo, no es cierto. El PageControl no inicia en el TabSheet que se le ocurre. Inicia en el que hayas dejado activo durante el diseño, que suele ser distinto del primero porque uno está manipulando el control y se olvida de activar la primera ficha. Para evitar esto basta que en el constructor del formulario pongas PageControl.ActivePageIndex := 0;

En lo que se refiere a la segunda pregunta, pues sí, la verdad yo no usaría un PageControl sino Frames. Te ingenias un menú, ya sea un simple TMainMenu, o una serie de opciones en un panel y según la que seleccione el usuario visualizas el fram correspondiente.

// Saludos

elbilla
19-07-2004, 19:57:37
Muchas gracias Roman.....Ya tengo resuelto lo del PageControl y los TabSheet..... Voy a probar ahora lo de los Frames q aun no lo he mirado.
Ya preguntaré despues de probar.....
Un saludo.