PDA

Ver la Versión Completa : Impedir el acceso a un TabSheet


bosterito
12-11-2007, 17:23:43
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?:

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.

TabSheet2.Enabled := False;
Lo que hace es inhabilitar los componentes que esten dentro del tab, siempre se tendra acceso a el.

TabSheet2.Visible := False;
Dependiendo que donde se llame a este procedimiento, no funcionara, seguira como nada.

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:

//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":


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:


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


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.


procedure TForm1.Button1Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=0;
end;


Me parece entender que esto es lo que planteaba bosterito

Saludos