Wyswietlenie zaznaczonych el. w listbox

0

prosta procedurka:

procedure Tffiltrzaw.Button1Click(Sender: TObject);
var
  temp:string;
  I: Integer;
begin
  temp:='';
  for I := 0 to LB_osoby.Items.Count-1 do
    if lb_osoby.Selected[i] then
      temp:=temp+lb_osoby.Items.ValueFromIndex[i]+#13#10;
  showmessage(temp);
end;

zakładając ze w LB mam np 4 elementy:

jeden
dwa
trzy
cztery

to po zaznaczeniu np: 1 i 4 elementu, showmessage pokazuje:

eden
ztery

czyli bez pierwszego znaku... yy? Dlaczego?

0

Dlatego, bo tak działa prawdopodobnie ValueFromIndex. Odwołaj się po prostu do Itema. W taki sposób jak to
poniżej pokazałem. No i zamiast stringu, ja bym użył TStringList, którego cały Text, na koncu bym pokazywał.

var
  temp:string;
  I: Integer;
begin
  temp:='';
  for I := 0 to LB_osoby.Items.Count-1 do
    if lb_osoby.Selected[i] then
      temp:=temp+lb_osoby.Items[i]+#13#10;
  showmessage(temp);
end;
0

nie wiem skads Ty wytrzasnal to

Items.ValueFromIndex[i]

pisze sie

Items[i]

EDIT: przegralem, Olesio byl pierwszy ;]
ale co do sposobu ze StringListem.. czy ja wiem... w sumie zwykly string sie w tym momencie sprawdza - i nie muszisz dodatkowo tworzyc/zwalniac obiektu.

0

No w sumie StringList niekoniecznie. Ale widzisz cimak tutaj ja ubiegłem Ciebie, w innym temacie - Ty mnie :)

0
olesio napisał(a)

Dlatego, bo tak działa prawdopodobnie ValueFromIndex. Odwołaj się po prostu do Itema. W taki sposób jak to
poniżej pokazałem. No i zamiast stringu, ja bym użył TStringList, którego cały Text, na koncu bym pokazywał.

var
  temp:string;
  I: Integer;
begin
  temp:='';
  for I := 0 to LB_osoby.Items.Count-1 do
    if lb_osoby.Selected[i] then
      temp:=temp+lb_osoby.Items[i]+#13#10;
  showmessage(temp);
end;

hm, no faktycznie dziala. Probowalem tego z poczatku, ale myslalem ze trzeba to jakos zrobic w stylu items[i].Value albo cos, a to nawet kompilowac sie nie chcialo. nie wpadlem na to ze samo items[i] wystarczy.

0
WombaT napisał(a)

hm, no faktycznie dziala. Probowalem tego z poczatku, ale myslalem ze trzeba to jakos zrobic w stylu items[i].Value albo cos, a to nawet kompilowac sie nie chcialo. nie wpadlem na to ze samo items[i] wystarczy.

używaj "podpowiadacza" > CTRL+spacja i korzystaj z HELP'a ;-)

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