Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - horizontale Scrollbar in TListbox
Tomac - Di 11.03.03 16:22
Titel: horizontale Scrollbar in TListbox
Hallo!
Ich habe mittels
Quelltext
1:
| SendMessage(Listbox1.Handle, LB_SetHorizontalExtent, 1000, Longint(0)); |
eine horizontale Scrollbar in einer Listbox erzeugt. Da Problem dabei ist nur, dass mit "1000" eine Fixe "Länge" festgelegt ist, ich möchte aber, dass die Länge auf die Länge der Einträge angepasst wird, so wie das auch bei der vertikalen Scrollbar geht.
THX
Tomac
GSE - Di 11.03.03 16:30
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure HorScrollBar(ListBox: TListBox; MaxWidth: Integer); var i, w: Integer; begin if MaxWidth = 0 then SendMessage(ListBox.Handle, LB_SETHORIZONTALEXTENT, MaxWidth, 0) else begin { get largest item } for i := 0 to ListBox.Items.Count - 1 do with ListBox do begin w := Canvas.TextWidth(Items[i]); if w > MaxWidth then MaxWidth := w; end; SendMessage(ListBox.Handle, LB_SETHORIZONTALEXTENT, MaxWidth + GetSystemMetrics(SM_CXFRAME), 0); end; end; |
Du musst die Prozedur dann immer bloß aufrufen wenn du ein Item hinzufügst oder entfernst!
mfg
GSE
Böser Borstel - Do 13.03.03 14:10
Titel: IDE
Wenn du mit der IDE eine ListBox erstellst, kannst du mittels Add unendlich viele einträge machen.
grayfox - Mo 17.03.03 19:34
32767 ist noch lange nicht unendlich ;)
mfg, stefan
Böser Borstel - Di 18.03.03 08:34
Titel: Achja
Das wußte ich nicht, aber bis jetzt hat das für meine Zwecke immer gereicht.
Hat hier denn schon jemand eine ListBox - Komponente entworfen die mehr als 32767 kann? Die würde ich mir nämlich mal gerne genauer angucken!
Böser Borstel
Delete - Di 18.03.03 08:54
Titel: Re: Achja
Böser Borstel hat folgendes geschrieben: |
Hat hier denn schon jemand eine ListBox - Komponente entworfen die mehr als 32767 kann? Die würde ich mir nämlich mal gerne genauer angucken!
|
Das wird wohl wenig Sinn machen so eine Komponete zu entwickeln. Oder hast du schon mal überlegt, wie du den 20156 Eintrag auswählen willst?Bzw. wie sähe es mit der Übersicht aus. :roll:
Böser Borstel - Di 18.03.03 09:02
Titel: so vielleicht
so vielleicht
so bekomme ich doch immer den inhalt. ODER?
Quelltext
1: 2: 3: 4:
| function gebeAuswahlVonListbox: String begin result := listBox.Items.Strings[listBox.ItemIndex]; end; |
Delete - Di 18.03.03 09:06
Nein. Deine Funktion ist keine Methode von deiner Form. Die Fehlermeldung müßte lauten:
Zitat: |
Unbekannter Bezeichner "listbox".
|
Böser Borstel - Di 18.03.03 09:13
Titel: ok
so jemand wie du müßte wissen, was ich damit meine!
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) ListBox: TListBox; function gebeAuswahlVonListbox; private { Private-Deklarationen } public { Public-Deklarationen } end;
var Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.gebeAuswahlVonListbox: String begin result := listBox.Items.Strings[listBox.ItemIndex]; end;
end. |
Delete - Di 18.03.03 15:00
Ich kann auch nicht hellsehen. Woher soll ich wissen, dass du wissentlich unvollständigen Code postest und dir bewußt bist, dass dieser Code so nicht gehen kann? :roll:
Böser Borstel - Di 18.03.03 15:13
Titel: tja
ich habe diesen code niemals geschrieben außer hier, ich wollte den leuten nur einen tip geben. nun habe ich so viel geschrieben obwohl diese funktion als globale funktion benutzt werden hätte können.
also ich benutze immer eine unit nur für globale sachen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!