Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Scrollbox verknüpfen
r_le - Mi 05.05.04 17:25
Titel: Scrollbox verknüpfen
Hi!
Ich habe hier 2 Scrollboxen (oder Scrollboxes? hmm...). Wenn ich die eine nun vertikal scrolle, dann soll gleichzeitig auch die andere gescrollt werden. Wie mach ich denn das? Hab leider bisher noch kein passendes Ereignis gefunden. :-(
matze - Do 06.05.04 15:08
du kannst in eimem Timer die Postition der einen scrollbox anfragen und auf die andere übertragen:scrollbox1.HorzScrollBar.Position := scrollbox2.HorzScrollBar.Position;
genau das gelich halt auch mit der vertikalen scrollbar !
Delete - Do 06.05.04 15:29
Hi,
du könntest eine Klasse von TScrollBox ableiten welche ein OnScroll-Event published.
Hab sowas mal auf die Schnelle zusammengebastelt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| type TScrollNotifiyEvent=procedure(Sender: TObject; AVer, AHor: Integer) of object;
TScrollBoxEx = class(TScrollBox) private FOnScroll: TScrollNotifiyEvent; procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL; procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL; published property OnScroll: TScrollNotifiyEvent read FOnScroll write FOnScroll; end;
implementation
procedure TScrollBoxEx.WMHScroll(var Message: TWMHScroll); begin inherited;
if (Assigned(FOnScroll)) then FOnScroll(Self, VertScrollBar.Position, HorzScrollBar.Position); end;
procedure TScrollBoxEx.WMVScroll(var Message: TWMVScroll); begin inherited;
if (Assigned(FOnScroll)) then FOnScroll(Self, VertScrollBar.Position, HorzScrollBar.Position); end; |
Im neuen OnScroll-Event kannst du dann die Positionen beider Scrollboxen synchronisieren.
r_le - Do 06.05.04 20:32
Ja, das mit der neuen Klasse ist wahrscheinlich die einfachste Lösung.
Danke! :-)
matze - Fr 07.05.04 14:44
jup das ist die eleganteste lösung. das mit dem timer wäre voll holzhammer gewesen !
_janosch - Fr 07.05.04 15:39
warum? Im Event onscroll bzw. onchange braucht doch einfach
Delphi-Quelltext
1:
| scrollbar2.Position:=scrollbar1.Position; |
bzw.
Delphi-Quelltext
1:
| scrollbar1.Position:=scrollbar2.Position; |
ausführen. Also ohne eine neue klasse oder ohne einen Timer!?
Delete - Fr 07.05.04 15:44
| _janosch hat folgendes geschrieben: |
warum? Im Event onscroll bzw. onchange braucht doch einfach
|
Dann such diese Ereignisse mal bei der normalen TScrollbox... :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!