[thgg] list kontaktow 2

0

Siemka. Pobralem liste userow z serwera, ale teraz moj problem wyglada tak, ze wszysyc sa niedostepni i nie maja opisow w statusie... o co chodzi? :-/

0

AFAIK w GG pobieranie listy kontaktów z serwera i sprawdzanie statusów to dwie różne rzeczy. Jak już pobierzesz listę kontaktów, to trzeba wysłać o każdy kontakt pytanie do serwera, jaki ma status.

0

No to ostro ;]
Wie ktos moze jak pobrac statusy z serwera gg poprzez thgg? ;)

0

Informacje na temat użytkowników wyświetliłeś pewnie w zdarzeniu onUsersListChange?
Zauważyłem, że występuje troche za wcześnie i zmiana informacji nie jest widoczna.
Możesz zrobic tak, że do onUsersListChange wpakujesz aktywowanie jakiegoś timera a w nim dopiero wyświetlenie informacji na temat statusów.

PS. W ogóle jesteś podłączony do serwera? ;)

0

Informacje na temat użytkowników wyświetliłeś pewnie w zdarzeniu onUsersListChange?
Zauważyłem, że występuje troche za wcześnie i zmiana informacji nie jest widoczna.
Możesz zrobic tak, że do onUsersListChange wpakujesz aktywowanie jakiegoś timera a w nim dopiero wyświetlenie informacji na temat statusów

Nie trzeba żadnych Timerów. W Helpie jest dokładnie opisane.. zdarzenie:

OnUsersListChange: TNotifyEvent;
Występuje w przypadku jakiejkolwiek zmiany na liście kontaktów (np. dodanie, usunięcie użytkownika itd).

OnUsersGetFromServer: TNotifyEvent;
Występuje w momencie pobrania listy kontaktów z serwera GG.

OnUserChangeStatus: procedure(Sender: TObject; UserIndex: Integer; GGNumber: Integer; Status: TUserStatus; Description: string) of object;
Użytkownik na liście kontaktów zmienił status, parametry to:
UserIndex - numer index użytkownika na liście kontaktów
GGNumber - numer GG
Status - nowy status
Description - nowy opis

Te 3 zdarzenia najlepiej dać pod jedną procedurę, gdzie lista będzie odświeżana, czyli mniej więcej:

procedure TForm1.ListRefresh; // odswiezenie listy kontaktow
var
  i: Integer;
  Item: TListItem;
  stat: string;
begin
  ListView1.Clear;
  ListView1.Items.BeginUpdate;
  for i := 0 to HGG1.Users.Count - 1 do
  begin
    Item := ListView1.Items.Add;
    Item.Caption := IntToStr(i);
    Item.SubItems.Add(IntToStr(HGG1.Users[i].GGNumber));
    Item.SubItems.Add(HGG1.Users[i].Name);
    case HGG1.Users[i].Status of
      usNotAvailable: stat := 'niedostepny';
      usAvailable: stat := 'dostepny';
      usBusy: stat := 'zaraz wracam';
      usInvisible: stat := 'niewidoczny';
      usBlocked : stat := 'user cie zablokowal';
    end;
    Item.SubItems.Add(stat);
    Item.SubItems.Add(HGG1.Users[i].Description);
    Item.SubItems.Add(HGG1.Users[i].IP);
    Item.SubItems.Add(IntToStr(HGG1.Users[i].MaxImageSize));
    Item.SubItems.Add(BoolToStr(HGG1.Users[i].Friend, True));
    Item.SubItems.Add(HGG1.Users[i].ClientVersion);
  end;
  ListView1.Items.EndUpdate;
end;

.. i zdarzenia czyli:

procedure TForm1.HGG1UsersListChange(Sender: TObject);
begin
  ListRefresh;
end;

procedure TForm1.HGG1UserChangeStatus(Sender: TObject; UserIndex,
  GGNumber: Integer; Status: TUserStatus; Description: String);
begin
  ListRefresh;
end;

procedure TForm1.HGG1UsersLoadFromFile(Sender: TObject);
begin
  ListRefresh;
end;

procedure TForm1.HGG1UsersGetFromServer(Sender: TObject);
begin
  ListRefresh;
  memo1.Lines.Add('pobrano z serwera')
end;
0

noooo :) dzieki :)

0

hej cos mi to nie chce działac nie wiem czemu nozesz mi podesłac rozwiazanie był bym wdzieczny [email protected]

// do kogo rozmawiasz, nekrofilu? wątek ma trzy lata! - Ł

0

wiem ze ma trzy lata własnie nigdy tego nie robiłem i chciałem spróbowac i nic nie działa

0

erwyn, pomyśl skoro wątek ma trzy lata to dotyczy pewnie starej wersji protokołu (gg6.0 [???] [???]) teraz jest wersja 7.x (pewnie powoli odchodzi do lamusa) a najbardziej aktualną jest 8.0. Na pewno wiele rzeczy uległo zmianie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1