Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-03-2016
Adrian Martinez Adrian Martinez is offline
Registrado
NULL
 
Registrado: mar 2016
Posts: 6
Poder: 0
Adrian Martinez Va por buen camino
Question Menu Principal

Hola a todos! desde ya quiero darles las gracias por su ayuda
Bien aqui la cuestion, tengo un formulario principal en el cual se ejecutan formularios Hijos, este formulario principal tiene una barra de botones, donde al ejecutarse el formulario hijo, se le asignan las tareas (nuevo, guardar eliminar, modificar, etc) los botones tienen asignados en la propiedad action la respectiva funcion, que estoy administrando con el Action Manager. Para que esta barra de Botones responda a un formulario en particular, cada vez que se activa o desactiva un formulario, cambio el datasource en el ActionManager para que cumpla dicha funcion. Se Realiza con el Siguiente Procedimiento:

Código Delphi [-]
Procedure SetiarBarra(MyDataSource:TDataSource; bCarga:Boolean);
var i:Integer;
begin
  With FrmMain do
    begin
      if bCarga = True then
        begin
          for i := 0 to ActionManager.ActionCount -1 do
            begin
              if UpperCase(ActionManager.Actions[i].Category)=UpperCase('DataSet')then
                TDataSetAction(ActionManager.Actions[i]).DataSource := MyDataSource;
            end;
        end

      else
        begin
          for i := 0 to ActionManager.ActionCount -1 do
            begin
              TDataSetAction(ActionManager.Actions[i]).OnExecute := Nil;
              if UpperCase(ActionManager.Actions[i].Category)=UpperCase('DataSet')then
               TDataSetAction(ActionManager.Actions[i]).DataSource := Nil;
            end;
        end;
    end;
end;

a este procedimiento lo llamo desde los formularios Hijos, en los OnActivate (SetiarBarra(DataSet, True)) y OnDesactivate(SetiarBarra(nil, False)).

Al crear el primer formulario asigna las tareas sin problema, el inconveniente se presenta cuando abro otro formulario, ya que nunca vuelve a reasignar el Datasource por lo tanto siempre los botones responden a la accion del primer formulario ejecutado, como no hay ningun error, no se que mas hacer Espero haber sido lo suficientemente claro, gracias nuevamente y saludos!

Última edición por roman fecha: 08-03-2016 a las 19:44:28. Razón: Agregar etiqueta [delphi]
Responder Con Cita
  #2  
Antiguo 08-03-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola y bienvenido al ClubDelphi

Cuando escribas código, utiliza las etiquetas [delphi] o [code] para que no se pierda el formato y se coloree automáticamente. Esta vez lo he hecho yo por ti

En cuanto a tu duda, ¿has intentado no hacer nada?

Acabo de hacer una prueba con un formulario MDI y dos MDIChild, cada uno de éstos con un DBEdit y un DataSource apuntando a distintos DataSets ubicados en el formulario padre.

Coloco un ActionControl con acciones TDataSetPrior y TDataSetNext conectadas a dos botones de la Toolbar.

Sin programar nada en los eventos que mencionas ni hacer ninguna asignación del TDataSetAction.DataSource, los botones mueven el registro activo del dataset correspondiente al formulario hijo activado.

Imagino que con un ActionManager debe ser similar el comportamiento.

LineComment Saludos
Responder Con Cita
  #3  
Antiguo 08-03-2016
Adrian Martinez Adrian Martinez is offline
Registrado
NULL
 
Registrado: mar 2016
Posts: 6
Poder: 0
Adrian Martinez Va por buen camino
Hola! gracias por la aclaracion, lo tendre en cuenta para la proxima y con respectoa tu pregunta, si, eh probado a no hacer nada y no funciono, por eso eh recurrido al codigo mencionado anteriormente.. aun asi volvi a interntarlo y no paso nada
Responder Con Cita
  #4  
Antiguo 10-03-2016
Adrian Martinez Adrian Martinez is offline
Registrado
NULL
 
Registrado: mar 2016
Posts: 6
Poder: 0
Adrian Martinez Va por buen camino
Question Aplicación con Multi-Formularios

Buenas gente! Desde ya se agradece cualquier ayuda .

Bien el tema es el Siguiente:
Tengo un formulario Principal (MdiForm) con varios controles como dxRibbon, ActionManager, Backstage, ect... en este Principal se Puede Ver o ejecutaran multiples formularios MDIChild al Mismo tiempo.
Cuando creo el primer MDIChild los controles se asignan automaticamente, hasta ahi todo marcha bien, pero cuando ejecuto el segundo formulario los controles solo quedan para el primero, y hasta que no lo cierre, no funcionan para el segundo.

Pregunta: ¿Como puedo liberar los controles del MDIForm cada vez que se activa o desactiva un MDIChild, sin destruir o cerrar la ventana MDIchild Propiamente Dicha?

PD: Soy nuevo trabajando con delphi, tal vez sea algo facil de solucionar, pero aun no tengo demasiada practica en este entorno.. Gracias Nuevamente! saludos
Responder Con Cita
  #5  
Antiguo 10-03-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Es difícil saber dónde está el problema sin ver el código que estás utilizando.

Deberías poder crear tantas instancias de un formulario como necesites sin problemas. No acabo de entender qué quieres decir cuando hablas de: "pero cuando ejecuto el segundo formulario los controles solo quedan para el primero", pero parece que el problema está en cómo trabajas con esos controles.

Das pocos detalles para saber dónde puede radicar el problema.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 10-03-2016
Adrian Martinez Adrian Martinez is offline
Registrado
NULL
 
Registrado: mar 2016
Posts: 6
Poder: 0
Adrian Martinez Va por buen camino
Perdon por la falta de detalles! mira, este es el procedimiento que llamo desde el Onactivate y OnDesactivate de los MDIChild, para asignara el DataSource a la Lista de Acciones de mi ActionManager, que controla los botones en el Menu Principal, o sea el MDIForm.

Código Delphi [-]
Procedure SetiarBarra(MyDataSource:TDataSource; bCarga:Boolean);
var i:Integer;
begin
  With FrmMain do
    begin
      if bCarga = True then
        begin
          for i := 0 to ActionManager.ActionCount -1 do
            begin
              if UpperCase(ActionManager.Actions[i].Category)=UpperCase('Dataset')then
                TDataSetAction(ActionManager.Actions[i]).DataSource := MyDataSource;
            end;
        end
      else
        begin
          for i := 0 to ActionManager.ActionCount -1 do
            begin
              TDataSetAction(ActionManager.Actions[i]).OnExecute := Nil;
              if UpperCase(ActionManager.Actions[i].Category)=UpperCase('DataSet')then
                TDataSetAction(ActionManager.Actions[i]).DataSource := MyDataSource;
            end;

        end;
    end;
end;

Al procedimiento lo llamo asi:
Cuando activo el MDICHild (OnACtivate) = SetiarBarra(DSMain, True) //DSMain, es el nombre del DataSet.
Cuando Desactivo el MDICHild (OnDesactivate) = SetiarBarra(Nil, False) //DSMain, es el nombre del DataSet.

Entonces: Cuando activo un MDIChild, el MDIForm se enlaza a su DataSet, pero cuando se Desactiva ese MDIChild, nunca se desenlaza...

Espero haber aclarado algunas de tus dudas! Gracias por responder
Responder Con Cita
  #7  
Antiguo 10-03-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Adrian.

El nuevo hilo que abriste "Aplicación con Multi-Formularios", realiza la misma consulta con el mismo código que el que habías echo dos días atrás "Menu Principal", motivo por el cuál combiné ambos en el primero.

Si no responden o no te sirven las respuestas recibidas, no habras un nuevo hilo con la misma consulta. Continua preguntando en el hilo inicial que este pasará a encabezar la lista de nuevos temas.

Saludos y gracias por tu colaboración
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



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
Barra sobre el menu principal lbidi Varios 8 12-03-2015 21:30:36
imagenes en el menu principal josi Conexión con bases de datos 1 27-03-2008 09:57:48
Cambiar fondo de menu principal zugazua2001 Varios 0 30-06-2005 06:23:50
Maximizar Form del Menu Principal... BlueSteel Varios 2 10-01-2005 15:51:39


La franja horaria es GMT +2. Ahora son las 18:37:48.


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
Copyright 1996-2007 Club Delphi