#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. |
#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
__________________
David Carballido Córdova |
#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.
|
#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 |
#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. |
#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 ). |
#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? |
#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 |
#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. |
#10
|
|||
|
|||
Si señor, ahora si que si. ¡¡¡Muchas gracias Ballan!!!
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|