![]() |
Delphi-Version: 10 Seattle
Stringgrid mit mausrad scrollen
Hallo Leute,
Ich habe ein Stringgrid und möchte dieses mit dem Mausrad scollen, was bereits funktioniert. Das Stringgrid ist relativ groß. Wenn ich nun z.B. in die Mitte des Stringgrids mithilfe der Maus durch linke Maustaste halten und ziehen der Scrollbar (also ohne Mausrad!) gehe dann lande auch wie gewollt in der Mitte. Wenn ich nun jedoch mit dem Mausrad hoch oder runter scrolle, lande ich wieder ganz oben bei Reihe 0 bzw 1... Ich möchte natürlich das ich wenn ich scrolle, da weiterscrollen kann, wo ich gerade bin. Vielen Dank im voraus! |
AW: Stringgrid mit mausrad scrollen
Hoi,
das ist IMHO bei Object-Pascal / Delphi-Language. Bitte schreib das wo es reinpasst, ich denke ein Forum mit VCL |
AW: Stringgrid mit mausrad scrollen
@freimatz ich bin hier unter "Object/Pascal/Delphi-Language" also genau das was du mir geschrieben hast oder irre ich mich?
|
AW: Stringgrid mit mausrad scrollen
Hallo,
wenn du mit dem Mausrad scrollst, dann änderst du die selektierte Zelle oder die selektierte Reihe (Row) Wenn du den Balken ziehst änderst du die Ansicht innerhalb deines Grids, aber nicht die Position der selektierten Zelle. wenn du anschließen wieder Mausrad scrollst, macht deine Selektion da weite wo sie aufgehört hat und damit springt dein View wieder zurück. Wenn du nach dem ziehen des Balkens eine Zelle markierst, dann macht dein Scrollrad auch dort weiter. |
AW: Stringgrid mit mausrad scrollen
Ja so habe ich mir das auch schon gedacht aber ich weiß ehrlich gesagt nicht wie ich nach dem loslassen der Scrollbar die zusehende Zelle fokusiere.
Wenn ich im onmouseup event das hier reinschreibe: Stringgrid1.Row:=Stringgrid1.TopRow; passiert leider nichts |
AW: Stringgrid mit mausrad scrollen
Hier mal ein logischer Anfang - alle Fälle und Eventualitäten müsstest Du aber selbst erarbeiten, dazu fehlt mir gerade die Zeit.
Delphi-Quellcode:
...:cat:...
procedure TForm3.grd1MouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean); begin if grd1.Selection.Top < grd1.TopRow then grd1.Selection := TGridRect(Rect(grd1.Selection.Left, grd1.TopRow, grd1.Selection.Left, grd1.TopRow));; end; |
AW: Stringgrid mit mausrad scrollen
perfekt vielen Dank :-D
|
AW: Stringgrid mit mausrad scrollen
Zitat:
Zitat:
...:cat:... |
AW: Stringgrid mit mausrad scrollen
Habe den Code etwas erweitert:
Code:
14 ist die Anzahl der aufeinmal angezeigten Zeilen bzw. Rows. Scheint zu funktionieren :thumb:
procedure T_DB_Behaelter_Uebersicht.StringGrid1MouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if ((Stringgrid1.Selection.Top < Stringgrid1.TopRow-14) or (Stringgrid1.Selection.Top > Stringgrid1.TopRow+14)) then Stringgrid1.Selection := TGridRect(Rect(Stringgrid1.Selection.Left, Stringgrid1.TopRow, Stringgrid1.Selection.Left, Stringgrid1.TopRow)); end; procedure T_DB_Behaelter_Uebersicht.StringGrid1MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if ((Stringgrid1.Selection.Top < Stringgrid1.TopRow-14) or (Stringgrid1.Selection.Top > Stringgrid1.TopRow+14)) then Stringgrid1.Selection := TGridRect(Rect(Stringgrid1.Selection.Left, Stringgrid1.TopRow, Stringgrid1.Selection.Left, Stringgrid1.TopRow)); end; Danke nochmal Sakura :-D |
AW: Stringgrid mit mausrad scrollen
Zitat:
...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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