![]() |
Ereignis für Scrollbalken in Scrollbox
Hi,
welches Ereignis ist zuständig für die Scrollbalken in einer Scrollbox. Folgende Situation: Scrollbox in dem ein Image liegt. Image ist größer als die Box. Scrollbalken werden angezeigt. Wenn ich nun das image per scrollbalken verschiebe (was auch problemlos geht) soll z. B. eine Nachricht angezeigt werden. Leider reagiert aber Scrollbox.Click nicht. Und ein Ereignis scrollbox.scrollbalken gibt es wohl nicht. Was übersehe ich? Danke |
Dieses Thema wurde am "19. Jan 2019, 12:07 Uhr" von "Luckie" aus dem Forum "Fragen / Anregungen zur DP" in das Forum "GUI-Design mit VCL / FireMonkey / Common Controls" verschoben.
|
AW: Ereignis für Scrollbalken in Scrollbox
Zitat:
Analysiere Low(wP) und High(wP) gruss |
AW: Ereignis für Scrollbalken in Scrollbox
Sorry, aber so ausführlich ... ...
Habe inzwischen 2 Std. nach WM_HSCROLL etc. gegoogelt und auch in der Delphi-Hilfe nachgesehen aber mir geht einfach kein Licht auf.:oops: |
AW: Ereignis für Scrollbalken in Scrollbox
Zitat:
Unter WM_HSCROLL deiner WinProc kannst du dann prüfen ob dein Fenster bzw. die Scrollbox ein Event ausgelöst hat. Ich hoffe du weist wie man die WinProc aus deiner Class heraus ableitet!
Delphi-Quellcode:
Hier getippt.. Habe die TScrollbox noch nicht verwendet, habe meine eigene, von daher kein gewähr dass das mit dem Scrollbox.Handle so stimmt.
WM_HSCROLL:
begin if (LoWord(wP) = SB_THUMBPOSITION) then // der Scrollbalken wurde bewegt\angeklickt begin if Handle = Scrollbox.Handle then begin MeineHScrollThumpPosition := HiWord(wP); // >> Mach was mit meiner Value !! end; end; end; Über LParam kommst du an die ID des Thump was verwendet wird wenn du drauf klickst.
Delphi-Quellcode:
ControlID := Lp;
vorausgesetzt Lp ist in deiner Winproc als LPARAM definiert.
Delphi-Quellcode:
function WndProc(WinHandle: HWND; Msg: UINT; wP: WParam; lP: LParam): LRESULT; stdcall;
Eventuell reicht es auch aus nur die WM_HSCROLL Message abzuleiten ![]() gruss |
AW: Ereignis für Scrollbalken in Scrollbox
Prima und herzlichen Dank.
Werde voraussichtlich morgen dran gehen. Nochmals vielen Dank |
AW: Ereignis für Scrollbalken in Scrollbox
Wie Du herausgefunden hast hat die TScrollbox-Klasse keine entsprechenden Events, aber das läßt sich ziemlich einfach nachflicken. Ich habe in meiner alten Sammlung eine Control gefunden, das ich vor Urzeiten mal für eine ähnliche Frage auf den alten Borland-Foren geschrieben hatte. Keine Ahnung für welche Delphi-Version, aber es sollte auch für die neuen Versionen funktionieren. Weist Du, wie man eine eigenen Komponente per Designtime package in der IDE installiert?
Delphi-Quellcode:
unit EvScrollBox;
interface uses Windows, Messages, SysUtils, Classes, Controls, Forms; type TEvScrollBox = class(TScrollBox) private FVScrollEvent: TNotifyEvent; FHScrollEvent: TNotifyEvent; Procedure WMVScroll( Var msg: TWMVScroll ); Message WM_VSCROLL; Procedure WMHScroll( Var msg: TWMHScroll ); Message WM_HSCROLL; protected Procedure DoVScroll; Procedure DOHSCroll; public published property OnVScroll: TNotifyEvent read FVScrollEvent write FVScrollEvent; property OnHScroll: TNotifyEvent read FHScrollEvent write FHScrollEvent; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TEvScrollBox]); end; { TEvScrollBox } procedure TEvScrollBox.DOHSCroll; begin If Assigned( FHSCrollEvent ) The FHScrollEvent( self ); end; procedure TEvScrollBox.DoVScroll; begin If Assigned( FVSCrollEvent ) Then FVScrollEvent( self ); end; procedure TEvScrollBox.WMHScroll(var msg: TWMHScroll); begin inherited; If msg.ScrollCode <> SB_ENDSCROLL Then DoHScroll; end; procedure TEvScrollBox.WMVScroll(var msg: TWMVScroll); begin inherited; If msg.ScrollCode <> SB_ENDSCROLL Then DoVScroll; end; end. |
AW: Ereignis für Scrollbalken in Scrollbox
Ich bin mir sicher peter's Lösung funktioniert und die ist im Prinzip auch eine ausformulierte Variante der anderen Message
basierten Lösung. Es wäre aber evtl. schön, wenn der Originale Poster einen QP feature request unter quality.embarcadero.com anlegen würde (und uns dann die Nummer mitteilt, damit wir abstimmen können), damit solch' nützliche Events in Zukunft "out of the box" vorhanden sind und nicht erst nachgerüstet werden müssen. Grüße TurboMagic |
AW: Ereignis für Scrollbalken in Scrollbox
Zitat:
Letztendlich ist das eine für die VCL basierende Lösung und es kommt am ende das selbe heraus wenn ich es mit Win32API mitteln bewerkstellige. Nur eine extra Komponente dafür zu erstellen scheint mir doch etwas zu übertrieben. gruss |
AW: Ereignis für Scrollbalken in Scrollbox
Es wäre aber evtl. schön, wenn der Originale Poster einen QP feature request ... ...
Werde die Anregung gerne aufnehmen. Nur derzeit ist eine Anmeldung bei Embacadero scheinbar nicht möchlich. Grüße, ekatharina |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 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