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? :-/
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.
No to ostro ;]
Wie ktos moze jak pobrac statusy z serwera gg poprzez thgg? ;)
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? ;)
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;
noooo :) dzieki :)
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! - Ł
wiem ze ma trzy lata własnie nigdy tego nie robiłem i chciałem spróbowac i nic nie działa
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...