// Es können horizontale und vertikale Scrollbars an Listboxen angezeigt bzw.
// gelöscht werden.
True bedeutet, dass die Bar gezeichnet wird, False, dass
// sie gelöscht wird. Bedingung ist, dass Columns auf Null steht.

// Getestet mit D4 unter Win98

function LB_ScrollBars(LB: TListbox; waagerecht, senkrecht: boolean): boolean; 
var x, y, z: integer; 
begin 
  with LB do begin 
    result := true; 
    if waagerecht then begin 
      if columns = 0 then begin 
        y := 0; 
        for x := 0 to Items.count - 1 do begin 
          z := canvas.textwidth(items[x]); 
          if z > y then y := z; 
        end; 
        if y > clientwidth then 
          sendmessage(handle, LB_SETHORIZONTALEXTENT, y + 5, 0) 
        else sendmessage(handle, LB_SETHORIZONTALEXTENT, clientwidth + 1, 0); 
      end else result := false; 
    end else 
      sendmessage(handle, LB_SETHORIZONTALEXTENT, 0, 0); 
    ShowScrollBar(handle, SB_VERT, senkrecht); 
  end; 
end; 
 
// Beispielaufruf 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if not LB_ScrollBars(Listbox1, true, true) 
    then showmessage('Horizontale Scrollbar nicht bearbeitet'); 
end;

// Hinweis:
// Wenn sich zur Laufzeit der Inhalt der Listbox ändert, muss die Funktion
// erneut aufgerufen werden. Da Listboxen kein
OnChange besitzen,
// siehe dazu:
OnChange für Listboxen nachbilden
 


Zugriffe seit 6.9.2001 auf Delphi-Ecke