AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: VCL / WinForms / Controls Delphi ListBox mit Scrollbalken (Horizontal)
Thema durchsuchen
Ansicht
Themen-Optionen

ListBox mit Scrollbalken (Horizontal)

Ein Thema von Sharky · begonnen am 3. Aug 2005 · letzter Beitrag vom 3. Sep 2005
Antwort Antwort
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#1

ListBox mit Scrollbalken (Horizontal)

  Alt 3. Aug 2005, 19:39
Hai,

dieser kleine Code setzt bei einer TListBox einen horizontalen Scrollbalken auf Breite des breitesten Eintrages:

Delphi-Quellcode:
procedure SetLBHScrollbar(aValue: TListBox);
var
  ndx: integer;
  curentWidth: integer;
  MaxWidth: integer;
begin
  MaxWidth := 0;
  for ndx := 0 to aValue.Items.Count - 1 do
  begin
    curentWidth := aValue.Canvas.TextWidth(aValue.Items.Strings[ndx] + 'x');
    if MaxWidth < curentWidth then
    begin
      MaxWidth := curentWidth
    end;
  end;
  SendMessage(aValue.Handle, LB_SETHORIZONTALEXTENT, MaxWidth, 0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetLBHScrollbar(ListBox1);
end;
Das " + 'x' " ist nicht notwendig. Aber dadurch "klebt" der Eintrag nicht so eng am rechten Rand
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 30. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#2

Re: ListBox mit Scrollbalken (Horizontal)

  Alt 4. Aug 2005, 00:27
Hat die ListBox nicht sogar ne Property Namens ScrollWidth?
Delphi-Quellcode:
procedure SetScrollWidth(ListBox: TListBox);
var
  DC: HDC;
  Size: TSize;
  w, i, offset: Integer;
begin
  offset := 2 * GetSystemMetrics(SM_CXFRAME) + GetSystemMetrics(SM_CXVSCROLL);
  with ListBox do
  begin
    DC := GetDC(Handle);
    try
      SelectObject(DC, Font.Handle);
      w := 0;
      for i := 0 to Items.Count - 1 do
      begin
        if GetTextExtentPoint32(DC, PChar(Items[i]),
          StrLen(PChar(Items[i])), Size) then
          if w < Size.cx + offset then
            w := Size.cx + offset;
      end;
      ScrollWidth := w;
    finally
      ReleaseDC(Handle, DC);
    end;
  end;
end;
mal irgendwo durch Zufall gefunden (wenn nicht sogar hier)
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: ListBox mit Scrollbalken (Horizontal)

  Alt 3. Sep 2005, 18:31
das ganze kann man auch noch bischen kürzen und anstelle von "+ x" kann man auch einfach an des die maximale breite später eine feste zahl hängen
Delphi-Quellcode:
uses
  math;
[...]
procedure SetLBHScrollbar(aValue: TListBox);
var
  ndx: integer;
  MaxWidth: integer;
begin
  MaxWidth := 0;
  for ndx := 0 to aValue.Items.Count - 1 do
    MaxWidth := Max(MaxWidth, aValue.Canvas.TextWidth(aValue.Items.Strings[ndx]);
  SendMessage(aValue.Handle, LB_SETHORIZONTALEXTENT, MaxWidth + 10, 0);
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz