Duda creacion de componentes vcl
Hola a todos, el problema que tengo es que mi componente tiene que crear en tiempo de ejecucion un menu (quando se abra el formulario que lo contenga). No tengo ni idea de como decirle en tiempo de ejecucion. A ver si me podeis ayudar, gracias
|
Podrías reescribir el constructor de tu clase
Código:
public |
Este es mi trozo de codigo:
constructor TNegus.Create(AOwner : TComponent); var x : integer; NuevoItem : Tmenuitem; ExisteMenu : boolean; Menu : TMainMenu; begin inherited; ExisteMenu:=false; //ShowMessage(AOwner.ClassName); NuevoItem:=TMenuItem.Create(AOwner); NuevoItem.Caption := 'Modo seguridad'; //NuevoItem.OnClick := AbrirNegusFrm; For x:=0 to Self.ComponentCount-1 do if (Self.Components[x] is TMainMenu) then begin TMainMenu(Self.Components[x]).Items.Add(NuevoItem); ExisteMenu:=true; end; if not ExisteMenu then begin Menu:=TMainMenu.Create(AOwner); Menu.Items.Add(NuevoItem); end; end; Pero me crea el menu en tiempo de diseño, yo lo quiero en tiempo de ejecucion. |
Cita:
Una pregunta. El menú estará visible durante TODA la vida del formulario? O se podrá esconder? Si es que sí, que más da que en diseño veas el menú? Si es que no, tendrás que crearte un método y, cuando quieras, invocar al método en cuestión Código:
public |
No tienes que crear ningún método aparte para que el menú se cree sólo en la ejecución. Lo que tienes que hacer es que tu código distinga si estás en modo de diseño o en ejecución:
Código:
if not (csDesigning in ComponentState) then |
Hola. En primer lugar te recomiendo que uses la etiqueta code para hacer que el código que pegues sea mas legible.
De la forma que creas el menú, estará disponible tanto en tiempo de diseño como en tiempo de ejecución. Si a pesar de todo no queres que aparezca en tiempo de diseño, simplemente encerrá el código de creación del menu en un if como este: Código:
if not (csDesigning in ComponentState) Then Hasta luego. ;) |
Cita:
|
Gracias por todo compáñeros
|
La franja horaria es GMT +2. Ahora son las 14:34:41. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi