AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listboxen "verschmelzen" lassen

Ein Thema von PierreB · begonnen am 22. Jul 2005 · letzter Beitrag vom 22. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
PierreB
(Gast)

n/a Beiträge
 
#1

Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 14:25
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,
Miniaturansicht angehängter Grafiken
sonicht_490.jpg   so_153.jpg  
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 14:27
ItemIndex Setzen und dann .Scroll(en)
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#3

Re: Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 14:34
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 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 !?
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 14:35
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
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#5

Re: Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 14:36
.Items.IndexOf()
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#6

Re: Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 14:46
Zitat von barf00s:
.Items.IndexOf()
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 ?
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 14:48
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
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#8

Re: Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 14:55
Stimmt das hast du recht.
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;
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 15:10
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
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#10

Re: Listboxen "verschmelzen" lassen

  Alt 22. Jul 2005, 15:11
gnarf ... mit indexof bekommst das jeweilige item aus der liste, multiplizierst das mit der höhe des items und scrollst dann dahin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:15 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