Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2005
Clantt Clantt is offline
Miembro
 
Registrado: abr 2004
Ubicación: Tarija
Posts: 34
Poder: 0
Clantt Va por buen camino
Wink Forms como el msn

Hola amigos estoy tratando de crear ventanas que se abran en tiempo de ejecución, pero que sean una nueva ventana asi como otro programa, recuerdan el msn cuando inician conversación con alguien se levanta otra ventanita en la barra de tareas cosa que si cierro la principal no se cierren las otras ventanitas.
Yo probe esto pero no funcionó?
Código Delphi [-]
... var 
 prueba : Tform;
 begin
    prueba := Tform.create(application);
    prueba.show;
 end;
Por otro lado, como hago para que además de crearme la ventana necesito unos campos Memos y como hago para tener el control de esos memos desde mi forma principal.

La verdad esto me esta rompiendo la cabeza alguna ayuda por fa...
Responder Con Cita
  #2  
Antiguo 17-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Clantt
que si cierro la principal no se cierren las otras ventanitas.

El problema es que Delphi siempre se cerrará cuando se cierre el formulario principal. El formulario principal es el primero que se crea mediante

Application.CreateForm(...);

en el dpr.

CreateForm asigna a la propiedad MainForm (de solo lectura) del objeto Application el formulario creado. Cuando un formulario se cierra pregunta si él es el principal

if Application.MainForm = Self then Application.Terminate

y Application.Terminate es quien se encarga de terminar la aplicación.

Con más precisión, Application.Terminate ocasiona que la propiedad Terminated de Application sea true lo cual es la condición de salida del ciclo principal en Application.Run:

Código Delphi [-]
repeat
  try
    HandleMessage;
  except
    HandleException(Self);
  end;
until Terminated

Dos opciones que se me ocurren ahora son:

1. Usas un formulario principal de palo que esté escondido y un segundo formulario que haga las veces del principal.

2. Alteras la forma en que Delphi maneja el ciclo principal. Por ejemplo, sustituyes todos los

Application.CreateForm(TFormN, FormN)

por

FormN := TFormN.Create(Application);

y sustituyes la línea

Application.Run

en el dpr por tu propio ciclo:

Código Delphi [-]
repeat
  try
    Application.HandleMessage;
  except
    Application.HandleException(Application);
  end;
until Application.Terminated;

Claro que en este caso tienes que asegurarte de que en algún momento se cierre la aplicación (usando, por ejemplo, Application.Terminate) o podría sucederte que se cierren todos los formularios y la aplicación se quede colgada.

Para ello podrías agregar en el evento OnClose de cada formulario algo como

Código Delphi [-]
Action := caFree;

if Screen.FormCount = 1 then
  Application.Terminate;

Esto asegurará que si el formulario que se cierra es el último entonces se llamará a Application.Terminate.

// Saludos
Responder Con Cita
  #3  
Antiguo 18-10-2005
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Usa los componentes TCoolTrayIcon

La ventaja es que tiene la opcion de cerrar y captura
el mensaje de Application.Terminate //creo que es este
y revisa si no hay un acondición dada, el cooldemo
tiene la opcion habilitada por un checkbox,
facilmente la pueda cambiar. por un codigo o la opcion
de una propiedad del componente.

DE esta manera tu forma principal no se cierra hasta que
como con el messenger usas la opcion de cerrar.
Yo lo he usado con un popupmenu, que se muestra por que
pongo la forma principal en el systray. igual que el messenger
puedo ocultar y mostrar la forma principal

ahora el demo que hice , anda por ahi perdido.
que implementa lo que dices. deja lo arreglo que
tengo uso unos componentes no estandar de delphi7
y te daria muchos errores al abrir. pues creo tu no los tienes.
mientras puedes familiarizarte con el cooltrayicon
Responder Con Cita
  #4  
Antiguo 18-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Clantt
cosa que si cierro la principal no se cierren las otras ventanitas.
¿Quién ha dicho que esa ventana es la principal?, A ti te parece que es la principal .

Creo que hay una solución bastante sencilla.

Creas una nueva ventana, será la principal, pero en el OnCreate, hará los siguiente:

Código Delphi [-]
application.ShowMainForm:= false;
-Crear y mostrar una segunda ventana que actuará de Principal 
(de cara al usuario)
Esta ventana, es la primera que pones en Projects, Options, en la zona de AutoCreate, y es la que mandas a cerrar desde un menu que diga Salir, (esta opción estará en la segunda ventana.

Las demás ventanas las creas dinámicamente desde la segunda Ventana y las liberas al cerrarlas, como éstas ya no son la principal, simplemente tu programa se quedará por ahí funcionando.

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: 18-10-2005 a las 09:06:21.
Responder Con Cita
  #5  
Antiguo 18-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Despues de releer todo el hilo, creo que la solución es mucho más simple de lo comentado en todos los mensajes, incluido el anterior posteado por mi.

Cita:
Empezado por Clantt
Hola amigos estoy tratando de crear ventanas que se abran en tiempo de ejecución, pero que sean una nueva ventana asi como otro programa,
Lo que quieres decir, es que cada ventana actue de forma independiente, es decir, si cierras una que no interfiera con las demás, y esto es intrinsecamente así, uuu sea sé, delphi funciona así.
Código Delphi [-]
... var 
 prueba : Tform;
 begin
    prueba := Tform.create(application);
    prueba.show;
 end;

Ahí tienes un error: estas poniendo Tform .... ¿pero qué Tform? TForm a secas es la clase base para todas las ventanas.

Si entiendo bien, tienes que hacer esto:
- Diseñas 3 ventanas form1, form2 y form3. (simplemente File --> new --> Form, 2 veces, para añadir los form2 y form3)
- Vas a Project, Options, y quitas el form2 y form3 de la zona Autocreate, y los pones en Available.
- en el Form1 pones 2 botones, y en sus eventos OnClick añades:
Código Delphi [-]
procedure Tform1.Form1Button1Click(Sender:TObject);
begin
if not Assigned(form2) then
  application.Createform(Tform2, Form2)
else
  Form2.Bringtofront;
end;

procedure Tform1.Form1Button2Click(Sender:TObject);
begin
if not Assigned(form3) then
  application.Createform(Tform3, Form3)
else
  Form3.Bringtofront;

end;

Tanto en form2 como en form3, en sus eventos Onclose añades:
Código Delphi [-]
Action := cafree;
formX := nil;
Donde X será el número 2 o bien 3.

Listo, ya tienes funcionando los form2 y form3 totalmente independientes, y desde form1 puedes crearlos.

Espero que sea lo que necesitas.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 18-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Listo, ya tienes funcionando los form2 y form3 totalmente independientes, y desde form1 puedes crearlos.
No entiendo a dónde quieres llegar con esto. En esta situación Form1 es el formulario principal y al cerrarlo se cerrará la aplicación así que estamos en las mismas.

Creo que lo más adecuado es lo que plantea JXJ:

1. En el evento OnCloseQuery del formulario principal pones Accept := false para que no se cierre y Hide para que se oculte y de la impresión de estar cerrado.

2. Colocas un icono en la bandeja del sistema que de la opción de terminar la aplicación con Application.Terminate.

// Saludos
Responder Con Cita
  #7  
Antiguo 18-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Simplemente espero una respuesta por parte de Clantt, a ver quién lleva la razón , atento a mis explicaciones maestro :
Cita:
Empezado por Clantt
Hola amigos estoy tratando de crear ventanas que se abran en tiempo de ejecución,
¿A partir de Tform?, no creo, puede que sea un error de transcripción... pero no puedo adivinarlo .
Cita:
Empezado por Clantt
pero que sean una nueva ventana asi como otro programa,
ummmm, Roman, el CreateProcess está de moda . Aquí me he pasado de listillo, pero bien es verdad que ateniendonos a la guia de estilo, puede interpretarse así.
Cita:
Empezado por Clantt
recuerdan el msn cuando inician conversación con alguien se levanta otra ventanita en la barra de tareas cosa que si cierro la principal no se cierren las otras ventanitas.
Clant dice la palabra "Cerrar la ventana principal", pero ¿de que forma la cierras?, porque si se refiere a pulsar la X de la ventana de contactos, todos sabemos que en realidad no se está cerrando, se ha programado para que se vaya al TrayIcon. Pero si usamos la opción Archivo -->Cerrar de la ventana de contactos, si se cierra todo, por ello, ¿a qué método de cerrar se está refiriendo? .

Lo dicho, Clantt nos dirá exactamente qué quiere hacer.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 18-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
porque si se refiere a pulsar la X de la ventana de contactos, todos sabemos que en realidad no se está cerrando, se ha programado para que se vaya al TrayIcon. Pero si usamos la opción Archivo -->Cerrar de la ventana de contactos, si se cierra todo, por ello, ¿a qué método de cerrar se está refiriendo? .
Pero aquí tú ya estás hablando específicamente del MSN. En una fría lógica, Clantt sólo se refiere al comportamiento de las ventanas. Ni tú, ni yo ni JXJ, sabemos, en este momento, si su intención siquiera abarca el introducir un icono en la bandeja del sistema. Bajo esta lógica fue mi primea respuesta.

// Saludos
Responder Con Cita
  #9  
Antiguo 18-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Estamos hablando por hablar , pero bueno, te contesto
Cita:
Empezado por roman
Pero aquí tú ya estás hablando específicamente del MSN.
El titulo del hilo es:"forms como el msn". Creo que puedo hablar especificamente del MSN
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 18-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Estamos hablando por hablar
sí, bueno. Esperemos que esto hilo no tenga el final de tantos otros donde el menos interesado es quien lo inicia.

Cita:
Empezado por Lepe
El titulo del hilo es:"forms como el msn". Creo que puedo hablar especificamente del MSN
O sea que si yo digo que quiero unos controles al estilo Office ¿tú inmediatamente supones que estoy haciendo un clon del Word?



// Saludos
Responder Con Cita
  #11  
Antiguo 19-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Por supuesto, y además te denuncio por plagio y por infringir las patentes
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #12  
Antiguo 20-10-2005
Clantt Clantt is offline
Miembro
 
Registrado: abr 2004
Ubicación: Tarija
Posts: 34
Poder: 0
Clantt Va por buen camino
Hola muchachos, para comenzar muchas gracias por interesarse en el tema, tube un percanse de un viaje por lo que no me pude conectar al foro para responder, espero no les haya causado molestia alguna.
Bueno el problema es el siguiente pasa que estoy haciendo un chat y en mi forma principal tengo una lista de usuarios, a la derecha un Memo y bueno para mandar algún mensaje primero seleccionas al usuario y luego escribes en el memo. Entonces yo quiero hacer que al seleccionar al usuario se cree otra ventana donde aparezca un memo para tener una charla privada y si selecciono otro usuario lo mismo. El problema sucede que creo la forma en tiempo de ejecusión pero no se como controlar al memo que esta dentro de la forma creada.
yo hago esto: Tengo una forma con un memo dentro que se crea por primera vez cuando hago el doble clic en el usuario luego le cambio el nombre.
Código Delphi [-]
Form2 := Tform2.create(application);
Form2.show;
Form2.name := 'nuevonombre';
.

Lo lógico sería que para tomar el control del memo solo haga esto no?
Código Delphi [-]
nuevonombre.memo1.items.add := 'cualquier cosa';

pero no funciona y si creo muchas formas mas con otros nombres tampoco sirve porque no puedo accesar al memo de cualquier nueva forma desde mi forma principal.

Por otro lado: Tampoco pude hacer es que al hacer doble clic en el usuario la nueva ventana que se cree aparezca como una nueva ventana en la barra de tareas como en el msn esas dos cosas me estan llevando mucho tiempo al parecer y sin resolver ninguna de ellas. Les agradesco alguna ayuada o algún manual para leerme que necesite. Adios.. y gracias de nuevo por contestar
Responder Con Cita
  #13  
Antiguo 20-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Para lo primero simplemente pon


Código Delphi [-]
Form2.memo1.items.add := 'cualquier cosa';

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:

Código Delphi [-]
type
  TForm2 = class(TForm)
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

implementation

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

// Saludos
Responder Con Cita
  #14  
Antiguo 20-10-2005
Clantt Clantt is offline
Miembro
 
Registrado: abr 2004
Ubicación: Tarija
Posts: 34
Poder: 0
Clantt Va por buen camino
Cita:
Empezado por roman
Para lo primero simplemente pon

Código Delphi [-]
 Form2.memo1.items.add := 'cualquier cosa';
Cita:
Empezado por roman

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.
Eso es exactamente lo que hice pero como tu dices no funciona si tengo varias conversaciones, la variable estaría ocupada, entonces la solución es que tengo que tener disponibles unos 20 forms uno para cada usuario que tenga, osea que finalmente tendría un máximo de 20 usuarios?.

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..
Responder Con Cita
  #15  
Antiguo 20-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
...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.
Responder Con Cita
  #16  
Antiguo 20-10-2005
Clantt Clantt is offline
Miembro
 
Registrado: abr 2004
Ubicación: Tarija
Posts: 34
Poder: 0
Clantt Va por buen camino
No entiendo nada, si puse mal el nombre del hilo, mil disculpas pero de todas formas alguna ayuda o sugerencia?
Responder Con Cita
  #17  
Antiguo 20-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Clantt
Al parecer mi lógica del chat esta errónea no crees?
No, no lo creo. Tal como la planteaste puede funcionar pero te hacen falta un poco de conocimientos técnicos para saber por dónde entrarle. Esto no tiene nada de malo, pero hay que solventarlo tarde o temprano.

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:


Código Delphi [-]
lbUsuarios.Items.Objects[Index]: TObject

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:
  1. lbUsuarios.ItemIndex te da el índice en la lista que ocupa el usuario
  2. Entonces lbUsuarios.Items.Objects[lbUsuarios.ItemIndex] es el objeto asociado a ese elemento de la lista.
  3. Al principio será nil pero es "la variable" en donde guardas el formulario que vas a crear:

    Código Delphi [-]
    var
      Ventana: TVentanaPrivado;
    
    begin
      // Creas el formulario para el privado
      Ventana := TVentanaPrivado.Create(Self);
    
      // Ajustas propiedades
      Ventana.Memo1.Text := 'Conversación privada con fulanito';
    
      // Muestras la ventana
      Ventana.Show;
    
      // Guardas la referencia a la ventana en la lista
      lbUsuarios.Items.Objects[lbUsuarios.ItemIndex] := Ventana
    end;
  4. Aquí, Ventana es una variable temporal, declarada en el evento OnDblClick o el método que uses para abrir el privado.

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á] ---------> +--------------------+
                  |                    |
                  |                    |
                  +--------------------+
En el chat se encuentran pablo, susana, teresa, lepe, juanito y tu mamá y tienes conversaciones privadas con pablo y 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:


Código Delphi [-]
var
  Ventana: TVentanaPrivado;

begin
  Ventana := TVentana(lbUsuarios.Items.Objects[Indice]);
end;

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
Responder Con Cita
  #18  
Antiguo 20-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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.

Código Delphi [-]
  PrivateChats: TObjectList;

// el usuario quiere abrir un chat:
- if not Assigned(PrivateChats) then
    PrivateChats := TobjectList.Create;

    Privatechat.Add(TchatPrivado.Create); // nueva ventana de chat

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #19  
Antiguo 20-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por roman
[lepe] -> nil
que yo apunto a nil, que yo apunto a nil, o es que soy nil,

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.
Responder Con Cita
  #20  
Antiguo 20-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
El objeto que se asocie con un usuario sería un TobjectList
¿¡¡Para qué!!? ¿Piensas mantener más de un privado con la misma persona? ¡Válgame dios! Se ve que me falta cultura chatera.

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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:37:30.


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