Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   inhabilitar pestaña TtabbedNotebook (https://www.clubdelphi.com/foros/showthread.php?t=36127)

Ade 03-10-2006 01:48:22

inhabilitar pestaña TtabbedNotebook
 
es posible inhabilitar una pestaña o ponerla no visible.
como hago para recorrerlas??
se recorrer un groupbox pero con las pestañas no lo consigo.

Soy novata y lo use en mi aplicacion y ya tengo todas las pestañas con funcionalidad y quisiera al iniciar la aplicaion deshabilitar alguna, he leido q es mejor el pagecontrol pero ya lo tengo todo hecho si pudo evitar el modificarlo todo mejor.


Saludos

dec 03-10-2006 01:52:57

Hola,

Piensa que el componente que mencionas está en la pestaña "Win 3.1" de la paleta de componentes de Delphi. Desde hace tiempo se viene utilizando el componente "TPageControl", o "TTabControl", de la pestaña "Win32" de la paleta de componentes. Lo digo porque alguna vez algún compañero no sabía esto y quedó encantado con "TPageControl" y ya no quiso saber nada del componente que mencionas.

Tal vez quisieras tú echar un vistazo a estos componentes que menciono.

Pueden deshabilitarse pestañas, pueden ocultarse, pueden "recorrerse" (?), etc., etc.

Edito: No leí completamente tu mensaje y eso me ha equivocado, mea culpa. Necesitas, parece ser, utilizar el componente que mencionas... ¿De veras te sería tan costoso cambiar?

Echando un vistazo por encima al componente de marras no lo veo nada práctico, en comparación, claro está, con su "hermano mayor".

No sé a qué te refieres con "recorrer" las pestañas, pero, piensa que están en una propiedad de tipo "TStrings" y que esta propiedad cuenta con elementos "indizados", esto es, sus elementos tienen un índice determinado. Por otro lado, puedes hacer lo siguiente para que una pestaña en concreto se muestre:

Código Delphi [-]
TabbedNotebook1.PageIndex := 1;

Mostraríamos la segunda pestaña: puesto que el índice comienza en cero. Por otro lado, no ví forma de deshabilitar pestañas o hacerlas invisibles, sí de hacer todo el componente invisible o deshabilitarlo por completo. Es posible que pudiera hacerse algo a base de mensajes de Windows o algo así... quiero decir, a más bajo nivel que usando la propia VCL, los propios métodos y propiedades del componente.

Yo me plantearía seriamente el cambio del componente... puede que te costara algo de trabajo, pero, también que te mereciera la pena.

Ade 03-10-2006 02:00:26

sino lo tuviera ya todo no me importaria usar el otro, pues lei hilos d eotra gente y se dicen maravillas!!
no me rindo tan pronto :D pero si le echo muchas horas y no doy con ello...
tocará modificar :( supongo q copy paste valdria para la modificacion sustituyendo el nombre de ttabbednotebook por el nombre del pagecontrol ;)
próximamente informaré

gracias por ayudar

Saludos

Ade 03-10-2006 02:37:05

por ahora consegui obtener el nombre de las pestañas, es decir q ya lo recorro el ttabbednotebox, por si le interesara a alguien:

Código Delphi [-]
for I:=0 to Pestanas.ControlCount-1 do
         begin
         if Pestanas.Controls[i] is TTabPage then
         begin
         nombre:=Pestanas.pages.Strings[i];
         showmessage('nombre: '+nombre);
         end;

dec 03-10-2006 02:40:13

Hola,

Acaso no te parezca mal esta otra forma de hacer lo que dices:

Código Delphi [-]
var
  i: integer;
begin
  for i := 0 to TabbedNotebook1.Pages.Count-1 do
    ShowMessage(TabbedNotebook1.Pages[i]);
end;

Ade 03-10-2006 02:45:28

pues si mejor, gracias, de todas formas..
vale he de modificar :(
yo tambien se deshabilitarlo por completo pero por fin di con algo en la ayuda ( aunq mi ingles no e smuy bueno.. lo entendi) que me abrió los ojos dice asi:
Disabling a TTabControl object disables all tabs because it is one control. To disable individual tabs, use TPageControl and disable the individual TTabSheet controls that represent the pages.

Important: When creating new applications, do not use these controls.
The following table indicates which control should be used instead:
Win 3.1 control Replace with Palette page of new control
DBLookupList DBLookupListBox Data Controls
DBLookupCombo DBLookupComboBox Data Controls
TabSet TabControl Win32
Outline TreeView Win32
TabbedNoteBook PageControl Win32
NoteBook PageControl Win32
Header HeaderControl Win32

por si alguien en un futuro fuera = o mas cabezon/a q yo

dec 03-10-2006 02:49:05

Hola,

Bueno, hombre, no hay caso. ¡Si todo lo que pasaran fueran estas cosas! ¿No te parece? :)

Cita:

vale he de modificar
Sustituye modificar por rectificar y aún podrá llamársete sabia/o. ;)

Ade 03-10-2006 02:53:47

jeje
gracias por tu ayuda,
viste el hilo de seleccionar fila dbgrid stack overflow ??
tal vez me abras los ojos y ahorre tiempo

Saludos

dec 03-10-2006 03:04:49

Hola,

Bueno. Lo cierto es que no he utilizado nunca los componentes de que hablas en el Hilo al que te refieres, por cierto, que no lo había visto y lo localizé a través de esta búsqueda en los Foros, que tal vez sirva, así que, digo, me temo que no soy el más indicado para ayudarte...

Espero que algún otro compañero pueda echarte una mano... creo que todavía es hora, esto es, que acaso haya que tener un poco de paciencia. :)

Ade 03-10-2006 03:10:20

gracias por tu paciencia y tu tiempo
busque ya, pero a nadie le sucede el desbordamiento de pila, eso hare, esperar.

Hasta la proxima

Ade 04-10-2006 04:04:39

Problema solucionado, no se inhabilitar una sola pestaña, pero lo que he logrado es deshabilitar todas las pestañas excepto una (dejar sólo una con sus botones y demás), me explico:

tengo 4 pestañas:
1. Insertar,
2. Modificar/Eliminar,
3. Listado,
4. Salir.

yo queria controlar que cuando la tabla estuviera vacía se inhabilitaran las pestañas 2 y 3, pues al no haber registros solo puedes insertar o salir.

la pestaña salir no contiene nada, solo en el evento click de las pestañas tengo:
Código Delphi [-]
if Pestanas.ActivePage='Salir' then Cerrar(Proveedores);

en el evento crete del form puse:
Código Delphi [-]
procedure TProveedores.FormCreate(Sender: TObject);
begin 
{si la tabla esta vacia, deshabilito las pestañas}
     if ZTable1.IsEmpty then
         Pestanas.DisableAlign;//oculta el contenido de las pestañas
end;
lo cual me deja activa la pestaña 1 de insertar. y una vez insertado el 1º registro..
Código Delphi [-]
if not ZTable1.IsEmpty then Pestanas.EnableAlign;
espero haberme explicado bien, aqui lo dejo por si a alguien le sirviera
Saludos y gracias


La franja horaria es GMT +2. Ahora son las 14:48:11.

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