![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Para lo primero simplemente pon
Cambiar el nombre de un formulario durante la ejecución, normalmente no tiene sentido. El problema aquí surgirá cuando quieras mantener más de una conversación privada a la vez. No puedes usar la misma variable Form2 para todas ellas. Debes usar una variable distinta por cada ventana que uses. Para lo segundo, debes redefinir el método CreateParams del formulario del privado como sigue:
// Saludos |
|
#2
|
|||
|
|||
|
Cita:
Cita:
Al parecer mi lógica del chat esta errónea no crees? mi cliente debería ser cada ventanita no la ventana principal? ¿Creo que estoy frito, por que la verdad no tengo idea de como hacerlo? espero alguna sugerencia saludos.. |
|
#3
|
||||
|
||||
|
Cita:
Vamos a ver; obviamente no puedes declarar tantas variables como ventanas posibles ya que no puedes saber cuántas de ellas habrá en un momento dado. Entonces lo que necesitas es una lista de objetos a la que puedas agregar o quitar elementos dinámicamente. Dices que en tu ventana principal tienes una lista de usuarios. Si esta lista es un ListBox entonces ya tienes la mitad del camino recorrido. La propiedad Items del ListBox es un objeto de tipo TStrings y como tal, tiene una propiedad Objects:
que viene a ser un arreglo o lista de objetos, uno por cada elemento de Items, o sea de lbUsuarios (el ListBox de usuarios). Como un formulario es un objeto, bien puedes utilizar esto para guardar referencias a las ventanas de privados. Si no tienes privado con un usuario, el objeto correspondiente será nil. Para fijar ideas, vamos a describir lo que pasaría cuando haces doble click sobre un usuario de la lista:
Así, en un momento dado, tendrías la siguiente situación, esquemáticamente hablando: Código:
[pablo] --------> +--------------------+
[susana] -> nil | |
[teresa] -> nil | |
[lepe] -> nil +--------------------+
[juanito] -> nil
[mamá] ---------> +--------------------+
| |
| |
+--------------------+
Los otros elementos son nil pues no has iniciado conversaciones con ellos. Si tienes que interactuar con la ventana de pablo, por ejemplo, primero que nada obtienes el índice que ocupa en la lista. Éste puede ser ItemIndex como antes, si es el que esá seleccionado o bien el obtenido de lbUsuarios.Items.IndexOf('pablo') Una vez hecho esto, obtienes la referencia al privado:
Y ya pudes interactuar usando la variable local Ventana. Hay muchos otros detalles que tendrás que tomar en cuenta. Por ejemplo, ¿qué pasa cuando cierres una ventana de privado? Lo más sensato es que liberes su memoria poniendo Action := caFree en su evento OnClose. Pero de alguna manera tienes que avisarle a la ventana principal para que se entere de que ya no hay privado y vuelva a poner en nil la referencia correspondiente. Pero por el momento ya tienes con qué comenzar. Paralelamente te recomiendo que leas algún libro básico de Delphi. En la página de Ian Marteens podrás bajar gratuitamente La Cara Oculta de Delphi 4, que aunque no coincida conla versión que uses de Delphi, te servirá perfectamente para las nociones generales. // Saludos |
|
#4
|
||||
|
||||
|
...Pues no tiene nada que ver con el msn, roman, apúntate 2, una por responderle y otra hacerme callar la boca.... de momento
![]() saludos gente.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#5
|
|||
|
|||
|
No entiendo nada, si puse mal el nombre del hilo, mil disculpas pero de todas formas alguna ayuda o sugerencia?
|
|
#6
|
||||
|
||||
|
Clantt no te disculpes era una serie de comentarios que teniamos roman y yo, no tiene nada que ver contigo
![]() No sé si aparte de tener a los usuarios en un Listbox, mantienes la lista de usuario de otra forma. La idea es que asocies con un nick Una lista de ventanas privadas abiertas, y esas ventanas las añades a un TObjectList. Ya no necesitas 20 formas.
saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#7
|
||||
|
||||
|
Cita:
![]() Bromas aparte, también pensé en esa posibilidad roman, pero en ese caso, un usuario solo puede tener un chat privado con otro usuario. Uniendo las dos ideas: El objeto que se asocie con un usuario sería un TobjectList, que se creará cuando se abra el primer chat privado, y dentro de esa lista de objetos, estan enumeradas todos los chats privados. Edito: Mi idea es que se cree el TobjectList sobre el usuario del chat, es decir, yo entro en el chat, pues mi Objets[itemindex] es donde se crea la lista de ventanas. De esta forma tienes un acceso rápido a todas los privados. Con la forma de roman tienes que recorrer todos los elementos del listbox para saber si tiene privados abiertos o no. Con lo que yo propongo, accedes a un solo objeto y despues deduces qué usuario es. Acabo de caer en un detalle. Yo abro un privado con pablo. Pablo se va del chat, pero deja abierto el privado. Ahora yo no puedo acceder al privado con pablo, porque su objeto se abrá liberado. saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 20-10-2005 a las 18:12:49. |
|
#8
|
||||
|
||||
|
Cita:
Esa lista, la de pablo, susana, teresa, etc., es la que tú verías en tu ventana, y sólo necesitas (a lo sumo) una ventana de privado por cada persona en esa lista. En mi ejemplo, el usuario mantiene dos conversaciones privadas, con pablo y mamá. No compliquemos las cosas. Y en mi opinión, en este caso es más adecuado un TStrings, como lbUsuarios.Items, que un TObjectList, precisamente porque el TStrings mantiene además el nombre del usuario correspondiente. EDITO: Para que quede más claro: si teresa tiene conversaciones privadas con otras personas, eso no importa, ya que ella tendrá su propia ventana de usuarios en su aplicación. // Saludos Última edición por roman fecha: 20-10-2005 a las 18:13:10. |
|
#9
|
||||
|
||||
|
He editado mi mensaje y puede que pases esto por alto:
Acabo de caer en un detalle. Yo abro un privado con pablo. Pablo se va del chat, pero deja abierto el privado. Ahora yo no puedo acceder al privado con pablo, porque su objeto se abrá liberado.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|