FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Llenar TreeView desde una tabla
Hola amigos buenas noches.
Iniciando con un proyecto. Trabajo Delphi6/Firebird 2.0/Win10 Explico: Quiero llenar un TreeView con las opciones del menu principal y en cada Nodo agregar un checkbox para que el usuario pueda habilitar o deshabilitar dicha opción. Esta selección deberá ser guardada en una tabla etiquetando esta configuración con un nombre para después ser asignado a un USUARIO del sistema. Hasta ahorita he consultado un código de Neftali que hace justamente esto, agregar un checkbox a cada nodo, pero no se como almacenarlo en una tabla y luego ser recuperado para volver a llenar el TreeView con esta configuración de opciones del menu y poder modificarlo si asi lo desea el usuarios-administrador. Vi este video, el cual el código es de visual basic, pero la verdad no le entiendo bien, pero de ahi tomé la estructuras de las tablas tratando de hacer lo que quiero pero no doy bien...me es complicado el manejo de TreeView, almacenarlo para despues recuperarlo de la tabla, montarlo en el treeview y estando ahí, modificarlo si es necesario...(habilitar/deshabilitar). (Me gustaría mas tomar las opciones de una tabla que desde el mismo TMainMenu) Talvez me este complicando de mas, pero me gustaría poder hacerlo con treeview, q el usuario seleccione las opciones a habilitar y después grabarlo para asignarlo posteriormente a un usuario. Esta forma de quererlo hacer es porque me parece una manera muy fácil y gráfica, para el usuario final, para que a el le sea mas fácil y de mejor compresión, la habilitación o deshabilitación de opciones. También he consultado los diferentes hilos de este club asi como otros, y he leido que lo han desarrollado de diferentes formas, desde NIVELES del 1 al 5 usando el TAG hasta configurar formularios con permisos especiales a ejecutar, dentro del mismo formulario(ALTAS, BAJAS, CAMBIOS, IMPRIMIR,etc), que me parecen bien, pero no es lo que busco. Espero haberme explicado. Saludos y muchas gracias por su tiempo. p.d. Tengo esta tabla
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! Última edición por mRoman fecha: 20-05-2020 a las 04:51:08. |
#2
|
||||
|
||||
Cita:
¿Cual es el problema concretamente? ¿El recorrido del TreeView, guardarlo en la tabla? Para recuperar lo contrario, realizar un recorrido por toda la tabla e ir creando los nodos en el TreeView. Lo mismo de antes. ¿Cual es concretamente el problema? ¿Hacer el recorrido, crear los nodos en runtime?
__________________
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. |
#3
|
||||
|
||||
Cita:
Si, esto es el problema: Cita:
Cita:
Cita:
No sé como hacerlo. No sé como implementar código para hacer esto. Mostrar las opciones tomándolas de un DATASET -ligado obviamente a una tabla con todas las opciones del menu-, estando éstas cargadas al TreeView seleccionar cuales si y cuales no serán visibles para el usuario, y luego grabar esta configuración en la TABLA para luego ser asignado a cualquier usuario...como permisos de acceso al menu del sistema. Estoy tratando con el siguiente código (q lo tome de uno de los foros consultados) de implementarlo para lo que quiero, pero en realidad apenas lo estoy analizando...
Espero me puedas/puedan orientar. MUCHAS GRACIAS !! por tu tiempo Saludos.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! Última edición por Casimiro Notevi fecha: 20-05-2020 a las 18:21:13. |
#4
|
||||
|
||||
Creo que es más sencillo...
Con este código puedes recorrer el treeview y almacenar en la tabla ls items:
Y con este otro recuperrarlos y añadirlos a un Treeview vacío:
__________________
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. |
#5
|
||||
|
||||
Cita:
Nuevamente gracias y estamos pendientes... Saludos.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#6
|
||||
|
||||
Hola Neftali
Estoy analizando tu código que muy amablemente me respondiste. Tengo una duda, manejas otra versión de Delphi?, yo uso Delphi6, lo anterior debido a la siguiente instrucción: Código:
tblOpcMenu.FieldByName('NODO_PADRE').AsString := ifThen(Assigned(tv.Parent), tv.Parent.Index.ToString, '-1'); Mi delphi no la reconoce...
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#7
|
||||
|
||||
Es un IF..THEN..ELSE abreviado que tienen las últimas verisones de delphi.
http://docwiki.embarcadero.com/Libra...trUtils.IfThen Al final es equivalente a poner:
Usar el ToString, es equivalente à la función IntToStr, BoolToStr,...
__________________
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. |
#8
|
||||
|
||||
Que tal Neftali
Anexo el código completo donde se carga las opciones del menu principal, agregando un checkbox a cada opción, para habilitar o deshabilitar la misma, para mas adelante, cuando se conecta el usuario al sistema, solo vea las opciones habilitadas, bueno ya se graba la información a la tabla -que por cierto le agregue campos-, pero como que el arbol no lo esta cargando bien desde la tabla, es decir, las subopciones no las inserta en los niveles que son. Aparte estoy buscando la forma de como saber que opciones tiene CHECKED en el treeview para almacenar el dato y me sirva para habilitar o deshabilitar. Envio el código completo: (Tengo un pagecontrol en el mismo formulario y hay código que nada que ver con el TreeView)
Espero me puedan ayudar a almacenar el CHECKED y el UNCHECKED de cada nodo en la tabla, que por cierto tuvo cambios:
Saludos y muchas gracias por su tiempo a todos.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#9
|
||||
|
||||
Tal vez deberías enviar un proyecto (puedes adjuntar un ZIP) con lo mínimo para poder probar el código.
__________________
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. |
#10
|
||||
|
||||
Cita:
Anexe un link de google-drive ya q el archivo zip llega casi a los 2 Mb, espero lo puedas bajar. Código:
https://drive.google.com/file/d/139M1-KiJaRwahtq2wHs-F_1HWhFrKSrB/view?usp=sharing Explico el funcionamiento, seleccionas la opción "Seguridad" y luego "Configurar Menu del Sistema", te mostrará el formulario el cual tiene un PageControl. En la primera pestaña es para dar de alta la descripcion del menu a configurar, y la segunda pestaña es donde estoy tratando de configurar las opciones del menú. En la 2da pestaña, das click sobre el combo para seleccionar la descripción de un menú -talvez la creación previa de la descripción del tipo de menú, la pueda omitir, ya que la DESCRIPCIÓN la puedo grabar al mismo tiempo que se grabarían los nodos del TreeView- Al cerrarse el combo se mostraran los datos, si la tabla contiene ya una configuración del menú previamente grabada, si no, se cargaran las opciones de TMainMenu al treeview.... Al haber información previa de un menú configurado, los carga al TreeView, pero no lo hace bien, sobre todo en los nodos "nietos", los carga como si fueran "hijos"... Estaré al pendiente de cualquier comentario. Saludos y muchas gracias por ayudarme, igualmente -por adelantado- para aquellos otros compañeros del foro que aporten o consulten. MUCHAS GRACIAS A TODOS!.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! Última edición por mRoman fecha: 22-05-2020 a las 18:30:41. |
#11
|
||||
|
||||
Solucionado
Hola amigos.
Ya solucioné el problema. Dejaré el código completo por si alguien mas quisiera hacer los mismo. Explico el objetivo: Llenar un treeview con todas los items de un tmainmenu. seleccionar en el treeview, el item que deberá mostrarse en las opciones del menu principal del sistema. almacenar dicha configuracion con una clave del tipo de menu creado, asi como todas los items del tmainmenu, almacenando en un campo de control, la clave que permitirá ser comparada cuando el usuario se conecte al sistema y se activen solamente aquellas opciones que coincidan con el campo de control. Para lograr lo anterior, cree una tabla con la siguiente estructura:
MENU_TIPO_ID.- Clave del tipo de menú con el cual se guardará la configuración de las opciones del menu(EJ. MENU DE ADMINISTRADOR, MENU DE CAPTURISTA, etc). NODO_PADRE.- Almacenará el nodo padre del TreeView. NIVEL.- Almacenaré el nivel que guarda el item en el treeview NODO.- Numero de nodo del item. OPC_VISIBLE.- Campo de control que servirá para identificar si se mostrará o no la opción en el menú principal.(Ej. 0=visible,1=no visible, T=True, F=False ,etc). ya aqui lo pueden hacer como gusten. OPC_DESCRIPCION.- Nombre o descripción del item que ostenta en el TMainMenu OPC_TAG.- El TAG que guarda el item en el TMainMenu (A todos los item les puse un numero el cual servirá luego para comparar y ver si se mostrara o no la opción) OPC_ABSOLUTE_INDEX.- El numero que tiene almacenado en la propiedad de TreeView.AbsoluteIndex. Y este es el código completo con el cual se cumplió con el objetivo: (Por cierto aclaro que el form tiene un PageControl, en donde en la primer TabSheet es la pantalla para crear/guardar la descripción del tipo de menu que voy a configurar)
Tengo pendiente el proceso de comparación para que muestre o no las opciones del menú, cuando el usuario se conecte. En cuanto lo tengo lo publicaré para tenerlo todo completo. Sé que puede quedar mejor, pero considero que mis conocimientos no son tan avanzados como algunos o la gran mayoría de los que integran este club, asi que dejo en ustedes -en la medida de sus tiempo y si asi lo desean- lo puedan mejorar, enriquecerlo y dejarlo disponible para los demás. (Lo escribí en mayúsculas solo para resaltar el mensaje, no significa q este gritando...jejejeje) Saludos.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! Última edición por Casimiro Notevi fecha: 01-06-2020 a las 12:07:19. |
#12
|
||||
|
||||
Habilitando opciones de un TMainMenu
Bueno pues aqui el código pendiente: Habilitar o Deshabilitar las opciones del menú de acuerdo a la configuración almacenada en la tabla SEG_MENU_OPC_CONFIG
Dentro del formulario principal:
Aquí el código del Procedimiento "ActivarOPCMenu":
Espero sea de utilidad para los demás compañeros de este club. Saludos
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! Última edición por mRoman fecha: 02-06-2020 a las 02:32:27. |
#13
|
||||
|
||||
Gracias.
__________________
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. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Llenar un Combobox con un campo de una tabla MySql. Desde un qry volcar los datos. | juanpy | PHP | 9 | 12-10-2012 04:46:06 |
Llenar un qListBox desde una tabla MySql. RADPHP(Delphi for Php) | juanpy | PHP | 2 | 07-03-2012 20:52:32 |
LLenar un TreeView en ejecucion con datos de una tabla | canelita | Varios | 0 | 18-01-2008 22:34:03 |
Error al llenar tabla desde archivo txt | bohemioloco | Conexión con bases de datos | 9 | 13-11-2006 13:49:54 |
Llenar menú desde Tabla... | vladimirbp | Varios | 2 | 10-11-2006 18:26:53 |
|