Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pantalla estilo Twitter (https://www.clubdelphi.com/foros/showthread.php?t=79365)

jars 28-06-2012 14:48:29

Pantalla estilo Twitter
 
Buenos dias amigos.
Necesito armar una pantalla donde pueda ir mostrando las conversaciones entre usuarios tal como lo hace Twitter, es decir a la izquierda el avatar y al lado el texto de la conversación. No tengo idea de que control se puede uasr que convine ambos componentes.
Alguno tiene idea? Desarrollo con D7.

Gracias

ecfisa 28-06-2012 15:13:29

Hola jars.

Revisa si no te sirve el primero de los enlaces que hay al pié de esta misma página.

Saludos.

jars 28-06-2012 15:34:38

Gracias Ecfisa pero el hilo se refiere al uso de la api de twitter y ese no es mi problema.
La cosa es que necesito alguna idea de como ir mostrando sobre algun control, el avatar y el texto ingresado por cada uno. No se si habra algun control?

roman 28-06-2012 19:20:22

1 Archivos Adjunto(s)
Puedes implementar una solución rudimentaria con frames.

Te pongo un ejemplo adjunto a este mensaje. Son dos archivos: uTwitterEntry.dfm y uTwitterEntry.pas. Añade la unidad uTwitterEntry a tu proyecto e inserta un Frame en un formulario (primer icono de la pestaña Standard). Te aparecerá una ventana pidiéndote seleccionar el frame deseado. Escoge frmTwitterEntry y listo, tendrás algo así:



Al frame insertado puedes cambiarle el tamaño y los controles dentro se autoajustarán. También puedes cambiar los textos de cada control. Puedes insertar tantos frames como desees.

// Saludos

jars 28-06-2012 19:51:43

Muchas gracias roman, lo voy a probar.
Un abrazo

jars 28-06-2012 21:18:21

Roman, podrias darme un ejemplo de como ir agregando frames a la pantalla en runtime?
Gracias

roman 28-06-2012 21:25:55

Sí claro,

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TfrmTwitterEntry.Create(Self) do
  begin
    Left := 8;
    Top := 8;
    Parent := Self; // Aquí puedes poner otro contenedor, por ejemplo, un Panel

    imgAvatar.Picture.LoadFromFile('miavatar.bmp');
    lblUser.Caption := 'Román';
    lblUserName.Caption := '@roman';
  end;
end;

// Saludos

jars 28-06-2012 22:03:57

Nuevamente gracias Roman.

roman 28-06-2012 22:16:02

De hecho, puedes facilitar la inserción múltiple poniendo un ScrollBox (pestaña Additional) y sustituyendo el código anterior por este otro:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TfrmTwitterEntry.Create(Self) do
  begin
    { Esto es necesario para que puedas insertar varios frames }
    Name := '';

    {
      Esto hará que los nuevos frames se vayan colocando
      debajo del último y abarcando todo el ancho del scrollbox
    }
    Align := alTop;  

    { Insertas en el ScrollBox }
    Parent := scbTwits;

    lblUser.Caption := 'Román';
    lblUserName.Caption := '@roman';
  end;
end;

// Saludos

jars 28-06-2012 22:29:53

Copie el codigo y funciona perfecto solo que los nuevos frames se van colocando por encima del anterior, como haria para que queden en orden cronologico, es decir uno debajo del otro?

roman 28-06-2012 22:38:05

¡Ah! No me había percatado de eso. Intercambia las líneas del Align y del Parent.

// Saludos

jars 29-06-2012 14:16:11

Buen dia Roman.
No se pero le cambie el orden y los sigue ordenando arriba.
A vos te funciona bien asi?

roman 29-06-2012 17:28:39

1 Archivos Adjunto(s)
Sí, tienes razón, sigue poniendo el nuevo tweet por encima de los anteriores. Parece que el orden de alineado depende de la posición original del control, que, por defecto, será en 0, 0.

Me ha funcionado forzando entonces primero un alineado inferior y luego el superior:

Código Delphi [-]
Parent := Panel1;
Align := alBottom;
Align := alTop;

De todas formas, te pongo un ejemplo completo. Hay algunos cambios minúsculos en la unidad uFrmTwitterEntry (como cambiar Twit por Tweet que es lo correcto) por lo que te sugiero las reemplaces.

// Saludos

jars 29-06-2012 17:36:54

Excelente Roman.
Mil gracias.


La franja horaria es GMT +2. Ahora son las 01:15:46.

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