Custom control en dynpro

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • yoabapyupi
    Senior Member
    • feb
    • 125

    #1

    Custom control en dynpro

    Hola compañeros,

    He creado un “Custom control” en un dynpro para que el usuario pueda meter un texto largo. Lo he hecho mediante:

    data: gcl_container type ref to cl_gui_custom_container.
    data: gcl_editor type ref to cl_gui_textedit.

    y “create_object”.

    Además he dibujado un botón para visualizar el “custom control” y otro para ocultarlo y es aquí donde tengo problemas. He probado con el método “set_visible” pasándole el valor “0” y va bien para ocultarlo, pero cuando le paso “1” para volver a visualizarlo no funciona.

    Otra prueba: El botón que muestra hace los “create object” y el que oculta “set visible”. Ocurre lo mismo, oculta y cuando quiero volver a verlo no funciona.

    ¿Sabe alguien como puedo hacerlo funcionar?

    Muchas gracias.
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola, wueno yo tbm he realizado eso pero no lo hice con esa clase, sino usando la interface: c_textedit_control, es muy facil de usar y manipular, te adjunto una parte del codigo, la clase local que he creado es lcl_textedit y hereda de esa clase para poder usar sus metodos, espero te pueda servir
    Archivos Adjuntos
    David Carballido Córdova

    Comentario

    • yoabapyupi
      Senior Member
      • feb
      • 125

      #3
      Te agradezco el esfuerzo David, pero creo que el código que me has pasado no es lo que estoy buscando. Si he entendido bien, lo que haces es ocultar campos. Yo lo que quiero es ocultar el "custom control" completo.

      Comentario

      • DavidXD_XD
        Moderator
        • ago
        • 1255

        #4
        Holas, ahhh no entendi bien, si quieres ocultar el Custom Control debes jugar con el LOOP AT screen, el metodo set_visible es para dejar habilitado o inhabilitado a escritura el editor, mas o menos cuando quieres modificar y visualizar un programa ABAP
        David Carballido Córdova

        Comentario

        • yoabapyupi
          Senior Member
          • feb
          • 125

          #5
          Ya probé el "loop at screen", poniendo breakpoint y se ven todos los campos del dynpro excepto el "custom control" con lo que no puedo hacerlo invisible.
          No se ..... igual me voy olvidando de florituras y lo dejo siempre visible.

          Comentario

          • ballan
            Senior Member
            • oct
            • 671

            #6
            Para ocultar o mostrar un text edit (esto tambien seria aplicable a casi cualquier objeto) tienes que llamar al metodo set_visible

            En tu codigo supongo que crearas el custom container y luego crearas tu editor de texto asociandolo al custom container, algo mas o menos asi

            DATA: go_cc TYPE REF TO cl_gui_custom_container,
            go_txt TYPE REF TO cl_gui_textedit.

            CREATE OBJECT go_cc
            EXPORTING
            container_name = 'CONTAINER'.

            CREATE OBJECT go_txt
            EXPORTING
            parent = go_cc.

            para poder jugar y ocultar o mostrar el control text_edit tendrias que hacer lo siguiente

            Con esto lo muestras
            go_txt->set_visible( visible = go_txt->visible_true ).

            Con esto lo ocultas
            go_txt->set_visible( visible = go_txt->visible_false ).

            Comentario

            • yoabapyupi
              Senior Member
              • feb
              • 125

              #7
              Exacto Ballan, creo el custom container y luego creo el editor de texto asociándolo al custom container como me dices.

              Mi idea es presentar la dynpro con dos botones con uno de ellos visualizaría el "custom control" y con el otro lo ocultaría. Este código que me has pasado para visualizar y ocultar entiendo que debe ir en el PAI de la dynpro cada uno asociado a su botón correspondiente.

              ¿Donde debo poner el código para crear el custom container y el editor de texto asociado al custom container?

              Comentario

              • PabloGP
                Junior Member
                • sep
                • 21

                #8
                Buenos días,
                También tuve ese mismo problema y tras mirar en varios foros llegue a la conclusion q hace un LOOP AT SCREEN y ponerle el setvisible no funciona para los Custom Controls.

                Yo consegui arreglaro con esto:

                data:
                * Create reference to the custom container
                custom_container type ref to cl_gui_custom_container,
                custom_container1 type ref to cl_gui_custom_container,
                * Create reference to the TextEdit control
                editor type ref to cl_gui_textedit,
                editor2 type ref to cl_gui_textedit.

                *.- Se ponen los costum_control de la descripción y la solución en modo lectura.

                call method editor2->set_readonly_mode
                exporting
                readonly_mode = 1.

                call method editor->set_readonly_mode
                exporting
                readonly_mode = 1.

                Con esto no lo hago invisible, pero al menos no deja intruducir datos... Pruebalo e investiga si hay algun método similar para hacerlo invisible.

                Un saludo

                Comentario

                • ballan
                  Senior Member
                  • oct
                  • 671

                  #9
                  El codigo donde creas el custom container y el control text edit debe ir en el PBO

                  tu PBO deberia quedar mas o menos asi (la definicion de las variables la pongo aqui pero deberia ir en el TOP)

                  DATA: go_cc TYPE REF TO cl_gui_custom_container,
                  go_txt TYPE REF TO cl_gui_textedit.

                  data: gv_visibilidad type char 1 value '1'. "Por defecto lo ponemos visible

                  if go_cc is initial.

                  CREATE OBJECT go_cc
                  EXPORTING
                  container_name = 'CONTAINER'.

                  endif.

                  if go_txt is initial.

                  CREATE OBJECT go_txt
                  EXPORTING
                  parent = go_cc.

                  endif.

                  go_txt->set_visible( visible = gv_visibilidad ).

                  Luego en el PAI deberias colocar el valor adecuado en la variable gv_visibilidad, despues de ejecutarse el PAI volveria a pasar por el PBO y ya
                  se mostraria o no dependiendo del boton que tocaran, el codigo del PAI seria algo mas o menos asi

                  case sy-ucomm.

                  when 'UCOMM_BOTON_MOSTRAR_TEXT_EDIT'.

                  gv_visibilidad = go_txt->visible_true.

                  when 'UCOMM_BOTON_OCULTAR_TEXT_EDIT'.

                  gv_visibilidad = go_txt->visible_false.

                  endcase.

                  Comentario

                  • yoabapyupi
                    Senior Member
                    • feb
                    • 125

                    #10
                    Si señor, ahora si que si. ¡¡¡Muchas gracias Ballan!!!

                    Comentario

                    • Sil12
                      Junior Member
                      • feb
                      • 14

                      #11
                      como leer texto ingresado

                      Hola!

                      Estoy haciendo lo mismo para que se ingrese un texto largo en una dynpro pero no se como obtener el texto que escribo en este custom control, y menos se como inicializar este control con un texto definido.

                      Agradecere mucho me ayuden.


                      Slds.
                      ---

                      Comentario

                      Trabajando...