Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 2 ListBoxen verkuppeln (Beim Scrollen) (https://www.delphipraxis.net/9311-2-listboxen-verkuppeln-beim-scrollen.html)

Matze 23. Sep 2003 17:16


2 ListBoxen verkuppeln (Beim Scrollen)
 
Hi Leute!

Ja, wie mache ich das?
Ich habe 2 ListBoxen, die jeweils gleich viele Items haben. Wenn ich jetzt nun an der einen LB rumscrolle, dann soll die 2. auch mitscrollen, sodass ich die Einträge immer auf gleicher Höhe habe.

Ich hoffe, ihr versteht meine Frage. ;)

Illuminator-23-5 23. Sep 2003 17:17

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
versuch mal 'ne TListView, statt 2 Listboxen!

Matze 23. Sep 2003 18:22

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Danke Illu.

Jetzt gibt's nur noch ein Problem: Ich hab noch nie mit einer ListView gearbeitet.

Ich weiß nicht, wer es war, aber irgendjemand hat hier mal so einen HexViewer programmiert. Der wurde auch mit 3 ListBoxen erstellt.

Matze 23. Sep 2003 18:25

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
So geht das leider nicht:

Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  ListBox2.Selected[ListBox1.ItemIndex]:=true;
end;

Alexander 23. Sep 2003 18:29

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
neue Frage, neuer Thread ;-)
Nutzt du jetzt statt den beiden Listboxen eine Listview?
Nun ja da brauchst du das ja gar nicht, du willst doch das die ganze Zeile markiert wird oder wie?
Da gibt es eine Eigenschaft. ICh glaube RowSelect oder so heißt die, probier es mal aus..

Matze 23. Sep 2003 18:32

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Danke Alex. Aber ich bin immer noch bei meiner alten Frage, wie ich das mit einer ListBox (besser gesagt: mit 2 ListBoxen) machen soll. :gruebel:

Alexander 23. Sep 2003 19:00

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
mhm es gibt die WM WM_MOUSEWHEEL, damit könnte man vielleicht was anfangen.
Musst de mal schauen, ich habe jetzt leider keine Zeit mehr mir das genauer anzukucken..
http://msdn.microsoft.com/library/de...MOUSEWHEEL.asp

Matze 23. Sep 2003 19:23

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Danke, aber das muss doch irgendwie anders gehen.

Ich glaube Spider war das mit dem HexViewer, bin mir aber nicht sicher. Falls du es warst, Spider, dann melde dich bitte.

toms 23. Sep 2003 19:32

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Delphi-Quellcode:
private
   OldGridProc1, OldGridProc2: TWndMethod;
   procedure Grid1WindowProc(var Message: TMessage);
   procedure Grid2WindowProc(var Message: TMessage);
 public

{...} 

procedure TForm1.Grid1WindowProc(var Message: TMessage);
begin
  OldGridProc1(Message);
  if ((Message.Msg = WM_VSCROLL) or (Message.Msg = WM_HSCROLL) or
      Message.msg = WM_Mousewheel)) then
  begin
    OldGridProc2(Message);
  end;
end;

procedure TForm1.Grid2WindowProc(var Message: TMessage);
begin
  OldGridProc2(Message);
  if ((Message.Msg = WM_VSCROLL) or (Message.Msg = WM_HSCROLL) or
     (Message.msg = WM_Mousewheel)) then
  begin
    OldGridProc1(Message);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldGridProc1 := ListBox1.WindowProc;
  OldGridProc2 := ListBox2.WindowProc;
  ListBox1.WindowProc := Grid1WindowProc;
  ListBox2.WindowProc := Grid2WindowProc;
end;

Matze 24. Sep 2003 19:40

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Hi! Danke, nur bringt er hier einen fehler:

Delphi-Quellcode:
  if ((Message.Msg = WM_VSCROLL) or (Message.Msg = WM_HSCROLL) or
      Message.msg = WM_Mousewheel)) then
Wie ist das? Geht das auch, wenn ich nur auf die Scrollbar an der Seite der ListBox klicke, oder nur, wenn ich am Mausrad drehe? :gruebel:

toms 24. Sep 2003 19:47

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Zitat:

einen fehler
*Welchen* Fehler?

Matze 24. Sep 2003 20:13

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Zitat:

Zitat von Delphi-Compiler
[Fehler] Unit1.pas(34): Operator ist auf diesen Operandentyp nicht anwendbar


Chewie 24. Sep 2003 20:13

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Zitat:

Zitat von Matze
Ich weiß nicht, wer es war, aber irgendjemand hat hier mal so einen HexViewer programmiert. Der wurde auch mit 3 ListBoxen erstellt.

Meinst du die Klasse hier: http://www.delphipraxis.net/internal...ect.php?t=7023 ??
Die ist von mir, da ist aber nix mit drei Listboxen, sondern nur ein Listview.

Matze 24. Sep 2003 20:18

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Sorry Chewie, das ist es leider nicht. Ich bin mir sicher, dass jemand so etwas in der Art mit 3 ListBoxen gamacht hat.

Chewie 24. Sep 2003 20:23

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Dann ist ja gut. Hab mich schon gewundert :gruebel:...

toms 25. Sep 2003 06:32

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Zitat:

[Fehler] Unit1.pas(34): Operator ist auf diesen Operandentyp nicht anwendbar
Es fehlt eine Klammer vor Message.msg = WM_Mousewheel.

Habe hier noch einen besseren Code gefunden:

hier

Nalincah 25. Sep 2003 08:38

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Falls du es doch mit der Listbox machen willst und ich dich richtig verstanden hab:

Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender:TObject);
begin
  Listbox2.Itemindex := ListBox1.Itemindex;
end;
Oder andersrum

Delphi-Quellcode:
procedure TForm1.ListBox2Click(Sender:TObject);
begin
  Listbox1.Itemindex := ListBox2.Itemindex;
end;

Tpercon 25. Sep 2003 10:07

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Schau mal hier:Memo's synchron scrollen
Da hatte ich das gleiche "Problem", nur halt in Bezug auf Memo's.

Matze 7. Okt 2003 13:12

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Danke Tpercon!
Aber bei mir geht das nicht so richtig, ich habe meine Frage falsch formuliert, ich meinte nicht scrollen, sonder, wenn ich in einer ListBox was anklicke, dann soll in der daneben liegenden dessen Eintrag auf gleicher Höhe markiert sein. Sorry. :wall:

kasi 7. Okt 2003 20:33

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Dann so:
Code:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ListBox2.TopIndex := ListBox1.TopIndex;
ListBox2.ItemIndex := ListBox1.ItemIndex;
end;
KASI

bronstein 11. Nov 2006 08:50

Re: 2 ListBoxen verkuppeln (Beim Scrollen)
 
Versuche das ganze jetzt mit 3 Grids zu machen. Leider funktioniert es nicht habe jetzt noch folgendes eingefüht:

Delphi-Quellcode:
private
    { Private declarations }
    OldGridProc1, OldGridProc2, OldGridProc3: TWndMethod;
   [...]
   procedure Grid3WindowProc(var Message: TMessage);
   [...]

procedure TForm1.FormCreate(Sender: TObject);
[...]
  OldGridProc3 := StringGrid3.WindowProc;
  StringGrid3.WindowProc := Grid3WindowProc;
[...]
procedure TForm1.Grid3WindowProc(var Message: TMessage);
begin
  OldGridProc3(Message);
  if ((Message.Msg = WM_VSCROLL) or (Message.Msg = WM_HSCROLL) or
     (Message.msg = WM_Mousewheel)) then
  begin
    OldGridProc2(Message);
  end;
end;
Das Grid2 ist mein Grid mit dem ich die Navigation steure. Bei den anderen zwei habe ich ScrollBars auf None gesetzt. Mit zwei Grids hat das auch wunderbar funktioniert. Jedoch jetzt mit dem dritten geht es zwar immer noch, doch das dritte Grid scrollt nicht mit.

Könnte das auch daran liegen, dass das dritte Grid nicht die selbe Spaltenanzahl hat?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 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