Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 02-03-2008
Jorge Taveras Jorge Taveras is offline
Miembro
 
Registrado: abr 2004
Ubicación: Santo Domingo
Posts: 68
Jorge Taveras Va por buen camino
MainMenu, como cambiar una propiedad a travez de sus items

Buenas tengan amigos foristas.

Espero esten todos bien y que me puedan dar una manita sobre esto.
ya he buscado en google y en el foro y algunos libros de delphi que poseo
(la bilia de delphi 5,6). Este es un ejemplo para no alargar las cosas

Tengo una tabla que contiene 5 campo

Código:
Consulta1
Consulta2
consulta3
consulta4
consulta5
todos son integer default 0

Tengo un programa que posee un mainmenu cuyos items los he nombrado igual que mis campos en la tabla

Código:
mainmenu.consulta1
mainmenu.consulta2
mainmenu.consulta3
mainmenu.consulta4
mainmenu.consulta5
lo que intento hacer es leer todos los campos
en la tabla y si el valor es 0 habilitar esta
opcion del menu, y si es 1 desabilitarla.

Código Delphi [-]
  accesos.Open;
  for x:=0 to Accesos.FieldCount - 1 do
  Begin
       str1 := Accesos.Fields[x].FieldName;
       if  Accesos.fieldbyname(str1).value = 0 then
           with MenuStandard.Items do
                begin
                name := str1;
                visible := true;
           end
       else
           with MenuStandard.Items do
                begin
                name := str1;
                visible := false;
           end;
end;
  Accesos.close;

este proceso me aplica bien el if, osea realmente logro examinar el valor del nombre del campo. Lo que no logro es asignar el valor true o false a los items del mainmenu Espero por favor su cordial ayuda

Última edición por dec fecha: 02-03-2008 a las 19:33:50.
Responder Con Cita
  #2  
Antiguo 02-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
ixMike Va por buen camino
Hola.

Lo primero, utiliza las etiquetas DELPHI para poner código, se hará más fácil de leer. También ayuda utilizar sangría (o sangrado). Edito: gracias dec

Lo segundo, no te inventes código de forma intuitiva:

Cita:
with MenuStandard.Items do
begin
name := str1;
visible := true;
end
¿Qué es eso? Además, ¿el menú no se llamaba MainMenu?

Bueno, no puedes cambiar el nombre de los componentes en tiempo de ejecución, lo que sí puedes hacer es esto:

Código Delphi [-]
accesos.Open;
for x:=0 to Accesos.FieldCount - 1 do
  Begin
  str1 := Accesos.Fields[x].FieldName;
  MenuStandard.Item[x].Visible:=Boolean(Accesos.fieldbyname(str1).value);
  end;
Accesos.close;

También podrías usar la propiedad Enabled en vez de Visible.

Salu2
Responder Con Cita
  #3  
Antiguo 02-03-2008
Jorge Taveras Jorge Taveras is offline
Miembro
 
Registrado: abr 2004
Ubicación: Santo Domingo
Posts: 68
Jorge Taveras Va por buen camino
Gracias por las observaciones y correciones, trataré de no repetirlo.
ahora bien.. quiero que me ayudes con esta linea.

MenuStandard.Items[x].Visible:=
Boolean(dmado.DSMapas.fieldbyname(str1).value);

MenuStandard.Items[x].visible hace referencia a un indice dentro del
MenuStandard. Lo que quisiera poder hacer es acceder a la propiedad
a travez de su nombre. fijate que puse solo 5 opciones pero pueden ser N..
y yo referirme a esas 5 en particular. En la tabla que cree, los campos
lleban el mismo nombre que los del menustandard.

A ver si me das algo de luz
Responder Con Cita
  #4  
Antiguo 02-03-2008
Avatar de Caro
Caro Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.545
Caro Va por buen camino
Hola Jorge Taveras, tambien puedes usar FindComponent para encontrar el item del MainMenu.

Código Delphi [-]
  accesos.Open;
  for x:=0 to Accesos.FieldCount - 1 do
   Begin
       str1 := Accesos.Fields[x].FieldName; 
       if  Accesos.fieldbyname(str1).value = 0 then
        TMenuItem(FindComponent(str1)).Visible := True
       else
        TMenuItem(FindComponent(str1)).Visible := False;
   end;
  Accesos.close;


Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 02-03-2008 a las 20:06:34.
Responder Con Cita
  #5  
Antiguo 02-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
ixMike Va por buen camino
Bueno, mientras los tengas ordenados no pasa nada.

Pero me gusta más la opción de Caro.



Salu2
Responder Con Cita
  #6  
Antiguo 02-03-2008
Jorge Taveras Jorge Taveras is offline
Miembro
 
Registrado: abr 2004
Ubicación: Santo Domingo
Posts: 68
Jorge Taveras Va por buen camino
Gracias Caro, eso es precisamente lo que queria lograr.
No conocia la opcion de buscar componentes dentro del menuitems.

A IX Mike y todos los que visitaron, por su esfuerzo gracias..
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como cambiar una propiedad en varios componentes a la vez!! ilichhernandez OOP 2 13-11-2005 23:16:51
Contar Items en un MainMenu AGAG4 Varios 4 07-10-2004 18:59:01
Items de MainMenu a TreeView MITOPE Varios 3 08-09-2004 19:15:00
Como hacer refernecia a la propiedad Shecked de un MainMenu ¥0n1 Varios 1 05-05-2004 00:09:31
Copiar los Items de un MainMenu en un TreeView Nuria OOP 1 22-07-2003 16:22:49


La franja horaria es GMT +2. Ahora son las 11:41:55.


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