FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda con Componente TcategoryPanelGroup
Buenas, he estado buscando información de cómo crear en tiempo de ejecución el tcategoryGroupPanel. He encontrado poca información de cómo hacerlo pero logre crear los paneles. Mi necesidad es si alguien sabe como puedo crear el panel y dentro de el crear la cantidades de controles que tengan por grupo. Tengo una DB en SQLSERVER la cual posee la siguiente estructura:
DBNAME : HistorialItems (esta posee los items hacer utilizados por la tabla plantilla que se define por cada medico) Cita:
como se puede ver en el ejemplo de tabla, pueden existir uno o varios ítems para cada grupo. Acá es donde radica mi problema como crear el tipo de ítem dentro del grupo que le corresponde. Para luego guardar esa información del tcategorypanelgroup.. Agradeceré cualquier ayuda o aporte que puedan realizar. Mil gracias de ante mano por toda la ayuda prestada. |
#2
|
||||
|
||||
Hay que añadir la categoría (TCategoryButtons) y luego los botones a cada categoría (TButtonItem).
Utilizando un código como este, se condigue lo que necesitas. El tuyo puede variar por las tablas o campos, pero será muy parecido.
El resultado serán las categorías y los botones.
__________________
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
|
|||
|
|||
Muchas gracias Neftali, aprovechare de inmediato a ver que saco de tu obra de arte XD. También gracias por tu código Texto a Menu lo adapte a base de dato lo único que no veo como agregar los hints y los hotkeys.
|
#4
|
|||
|
|||
Buenas Neftali, logre adaptar tu código y logre el resultado parecido al tuyo, de ante manos muchas gracias por el tiempo invertido en ayudarme. Aprendí algo que desconocía, pero en realidad lo que deseo es que en ves de ser botones es utilizarlo como un contenedor para crear dentro los el tipo de componente definido en la tabla componentes. Se que se puede pero solo lo se hacer en modo de diseño. pero como no se cuantos grupo se crearan ni cuales datos elegirán no puedo crear todo de un tiro. luego esa plantilla creada se guardara en otra tabla con la información recopilada en cada tipo de campo (no se si me doy a entender).
|
#5
|
||||
|
||||
Cita:
Sólo debes crear los componentes en ejecución como se crean normalmente en runtime y utilizar como Parent el CategoryButton que quieras.
__________________
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. |
#6
|
|||
|
|||
Muchas gracias Neftali. Implemente lo que me dijiste y todo bien pude corregir el error de Name ya existe, lo único que no he podido lograr es que los controles creados lleven un orden. Coloco imagen para que veas como me queda. El que encuentre el checkbox se gana un beso y si hay uno
|
#7
|
||||
|
||||
Cita:
Una es la propiedad Name (por lógica) para que no te de el error de nombres duplicados. La otra es la posición (Top), para poder ver los componentes correctamente. Si los estás creando en un bucle, pues lo lógico sería usar el indice para "variar" la posición vertical. Además tendrás que tener en cuenta que dependiendo del tipo de control debes incrementar más o menos esa posición, porque no mide lo mismo (en altura) un TCheckbox o un TMemo.
__________________
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
|
|||
|
|||
Muchas gracias, he podido resolver el problema aca dejo código completo. Si lo ven feíto y quieren aportar algo para que se vea mejor estéticamente y mejorar rendimiento sean bienvenidos XD. Ahora me toca la parte dolorosa guardar la información de cada uno en su respectivos lugar y luego cargarla para consultar T_T (siento que me va a doler la cabeza pero tengo a mano aspirina XD).
|
#9
|
||||
|
||||
Yo creo que se podría "arreglar" la parte de los IF que crea los componentes. Es muy repetitivo y usando RTTI y la herencia de clases podría quedarse más sencillo.
Y si el número de controles diferentes crece, te saldrá más a cuente para no tener qui ir copiando y pegando ese trozo: Así esto:
Se podría quedar en algo como esto: // Para cada Grupo, crear los botones... for j := 0 to (DM.QryPButtons.RecordCount -1) do begin contcomp := contcomp + 1; //Crear el label con la nota del campo a introducir dato CreateComponent(TLabel,DM.QryPButtonsidDatos.Value, 5, ll, DM.QryPButtons.FieldByName('CaptionLabel').AsString); var sDatosTipo:string := Trim(DM.QryPButtons.FieldByName('DatosTipo').AsString); // Crear el control segun su tipo y ubicarlo al lado del label if (sDatosTipo = 'TEdit') Or (sDatosTipo = 'Edit') then begin // Crear un Edit CreateComponent(TEdit,DM.QryPButtonsidDatos.Value, ew, cl, ''); tp := tp + eh + sp; end; if (sDatosTipo = 'TMemo') Or (sDatosTipo = 'Memo') then begin // Crear un memo CreateComponent(Tmemo,DM.QryPButtonsidDatos.Value, mw, cl, ''); tp := tp + mh + sp; end; if (sDatosTipo = 'TCheckbox') Or (sDatosTipo = 'Checkbox') then begin // crear un checkbox CreateComponent(TCheckbox, DM.QryPButtonsidDatos.Value, cw, cl, ''); tp := tp + ch + sp; end; //but := TButtonItem.Create(Cat.Categories.Add.Items); //but.Caption := QryButtons.FieldByName('DatosDetalle').AsString; QryButtons.Next; end; Y con el procedimiento definido así:
Y hay que añadir System.TypInfo al USES. la idea con esto es utilizar RTTI para poder crear ls diferentes componentes (diferentes clases) en un mismo punto. Herencia para las diferentes clases (TComponentClass) y RTTI para preguntar y asigar las propiedades published de los componentes.
__________________
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
|
||||
|
||||
Yo creo que se podría "arreglar" la parte de los IF que crea los componentes. Es muy repetitivo y usando RTTI y la herencia de clases podría quedarse más sencillo.
Y si el número de controles diferentes crece, te saldrá más a cuente para no tener qui ir copiando y pegando ese trozo: Así esto:
Se podría quedar en algo como esto:
Y con el procedimiento definido así:
Y hay que añadir System.TypInfo al USES. la idea con esto es utilizar RTTI para poder crear los diferentes componentes (diferentes clases) en un mismo punto. Herencia para las diferentes clases (TComponentClass) y RTTI para preguntar y asigar las propiedades published de los componentes.
__________________
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. |
#11
|
|||
|
|||
Ok probare. Gracias
|
#12
|
|||
|
|||
Buenas, he copiado el codigo tal cual me indicas y agregado al use System.TypInfo. Pero primero tube que arreglar la linea donde dice
me da error lo coloque como siempre hago
Pero aun así consigo un error el el procedimiento de crear componente [dcc32 Error] ufrmpacientes.pas(276): E2029 '(' expected but ':=' found
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ayuda componente | cmm07 | Varios | 6 | 01-12-2008 17:42:20 |
Ayuda con un componente. | Lucciano | Conexión con bases de datos | 2 | 12-04-2006 18:57:04 |
Ayuda con componente | CelestronFan | Varios | 6 | 09-10-2005 18:39:40 |
Ayuda con componente | raco | Internet | 2 | 17-02-2005 02:59:50 |
Ayuda con componente | animal | Varios | 2 | 16-02-2005 08:49:47 |
|