Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Impedir el acceso a un TabSheet (https://www.clubdelphi.com/foros/showthread.php?t=50230)

bosterito 12-11-2007 17:23:43

Impedir el acceso a un TabSheet
 
Hola foro. Tengo un PageControl con varios TabSheet, y quisiera que al clickear en cualquier pestaña no se pudiera accederla. Es decir, al deshabilitar un TabSheet con la propiedad enable, los componentes de éste están deshabilitados, pero mi objetivo es que no se pudiera acceder a un determinado TabSheet.


Saludos.

Caral 12-11-2007 17:30:18

Hola
No entiendo lo de acceder a el?
Se puede hacer que no se vea o que al entrar en el haga algo adicional etc.
Que sera?
Nos explicas un poco mas?.
Saludos

enecumene 12-11-2007 17:37:29

Hola Bosterito, probaste con lo siguiente?:

Código Delphi [-]
PageControl1.TabSheet1.Enabled := False;

PageControl1.TabSheet1.Visible := False;

Concuerdo con Caral en tratar de explicar un poco mas.

Saludos

Caral 12-11-2007 17:43:03

Hola
Para meterme en camisa de once varas con el maestro.
Código Delphi [-]
TabSheet2.Enabled := False;
Lo que hace es inhabilitar los componentes que esten dentro del tab, siempre se tendra acceso a el.
Código Delphi [-]
TabSheet2.Visible := False;
Dependiendo que donde se llame a este procedimiento, no funcionara, seguira como nada.
Código Delphi [-]
TabSheet2.TabVisible:= false;
Este si hara invisible el tab.
Por eso pregunte, que se quiere hacer, por que hay muchas mas opciones.
Te parece Maestro?
Saludos

enecumene 12-11-2007 17:49:04

Excelente Caral, con esa explicacion me has aclarado muchas cosas.:)

Saludos.

bosterito 12-11-2007 21:05:45

Hola. A lo que me refiero es si estoy parado en el TabSheet 1 y quiero acceder al TabSheet 2 o 3 solo lo pueda hacer a través de un botón y no al clickear en un TabSheet

enecumene 12-11-2007 21:16:10

A ver si te entendimos, lo que quieres es por ejemplo, hay dos botones y un solo tabsheet visible y el otro no, entonces, mediante el boton 2 se presente el segundo tabsheet y esconder el primer tabsheet y asi sucesivamente?.

si es asi entonces tenemos lo siguiente:

Código Delphi [-]
//boton 1 abre el primer tabsheet
PageControl1.Tabsheet1.Tabvisible := True;

PageControl1.Tabsheet2.Tabvisible := False;

//boton2 abre el segundo tabsheet
PageControl1.Tabsheet1.Tabvisible := False;

PageControl1.Tabsheet2.Tabvisible := True;

es eso lo que buscas o sigo sin entender?:D

Saludos

Caral 12-11-2007 21:17:11

Hola
La unica opcion que se me ocurre en la tres de mi ultima intervencion.
Saludos

bosterito 13-11-2007 04:45:12

Gracias, me sirvió sus respuestas. Ahora quiesiera preguntarle otra cosa. Tengo un componente SpinEdit, el cual tiene la propiedad EnableEdit en falso para impedir usar la tecla BackSpace. Mi problema es que no anda con la tecla suprimir. Podría en el evento KeyPress usar esta opción, y cuál es caracter que corresponde a la tecla suprimir?. Desde ya muchas gracias.

dec 13-11-2007 04:54:37

Hola,

El identificador que buscas, la constante de la tecla "Supr" o "Del" es "WK_DELETE". Puedes hacer algo así en el evento "OnKeyDown" del "TSpinEdit":

Código Delphi [-]
procedure TForm1.SpinEdit1KeyDown(Sender: TObject;
 var Key: Word; Shift: TShiftState);
begin
  if (Key = VK_DELETE) then
  begin
    // Evit the Supr/Del key
    Key := 0;
  end;
end;

Héctor Randolph 13-11-2007 05:41:37

Aún falta hacer una prueba más con el PageControl. Vamos a suponer que tomamos un PageControl y colocamos algunas pestañas (TabSheet).

Ahora vamos a su evento OnChanging y hacemos algo como esto:

Código Delphi [-]
procedure TForm1.PageControl1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  AllowChange:=False;
end;

El resultado es que no podremos cambiar de pestaña dado que lo hemos indicado textualmente con la variable AllowChange.

También es posible hacerlo de manera condicional según nuestra conveniencia. Por ejemplo:

Colocamos 5 pestañas en un PageControl y en el evento OnChanging escribimos esto

Código Delphi [-]
procedure TForm1.PageControl1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  AllowChange:=(TPageControl(Sender).ActivePageIndex<3);
end;

Le estamos indicando que solamente nos permita hacer clic en las pestañas si estamos dentro de alguna de las primeras cuatro páginas. Luego entonces, si caemos en la última página no tendremos salida (no se puede hacer clic en las pestañas), para salir de allí colocamos un botón para que nos regrese a la primera página al hacer click sobre él.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
   PageControl1.ActivePageIndex:=0;
end;

Me parece entender que esto es lo que planteaba bosterito

Saludos


La franja horaria es GMT +2. Ahora son las 18:36:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi