|
#1
|
|||
|
|||
TListBox
Уважаемые, имеется ли у итемов копоненты TListBox что-нибудь вроде параметра Data как у итемов TListView?
|
#2
|
||||
|
||||
Цитата:
Код:
ListBox1.Items.Objects[ItemIndex]:=... |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Кодер (19.08.2012)
|
#3
|
|||
|
|||
Благодарствую
|
#4
|
|||
|
|||
Загружаю из интернета аватары пользователей. Соответственно каждая картинка должна быть привязана к некому userid. После чего с этими изображениями нужно работать.
Вопрос: Как правильно организовать хранение данных? ЗЫ: В моих предположениях необходимо объявить глобально массив из TBitmap и забивать в него все изображения, но как их индексировать? Как им присвоить некий идентификатор, чтобы потом не составила труда в поиске по id? |
#5
|
||||
|
||||
Тогда уж запись:
Код:
type TAvatar = record Bitmap : TBitmap; ID : Integer; end; var Avatar : array of TAvatar; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
||||
|
||||
Можно использовать TList:
Код:
type TAvatar = class Bitmap : TBitmap; ID : Integer; end; var Avatar : TAvatar; List : TList; ... List := TList.Create; ... Avatar := TAvatar.Create; Avatar.Bitmap := TBitmap.Create; Avatar.Bitmap.Assign(Нужный битмап); Avatar.ID := Нужный ID; List.AddObject('', Avatar); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
||||
|
||||
Цитата:
Код:
type TMyBitmap = class(TBitmap) public UserID: Integer; end; ... var abmp: array of TMyBitmap; begin SetLength(abmp, 2); abmp[0]:=TMyBitmap.Create; abmp[0].LoadFromFile('1.bmp'); abmp[0].UserID:=1248; abmp[1]:=TMyBitmap.Create; abmp[1].LoadFromFile('2.bmp'); abmp[1].UserID:=5555; ShowMessage(IntToStr(abmp[0].UserID)); ShowMessage(IntToStr(abmp[1].UserID)); end; Пишу программы за еду. __________________ |
#8
|
||||
|
||||
Лучше коллекции пользовать, с массивами труднее, в плане удаления произв. элементов.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
||||
|
||||
Код:
var lbmp: TList; bmp: TMyBitmap; begin lbmp:=TList.Create; bmp:=TMyBitmap.Create; bmp.LoadFromFile('1.bmp'); bmp.UserID:=1248; lbmp.Add(bmp); bmp:=TMyBitmap.Create; bmp.LoadFromFile('2.bmp'); bmp.UserID:=5555; lbmp.Add(bmp); ShowMessage(IntToStr(TMyBitmap(lbmp[0]).UserID)); ShowMessage(IntToStr(TMyBitmap(lbmp[1]).UserID)); end; ну и не забываем про уничтожение объектов! добавлено позже: упс, пока перекуривал...) Пишу программы за еду. __________________ |
#10
|
|||
|
|||
особого отличия коллекции от списка так и не увидел, но доверюсь мнению знающих людей.
Кому будет интересно, вот хорошая статья про коллекции: http://www.delphisources.ru/pages/fa...llections.html |
#11
|
|||
|
|||
Использую TStringList для хранения объектов типа TUser.
Код:
type TUser = class online:byte; uid,fname,lname:string; photo:TBitmap; end; В ходе работы программы добавляю объекты tempuser в переменную friends: Код:
tempuser.uid:=Pars('uid',answer); tempuser.fname:=Pars('first_name',answer); tempuser.lname:=Pars('last_name',answer); tempuser.online:=StrToInt(Pars('online',answer)); ... tempuser.photo.Assign(jpeg); ... Friends.AddObject(tempuser.uid,tempuser); Далее пытаюсь считать эти самые объекты и добавить их в ListBox Код:
lb_users.Items.BeginUpdate; lb_users.Clear; memo1.Lines.Add('count='+IntToStr(friends.Count)); SelUser:=TUser.Create; for i := 0 to friends.Count-1 do begin if friends.Objects[i]=nil then memo1.Lines.Add('nil'); SelUser:=TUser(TObject(friends.Objects[i])); memo1.Lines.Add(SelUser.fname+' '+SelUser.lname); memo1.Lines.Add('online='+Inttostr(SelUser.online)); if SelUser.online = online then begin lb_users.AddItem(SelUser.fname+' '+SelUser.lname, TObject(StrToInt(SelUser.uid))); memo1.Lines.Add('i='+Inttostr(i)+' user='+SelUser.fname+' '+SelUser.lname); end; end; SelUser.Free; lb_users.Items.EndUpdate; При этом в LIstBox ничего не добавляется. В чем ошибка? |
#12
|
|||
|
|||
Как мне проверить состояние объектов?
|
#13
|
||||
|
||||
Цитата:
Код:
if SelUser.online = online then И ещё вопрос. Зачем нужны эти 2 строки?: Код:
... SelUser:=TUser.Create; ... SelUser.Free; ... Цитата:
|
#14
|
|||
|
|||
Проверка проходит.
Код:
SelUser:=TUser.Create; ... SelUser.Free; Это локальная переменная. При считывании в цикли, выдается постоянно одно и тоже значение |
#15
|
||||
|
||||
Цитата:
Цитата:
|