Delphi – Kako dobiti ListBox sa horizontalnim klizačem

Kao što sigurno znate „ListBox“ po default-u ne poseduju horizontalni scroll-bar (klizač). Ovo je malo nezgodno u slučajevima kada vam sadržaj liste prelazi granične linije vidljivosti. U ovom slučaju višak sadržaja se „odseca“, pošto nema horizontalnog klizača. Ali zahvaljujući jednoj maloj proceduri, ovome možemo doskočiti.

Pokrenite Delphi i novi projekat, pa na praznu formu postavite dva List-box-a i jedno komandno dugme. Jednom malom petljom ćemo dodati sadržaj u liste, u kojima se neće zbog dužine videti sav sadržaj. Kada kliknemo na dugme, List-box1 će dobiti horizontalni klizač, pa ćemo moći da vidimo i najdužu stavku liste. Izvorni kod je sledeći:


procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
e:string;
begin
{definisanje opcija}
e:=’. opcija-weahpsjdgbajdfgbasldijfgbasdk’;
for i:=1 to 10 do
begin
listbox1.Items.Add (inttostr(i) + e);
listbox2.Items.Add (inttostr(i) + e);
end;

end;

procedure PodesiHorizontalni(lista : TListBox);
var
i, MaxSirina: integer;
begin
MaxSirina := 0;
for i := 0 to lista.Items.Count – 1 do
if MaxSirina < lista.Canvas.TextWidth(lista.Items[i])
then
MaxSirina := lista.Canvas.TextWidth(lista.Items[i]);

SendMessage(lista.Handle,
LB_SETHORIZONTALEXTENT,
MaxSirina + 5, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
PodesiHorizontalni(ListBox1);
end;

Pratite Krstaricu na www.krstarica.com