Actualizar un TreeView

Estoy desarrollando una aplicación con Delphi 5.0, en un entorno multiusuario, con tablas DBase IV.
En la aplicación hay un TreeView donde se van añadiendo nodos cuando añado un nuevo registro en una tabla dada(dependiendo de ciertas condiciones, es decir, no siempre se añadirá un nodo al TreeView cuando se añada un nuevo registro en la tabla), se modifica el icono del nodo cuando añado registros en otra tabla, se "mueve" el nodo de lugar en el TreeView(se cambia el parent del nodo),...
El problema es que cuando añado un nodo (o cambio el icono, o lo muevo de lugar) en un ordenador, no se ve en el resto de ordenadores.
La aplicación no es Cliente/Servidor (según creo, la mayor ventaja de este desarrollo es la reducción del tráfico en la red, y es algo que no me preocupa en exceso), aunque no habría ningún problema en hacerla C/S si fuera más adecuado.
Si me pudieras orientar un mínimo para solucionar el problema te lo agradecería.

1 Respuesta

Respuesta
1
Los demás nodos no se actualizan porque estas construyendo tu algoritmo en base a un evento que sucede de manera local.
Si mudas tu aplicación a C/S, sucederá exactamente lo mismo.
Lo que necesitas es determinar cuando alguna terminal genera un nuevo nodo para que puedas construir tu TreeView. ¿Cómo podrías hacer esto?. Tienes varias alternativas...
1. Utilizar sockets, donde entre dichos sockets se comuniquen los cambios que realizan al TreeView.
2. Centraliza una tabla donde se vayan agregando los nuevos nodos que deberán de actualizarse en las demás terminales.
3. Rastrea cada determinado tiempo los cambios que haya tenido la base de datos, si ha surgido alguno entonces actualias tu TreeView
4. Utiliza programación en múltiples capas, donde la penúltima capa le comunique a la capa nivel de usuario que ha habido un cambio en la BD del TreeView.
5. Y por ultimo... considera cambiar tu TreeView por una version de TDBTreeView, que puedes bajarte de Torrys y que automáticamente actualice los cambios que un usuario realiza a la BD
Gracias por la respuesta.
Había optado por la tercera opción, pero no se si era la correcta.
Un saludo, y de nuevo, gracias por las molestias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas