Ver Mensaje Individual
  #3  
Antiguo 15-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:

Código Delphi [-]
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
Responder Con Cita