![]() |
StringGrid mit ScrollBar verknüpfen
Habe vier StringGrids auf meiner Form und möchte mit einer ScrollBar alle Grids gemeinsam scrollen. Wie kann ich das am besten realisieren?
|
Re: StringGrid mit ScrollBar verknüpfen
Moin,
das kannst du über das Ereignis OnTopLeftChanged erreichen. Im ersten Grids sieht die Methode folgendermaßen aus...
Delphi-Quellcode:
procedure TForm.StringGrid1TopLeftChanged(Sender: TObject);
begin StringGrid2.LeftCol:=StringGrid1.LeftCol; StringGrid3.LeftCol:=StringGrid1.LeftCol; StringGrid4.LeftCol:=StringGrid1.LeftCol; StringGrid2.TopRow:=StringGrid1.TopRow; StringGrid3.TopRow:=StringGrid1.TopRow; StringGrid4.TopRow:=StringGrid1.TopRow; end; und so weiter... MfG Thorsten |
Re: StringGrid mit ScrollBar verknüpfen
danke erstmal für die antwort, aber ich meinte gleichzeitig scrollen im zusammenhang mit ner scrollbar :? geht es vielleicht irgendwie (evtl. mit messages), wenn ich bei einer der vier scrollbars die scrollmöglichkeit aktiviere und ich mit dieser scrollbar die anderen steuere?
|
Re: StringGrid mit ScrollBar verknüpfen
ich glaube nicht, dass man das "verknüpfen" kann, und dann automatisch gescrollt wird. Du musst di Ereignisse der Scrollbar abfangen und entsprechend dein Stringgrid anpassen. Das könnte man z.b. so machen, wie von omata vorgeschlagen.
|
Re: StringGrid mit ScrollBar verknüpfen
Doch - hab's gerade eben hinbekommen :-D
Die Lösung steht in diesem Thread: ![]()
Delphi-Quellcode:
Habe nur beim letzten Grid die Anzeige einer horizontalen ScrollBar aktiviert und den obigen Source ein kleines bisschen verändert.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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