Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Programar el componente DBNavigator independientemente (https://www.clubdelphi.com/foros/showthread.php?t=61916)

rgstuamigo 26-11-2008 20:25:09

Programar el componente DBNavigator independientemente
 
Hola amigos aqui nuevamente con algunas dudillas, mi problemas es que quisiera programar cada botoncito que tiene el componente DBNavigator independientemente,es decir me creo 10 TBitBtn (por que son 10 opciones que tiene este componente) y en el evento Onclick de cada uno quisiera poner el codigo de lo que exactamente hace cada botoncito del DBNavigator respectivamente, pero no se exactamente que código poner en los eventos, tampoco quiero hacerlo a nivel de componente o crearme un componente nuevo o personalizado solo quiero los eventos de cada uno.
Espero que me puedan ayudar;)..
Les agradesco de antemano......

Caral 26-11-2008 20:31:51

Hola
Bueno, no se cual es la duda.
El dbnavigator esta ligado al datasource y a su vez al table o query.
Los eventos son los que pone el mismo componente.
Para hacer por ejemplo:
Código Delphi [-]
Table1.Fist;
Código Delphi [-]
Table1.Delete;
Etc, Etc, Etc.
Saludos

rgstuamigo 26-11-2008 21:20:50

Gracias Caral por responder...
Pense que era mas dificil:rolleyes: pero dime caral ,al parecer cuando le das next o prior en el DBNavigator se seleciona la fila del DBGrid con azul ,pero si lo haces por codigo al parecer no ¿Como lograrias esto?:confused:

Caral 26-11-2008 21:30:37

Hola
Que raro que no te funcione.
Código Delphi [-]
Table1.Next;
Código Delphi [-]
Table1.Prior;
Saludos

rgstuamigo 26-11-2008 21:34:10

Cita:

Hola
Que raro que no te funcione.
Me funciona pero lo unico es que no lohace como lo hace el DBNavigator que cuando el cursorsito esta en una fila del DBGrid lo pinta con azul, en cambio si lo hago asi por codigo solo se ubica el cursorcito pero no lo pinta de azul.:rolleyes:

Lepe 26-11-2008 21:41:05

Entiendo lo que dices, pero eso es normal en un DBgrid, puedes tener seleccionado un registro y después poder seleccionar más registros.... de ahí que la selección no se mueva.

El dbgrid tiene la propiedad Options donde puedes configurar muchas opciones.

Puede ser... y sólo puede ser, que hayas usado TButtons para tus navigator y ese componente captura el foco del ratón, así que el dbgrid pierde el foco. Usa un TSpeedButton para tus botones personalizados.


Saludos

rgstuamigo 26-11-2008 21:53:38

Gracias Lepe;)
Ya me funciono , tuve que agregarle
Código Delphi [-]
DBGrid1.SetFocus;
despues de cada next o prior,etc;
Pero dime como hago que cuando le de next,prior,etc se selecione(pinte)toda la fila y no solo una casilla del dbGrid y mejor si es de otro color que no sea el azul?:confused:

luisgutierrezb 26-11-2008 22:06:15

y porque quieres hacer todo el codigo de los botones? lo pregunto por lo siguiente hay formas de cambiarle al dbnavigator las imagenes e incluso ponerle captions, a lo mejor eso soluciona el problema pero si aun asi quieres hacerlo, usa acciones ya trae predefinidas las acciones de base de datos y te habilita y deshabilita los botones automaticamente

rgstuamigo 26-11-2008 22:27:01

Cita:

y porque quieres hacer todo el codigo de los botones? lo pregunto por lo siguiente hay formas de cambiarle al dbnavigator las imagenes e incluso ponerle captions, a lo mejor eso soluciona el problema pero si aun asi quieres hacerlo, usa acciones ya trae predefinidas las acciones de base de datos y te habilita y deshabilita los botones automaticamente
Lo que pasa es que estoy haciendo un Sistema de informacion y necesito documentar todos los metodos que tenga en mi formulario(Form) y si lo hago con el componente pues en realidad no sabria con certeza que se hace con los metodos del componente, encambio si hago mi propio metodo podria con mas facilidad documentarlo, aparte de eso estoy trbajando a nivel de capas(capa de Negocio,capa de datos y capa de presentacion) y por comodidad debo hacerlo asi.
Pero seria bueno que me dijeras como puedo personalisar el DBNavigator para ponerle imagenes diferentes en cada botoncito, etiquetas,etc.
Seria muy interesante aprender hacerlo pero quiero decirte que trabajo con Delphi 7.;)

Lepe 27-11-2008 12:19:39

Para cambiar los iconos, busca un archivo llamado "dbctrls.rc" en la carpeta de Borland\delphi7, lo puedes abrir con un editor de recursos y modificar las imágenes a voluntad y después compilar para obtener el .res final.

Saludos

rgstuamigo 27-11-2008 20:42:55

Te cuento Lepe que no hay ese archivo que mencionas,lo he buscado por todos lados, incluso con el buscador de Windows(el perrito):) y nada ....

roman 27-11-2008 21:12:54

1 Archivos Adjunto(s)
Tal como dicen, se pueden personalizar las imágenes de los botones:



Una forma de hacerlo es cargando cada imagen durante la ejecución. Aquí pongo el ejemplo de la imagen, con todo y el archivo de recursos que contiene las imágenes.

// Saludos

Caral 27-11-2008 21:18:05

Hola
Roman da un error:
Falta este archivo: {$R windowsxp.res}
No lo encuentro.
Saludos

roman 27-11-2008 21:25:10

Quita esa línea y añade un XPManifest (o no, esa parte es sólo para la vista estilo XP)

// Saludos

Caral 27-11-2008 21:49:34

Hola
Perfecto, gracias
Saludos

rgstuamigo 27-11-2008 21:58:09

Gracias "Cuate" Roman.....:D:)

rastafarey 01-12-2008 13:38:46

Resp
 
Si quieres evitarte el codigo de lso botones puedes usar un TAction del tipo de desees y lo enlasar al boton y listo.

rgstuamigo 01-12-2008 20:36:14

Hola rastafarey Gracias por la sugerencia ,pero dime donde encuentro ese componente TAction y como se utiliza?:confused:. Mejor si me das un ejemplo...
Saludos...:cool:

rastafarey 03-12-2008 13:47:00

resp
 
El apaleta estardar se llama actions

rastafarey 03-12-2008 14:08:11

Resp
 
Perdon.

Paleta Stardard Componente TActionList

rgstuamigo 04-12-2008 19:37:23

Cita:

Paleta Stardard Componente TActionList
Con razon no lo encontraba pues es TActionList y no TAction:rolleyes:..
Gracias por la aclacion.......;)

egostar 04-12-2008 20:20:14

Yo te recomiendo que uses TActionManager en lugar del TActionList. :cool:

Salud OS

rgstuamigo 04-12-2008 20:26:25

Cita:

Yo te recomiendo que uses TActionManager en lugar del TActionList. :cool:
Y como lo utilizaria...?:confused:¿De que forma?¿Y por que no el TActionList y cual seria la diferencia?...

egostar 04-12-2008 20:38:20

Cita:

Empezado por rgstuamigo (Mensaje 329684)
Y como lo utilizaria...?:confused:¿De que forma?¿Y por que no el TActionList y cual seria la diferencia?...

En escencia el ActionManager es una version mejorada del ActionList, pero con algunas caracteristicas adicionales muy interesantes.

Salud OS

roman 04-12-2008 20:51:54

Y, para quienes no pudimos asistir a tu plática, ¿podrías decirnos por qué recomendarias el ActionManager en este caso?

// Saludos

rgstuamigo 04-12-2008 20:53:28

Cita:

En escencia el ActionManager es una version mejorada del ActionList, pero con algunas caracteristicas adicionales muy interesantes.
Que yo sepa el componente TActionManager es un componente para creaerse acciones que otros componentes como el TActionMainMenuBar,TActionToolBar,etc, utilisan para ejecutarlas.
Claro que tambien los items de los TMainMenu tambien pueden utilizar estas acciones,tambien los TButton,TChekBox's,TRadioButton,etc de ahi que cada uno de estos componentes tiene una propiedad en rojo que se llaman Action, a la cual enganchamos la accion que hemos creado en el componente TActionManager.
Pero que tiene que ver esto con el componente TDBNavigator para personalisarlo...?:confused:

egostar 04-12-2008 21:00:04

Cita:

Empezado por rgstuamigo (Mensaje 329691)
Que yo sepa el componente TActionManager es un componente para creaerse acciones que otros componentes como el TActionMainMenuBar,TActionToolBar,etc, utilisan para ejecutarlas.
Claro que tambien los items de los TMainMenu tambien pueden utilizar estas acciones,tambien los TButton,TChekBox's,TRadioButton,etc de ahi que cada uno de estos componentes tiene una propiedad en rojo que se llaman Action, a la cual enganchamos la accion que hemos creado en el componente TActionManager.
Pero que tiene que ver esto con el componente TDBNavigator para personalisarlo...?:confused:

Que tambien cuenta con las acciones para recorrer los registros de una base de datos y esas acciones las puedes vincular con cualquier componente visual los cuales podras personalizar como quieras.

Salud OS

rgstuamigo 04-12-2008 21:05:28

Cita:

Que tambien cuenta con las acciones para recorrer los registros de una base de datos y esas acciones las puedes vincular con cualquier componente visual los cuales podras personalizar como quieras.
Pero como logro esto?....:confused: esto es nuevo para mi... podrias aclararnos las dudas?

roman 04-12-2008 21:32:31

Si usas un ActionList, dale doble click para que se abra el editor de acciones. Ahí, desde su menú contextual escoge la opción "New standard action". Te parecerá una lista de las acciones predefinidas por categoría. En la categoría DataSet escoges las acciones deseadas, como, por ejemplo, TDataSetPrior y TDataSetNext. Esas acciones se las asignas a los botones que desees y automáticamente esos botones ejecutarán las acciones.

Por lo general, las acciones se asociarán automáticamente al datasource que tengas en el formulario o data module, pero puedes hacerlo tú mismo en la propiedad DataSource de la acción.

Dado que puedes asignar un ImageList al ActionList, y un IMageIndex (de ese ImageList) a cada acción, puedes de esa forma, colocar las imágenes que gustes en cada botón. Igualmente, por medio de las propiedades de las acciones, puedes asignar el texto y hint de los botones.

// Saludos

rgstuamigo 04-12-2008 21:48:33

Cita:

Si usas un ActionList, dale doble click para que se abra el editor de acciones. Ahí, desde su menú contextual escoge la opción "New standard action". Te parecerá una lista de las acciones predefinidas por categoría. En la categoría DataSet escoges las acciones deseadas, como, por ejemplo, TDataSetPrior y TDataSetNext. Esas acciones se las asignas a los botones que desees y automáticamente esos botones ejecutarán las acciones.
Muy Interesante cuate roman, pero seria bueno que egostar nos diga como se haría, con el componente TActionManager.:confused:
Saludos..

roman 04-12-2008 21:54:11

Esteee... Pues exactamente igual. Sigue las instrucciones anteriores con un ActionManager y obtienes, en este caso, los mismo.

// Saludos

egostar 04-12-2008 22:06:42

Cita:

Empezado por roman (Mensaje 329709)
Esteee... Pues exactamente igual. Sigue las instrucciones anteriores con un ActionManager y obtienes, en este caso, los mismo.

// Saludos

Exactamente, ni mas ni menos.

Salud OS

rgstuamigo 04-12-2008 22:10:08

ok... Muchas gracias...;)

egostar 04-12-2008 22:14:14

Hola

Aprovechando este asunto, algo que es muy interesante de ActionManager, es que realmente puedes prersonalizar tus aplicaciones, en combinación con otros componentes como el ControlBar, ToolBar, ActionToolBar y CustomizeDlg, Botones, puedes en tiempo de ejecución "personalizar" tu interfaz gráfica de modo que puedes quitar y poner botones y guardar esa "vista" de tu aplicación en un archivo para que cuando vuelvas a abrir tu aplicación esté como la dejaste, cosa que no puedes hacer con el ActionList.

Salud OS


La franja horaria es GMT +2. Ahora son las 14:48:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi