![]() |
TUpdown ohne MouseWheel
Hallo,
ich habe schon die Suchfunktion benutzt, aber nichts passendes finden können. Auf meiner Form befindet sich eine TScrollBox. In dieser wiederum ein TImage. Mit dem Mausrad kann man nun den Zoom einstellen und das Bild größer oder kleiner anzeigen lassen. Das Bild selbst ist nur eine Vorschau. Das Bild soll als jpeg komprimiert werden. Für TJPEGImage.CompressionQuality wollte ich ein TUpDown verwenden. Leider reagiert das auf das Scrollrad, so dass mein mühsam programmierter Zoom nicht mehr funktioniert. Wie bringe ich TUpDown dazu, das Scrollrad zu ignorieren? Ich habe dazu Code für (vermutlich) C gefunden. Es ist jedoch für mich zu kompliziert, dass nach Delphi umzusetzen. Dabei wird irgendwie die Komponente neu geschrieben, von TUpDown abgeleitet und WndProc so überschrieben, dass WM_MouseWheel an die übergeordnete Instanz weitergeleitet wird. Dadurch wird es dann im abgeleiteten TUpDown ignoriert - wenn ich das richtig verstehe. Sollte es keine einfachere Lösung geben, würde ich es mit 2 Buttons ('+' und '-') machen. Gruß & Dank |
AW: TUpdown ohne MouseWheel
Wie wäre es denn, wenn du der Öffentlichkeit mitteilst, was dein C-Code denn ist, damit sich vielleicht ein anderer dran machen kann, den nach Delphi-Pascal zu portieren?
Bernhard PS: Hat TUpDown ein Event ähnlich OnMouseWheel? |
AW: TUpdown ohne MouseWheel
Zitat:
![]() ![]() [VERGESSEN] Das Ableiten ist nicht das Problem. Ich habe aber wenig Lust, eine neue Komponente zu schreiben. Es kommt hinzu, dass ich TurboDelphi und damit das leidige Problem mit den Fremkomponenten habe. Da müsste ich dann wieder etwas zur Laufzeit erstellen. [/VERGESSEN] Zitat:
Gibt es aber leider nicht. |
AW: TUpdown ohne MouseWheel
TUpDown sollte nur auf das Scrollen reagieren, wenn es den Eingabefokus besitzt.
Ergo: Nimm dem TUpDown den Eingabefokus und schon reagiert es nicht mehr. PS: In OnMouseLeave könntest du z.B. den Fokus woanders hinlegen.
Delphi-Quellcode:
oder
{irgendein anderes sichtbares Control}.SetFocus;
Delphi-Quellcode:
Wenn man per Tastatur das UpDown betreten hat, dann muß man da erstmal Manuell wieder da raus (oder man geht mal kurz mit der Maus drüber)
ActiveControl := nil;
|
AW: TUpdown ohne MouseWheel
Zitat:
Das Problem bei mir ist aber, dass es nur eine TScrollBox, ein TImage, ein TEdit und TUpDown gibt. Es gibt also niemandem, dem ich den Focus geben könnte.
Delphi-Quellcode:
Funktioniert insoweit gut. Danke für den Tipp. Es klappt nur beim anzeigen des Fensters nicht sofort. Ich habe es bei TEdit.OnChange und bei TSubForm.OnShow eingefügt. Ich gehe davon aus, dass es bei OnShow ausgeführt wird. Allerdings wird die erste Bewegung des Scrollrades immer noch von TUpDown wahrgenommen.
ActiveControl := nil;
Aber damit kann ich schon einmal leben! Gruß |
AW: TUpdown ohne MouseWheel
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 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