Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Listboxen "verschmelzen" lassen (https://www.delphipraxis.net/50246-listboxen-verschmelzen-lassen.html)

PierreB 22. Jul 2005 13:25


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:
procedure TForm1.ListBox1Click(Sender: TObject);
var
i : integer;
begin
i := listbox1.ItemIndex;
Listbox2.itemindex := i;
listbox3.itemindex := i;
end;
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.

Danke schonmal,

barf00s 22. Jul 2005 13:27

Re: Listboxen "verschmelzen" lassen
 
ItemIndex Setzen und dann .Scroll(en)

PierreB 22. Jul 2005 13:34

Re: Listboxen "verschmelzen" lassen
 
Zitat:

Zitat von barf00s
ItemIndex Setzen und dann .Scroll(en)

Ich hab die Methode .Scrollby genommen (gefunden). Nur wie soll ich da bei den beiden Integerwerten angeben ?
Zitat:

Zitat von Delphi Hilfe
DeltaY enthält die Änderung in Pixel längs der Y-Achse. Bei einem positiven Wert wird der Bildausschnitt nach unten, bei einem negativen Wert nach oben verschoben

Nur woher krieg ich diesen Wert ? Ich hab ja nur den ItemIndex der Listbox1 !?

CalganX 22. Jul 2005 13:35

Re: Listboxen "verschmelzen" lassen
 
Hi,
du kannst aber herausfinden, wie hoch ein einzelnes Item ist. Delphi-Referenz durchsuchenItemHeight heißt da das Zauberwort. Ich weiß aber jetzt nicht konkret wovon das die Eigenschaft ist - entweder der ListBox selber oder der Items-Eigenschaft.

Chris

barf00s 22. Jul 2005 13:36

Re: Listboxen "verschmelzen" lassen
 
.Items.IndexOf()

PierreB 22. Jul 2005 13:46

Re: Listboxen "verschmelzen" lassen
 
Zitat:

Zitat von barf00s
.Items.IndexOf()

:gruebel: Mit IndexOf() kann ich doch prüfen ob ein String in der Listbox vorhanden ist. Was nützt mir das ?

@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:

CalganX 22. Jul 2005 13:48

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 Delphi-Referenz durchsuchenScrollBy verwenden. ;)

Chris

PierreB 22. Jul 2005 13:55

Re: Listboxen "verschmelzen" lassen
 
Stimmt das hast du recht. :wall:
Ich habs jetzt so versucht, klappt aber leider net:
Delphi-Quellcode:
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;
:gruebel:

CalganX 22. Jul 2005 14:10

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

barf00s 22. Jul 2005 14:11

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 09:21 Uhr.
Seite 1 von 2  1 2      

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