Autor |
Beitrag |
Tomac
      
Beiträge: 113
Win XP
D6 Ent
|
Verfasst: Di 11.03.03 16:22
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
      
Beiträge: 740
Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
|
Verfasst: 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
_________________ Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
|
|
Böser Borstel
      
Beiträge: 154
|
Verfasst: 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
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Mo 17.03.03 19:34
32767 ist noch lange nicht unendlich
mfg, stefan
|
|
Böser Borstel
      
Beiträge: 154
|
Verfasst: 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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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. 
|
|
Böser Borstel
      
Beiträge: 154
|
Verfasst: 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; |
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 154
|
Verfasst: 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. |
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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? 
|
|
Böser Borstel
      
Beiträge: 154
|
Verfasst: 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.
|
|