Componente Presence — sgcHTML | eSeGeCe

Presence

TsgcHTMLComponent_Presence — un listado de "quién está conectado", renderizado como una pila de avatares superpuestos o una lista, con indicadores de estado y actualizaciones en vivo por WebSocket, en Delphi, C++ Builder y .NET.

TsgcHTMLComponent_Presence

Añade usuarios con AddUser, limita cuántos se muestran con MaxVisible, luego lee la propiedad HTML — o envía un cambio de estado a los clientes abiertos con GetUserFragmentHTML.

Clase del componente

TsgcHTMLComponent_Presence

Genera

Pila de avatares o lista, más CSS encapsulado

Familia

Chat e IA

Lenguajes

Delphi, C++ Builder, .NET

Añade usuarios, renderízalo, envía cambios de estado

Llama a AddUser para cada persona, lee HTML para el renderizado inicial, y luego llama a SetUserStatus y envía GetUserFragmentHTML cuando cambie el estado de alguien.

uses
  sgcHTML_Component_Presence;

var
  oPresence: TsgcHTMLComponent_Presence;
begin
  oPresence := TsgcHTMLComponent_Presence.Create(nil);
  try
    oPresence.PresenceID := 'roster';
    oPresence.Layout := plAvatars;
    oPresence.MaxVisible := 5;
    oPresence.Title := 'Online';

    oPresence.AddUser('u1', 'Ana Torres', psOnline);
    oPresence.AddUser('u2', 'Marc Bell', psAway, '', 'Back at 3pm');
    oPresence.AddUser('u3', 'Kenji Ito', psBusy);

    WebModule.Response := oPresence.HTML;   // avatar stack + scoped CSS
  finally
    oPresence.Free;
  end;
end;

// Push a status change to every connected client, no full re-render:
oPresence.SetUserStatus('u2', psOnline);
TsgcHTMX_Engine_Server.BroadcastFragment(oPresence.GetUserFragmentHTML('u2'));
// includes: sgcHTML_Component_Presence.hpp

TsgcHTMLComponent_Presence *oPresence = new TsgcHTMLComponent_Presence(NULL);
try
{
  oPresence->PresenceID = "roster";
  oPresence->Layout = plAvatars;
  oPresence->MaxVisible = 5;
  oPresence->Title = "Online";

  oPresence->AddUser("u1", "Ana Torres", psOnline);
  oPresence->AddUser("u2", "Marc Bell", psAway, "", "Back at 3pm");
  oPresence->AddUser("u3", "Kenji Ito", psBusy);

  String html = oPresence->HTML;   // avatar stack + scoped CSS

  // Push a status change to every connected client:
  oPresence->SetUserStatus("u2", psOnline);
  TsgcHTMX_Engine_Server::BroadcastFragment(oPresence->GetUserFragmentHTML("u2"));
}
__finally
{
  delete oPresence;
}
using esegece.sgcWebSockets;

var presence = new TsgcHTMLComponent_Presence();
presence.PresenceID = "roster";
presence.Layout = TsgcHTMLPresenceLayout.plAvatars;
presence.MaxVisible = 5;
presence.Title = "Online";

presence.AddUser("u1", "Ana Torres", TsgcHTMLPresenceStatus.psOnline);
presence.AddUser("u2", "Marc Bell", TsgcHTMLPresenceStatus.psAway, "", "Back at 3pm");
presence.AddUser("u3", "Kenji Ito", TsgcHTMLPresenceStatus.psBusy);

string html = presence.HTML;   // avatar stack + scoped CSS

// Push a status change to every connected client, no full re-render:
presence.SetUserStatus("u2", TsgcHTMLPresenceStatus.psOnline);
TsgcHTMX_Engine_Server.BroadcastFragment(presence.GetUserFragmentHTML("u2"));

Propiedades y métodos clave

Los miembros que usarás con más frecuencia.

Añadir usuarios

AddUser(aId, aDisplayName, aStatus, aAvatarURL, aStatusText) inserta o actualiza una entrada del listado: un Id existente se actualiza en el mismo lugar.

Estado

TsgcHTMLPresenceStatuspsOnline, psAway, psBusy, psOffline. SetUserStatus(aId, aStatus, aStatusText) actualiza solo el indicador de estado y su texto.

Diseño

Layout elige plAvatars (pila de avatares superpuestos) o plList (filas de nombre + estado); AvatarSize define el diámetro del avatar en píxeles.

Límite de desbordamiento

MaxVisible (por defecto 5) limita cuántos usuarios se muestran antes de que aparezca un chip "+N"; todos los usuarios permanecen en el marcado, así que un envío posterior aún los encuentra.

Cabecera

Title y ShowCount renderizan una cabecera con una insignia de recuento de conectados; GetOnlineCount excluye a los usuarios psOffline.

Actualizaciones en streaming

GetUserFragmentHTML(aId) (también emite una eliminación una vez que se llama a RemoveUser), GetCountFragmentHTML y GetMoreFragmentHTML alimentan TsgcHTMX_Engine_Server.PushFragment / BroadcastFragment.

Sigue explorando

Ayuda en líneaReferencia completa de la API y guía de uso para este componente.
Todos los componentes de sgcHTMLExplora la matriz completa de más de 80 componentes.
Descargar prueba gratuitaLa prueba de 30 días incluye los proyectos de demostración 60.HTML.
PreciosLicencias Single, Team y Site con código fuente completo.

¿Listo para empezar?

Descarga la prueba gratuita y añade un listado de presencia en vivo a tu aplicación web Delphi, C++ Builder o .NET.