![]() |
Listboxen "verschmelzen" lassen
Liste der Anhänge anzeigen (Anzahl: 2)
Moin,
ich hab da ein etwas seltsames Problem: Also ich habe 3 Listboxen. In diesen stehen in jeder Zeile Daten, die im Zusammenhang stehen. Beispiel: Listbox1 - 1 Zeile: Ich Listbox2 - 1 Zeile: habe Listbox3 - 1 Zeile: Hunger. Es gibt circa 20 Zeileneinträge. Nun möchte ich das wenn ich auf ein Item in der Listbox klicke, dass die zugehörigen Items der anderen Listboxen auch markiert werden. Das hab ich so gemacht:
Delphi-Quellcode:
Das Problem ist jetzt nur, die Scrollbalken. Steht der eine Scrollbalken höher als der andere, sind die Items nicht mehr in einer Linie markiert. Also ist meine Frage, wie kann ich wenn ich Listbox1 runterscrolle auch die beiden anderen automatisch mutgescrollt werden ? Ich hoffe ihr versteht was ich meine und ich hoffe ihr könnt mir helfen. Im Anhang sind 2 Bilder was ich meine.
procedure TForm1.ListBox1Click(Sender: TObject);
var i : integer; begin i := listbox1.ItemIndex; Listbox2.itemindex := i; listbox3.itemindex := i; end; Danke schonmal, |
Re: Listboxen "verschmelzen" lassen
ItemIndex Setzen und dann .Scroll(en)
|
Re: Listboxen "verschmelzen" lassen
Zitat:
Zitat:
|
Re: Listboxen "verschmelzen" lassen
Hi,
du kannst aber herausfinden, wie hoch ein einzelnes Item ist. ![]() Chris |
Re: Listboxen "verschmelzen" lassen
.Items.IndexOf()
|
Re: Listboxen "verschmelzen" lassen
Zitat:
@Chakotay: Irgendwie hat jedes Items bei ItemHeight den Wert 13. Es wird also nicht du Position der in der Listbox augegeben, sondern nur die Höhe des Items. Was nützt mir das oder bin ich blind ? :gruebel: |
Re: Listboxen "verschmelzen" lassen
Hi,
das nützt dir einiges. Überleg mal: du weißt nun, dass jedes Item genau 13 Pixel hoch ist. Außerdem weißt du, welches Item du hast. Nun willst du wissen, wie viele Pixel das von ganz oben ist... Das erste Item beginnt bei 0px, das zweite bei 13px, das dritte bei 26px, das vierte bei 39px, etc. Und das kannst du dann in der Methode ![]() Chris |
Re: Listboxen "verschmelzen" lassen
Stimmt das hast du recht. :wall:
Ich habs jetzt so versucht, klappt aber leider net:
Delphi-Quellcode:
:gruebel:
procedure TForm1.ListBox1Click(Sender: TObject);
var i, a : integer; begin i := listbox1.ItemIndex; a := i * listbox1.ItemHeight; Listbox2.ScrollBy(0, a); Listbox2.ItemHeight := i; listbox3.itemindex := i; end; |
Re: Listboxen "verschmelzen" lassen
Hi,
ganz so einfach ist es dann auch nicht. ;) Denn bei ScrollBy gibst du ja nicht an, zu welchem Pixel gescrollt werden soll, sondern die Differenz zwischen dem jetzigen Punkt und dem, zu dem du hin willst. D.h. wenn du es so machen willst, wie du es da geschrieben hast, musst du erstmal zum Anfang. Vielleicht ist das auch das sinnvollste. Heißt also: du scrollst ganz um Anfang (Parameter wäre dann z.B. -(Höhe der ListBox)) und dann so, wie du es da schon hast. ;) Chris |
Re: Listboxen "verschmelzen" lassen
gnarf ... mit indexof bekommst das jeweilige item aus der liste, multiplizierst das mit der höhe des items und scrollst dann dahin
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz