Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Instrucción dinamica para desactivar menu en Delphi (https://www.clubdelphi.com/foros/showthread.php?t=32256)

Gustavo Restrep 31-05-2006 23:59:13

Instrucción dinamica para desactivar menu en Delphi
 
Como puedo armar una instrucción dinamicamente para usar el nombre del menú desde una variable ?

Por ejemplo:

MenuVentas.Items[0].enable : False

necesito usar una variable en vez de MenuVentas, asi

variable:='MenuVentas'

variable.Items[0].enable : False

Gracias

dec 01-06-2006 00:15:54

Hola,

Tal vez puedas valerte de la función "FindComponent". Échala un vistazo a ver y cuentas qué tal. ;)

Gustavo Restrep 01-06-2006 18:47:24

Solución
 
Gracias David,

Si me sirvio tu pista, y asi lo solucioné:

Código Delphi [-]
var
  CompW : TComponent;
  Variable : String;
 
begin
  Variable:='MenuVentas';
  CompW:=FindComponent('Variable');
  TMenu(CompW).Items[0].enable : False;
end;

Realmente en vez de una variable voy a usar un dato recuperado de una base de datos, pero es igual.

Lepe 01-06-2006 20:42:11

Sugerencia contra fallos:

Código Delphi [-]
procedure CreaMenuDinamico;
var
  CompW : TComponent;
  Variable : String;
 
begin
  Variable:='MenuVentas';
  CompW:=FindComponent(Variable);
  if CompW = nil then
     raise Exception.CreateFmt('procedimiento CreaMenuDinamico: No se ha encontrado %s para crear el menú.',[variable]);
  TMenu(CompW).Items[0].enable : False;
end;

Si el componente se llama "MenuVentas" e intentas buscar por "MenuVenta" provocará un access violation sin más información.

Con esa condición añadida, obtienes una Excepción.... el programa se para, sí, pero te está diciendo exactamente en qué procedimiento y además la variable que no está encontrando. Buscar el fallo es cosa de niños ;).

Como leí por algún sitio: KISS (Keep It Simple STUPID :D :D) Realmente funciona jejeje.

Saludos.


La franja horaria es GMT +2. Ahora son las 12:46:35.

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