AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TUpdown ohne MouseWheel

Ein Thema von Schwedenbitter · begonnen am 19. Nov 2010 · letzter Beitrag vom 19. Nov 2010
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

TUpdown ohne MouseWheel

  Alt 19. Nov 2010, 12:10
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
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

AW: TUpdown ohne MouseWheel

  Alt 19. Nov 2010, 13:06
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?
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: TUpdown ohne MouseWheel

  Alt 19. Nov 2010, 20:48
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?
Entschuldigung. Wird nicht wieder vorkommen. Ich habe hier etwas gefunden. Mehr scheint es dazu nicht zu geben. Auch das hat nichts weiter gebracht.

[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]

Hat TUpDown ein Event ähnlich OnMouseWheel?
Leider nicht. Das wäre dann auch zu einfach gewesen: Über Handled das Event abwürgen und/oder ggf. als Message an die Scrollbox weiterleiten.
Gibt es aber leider nicht.
Alex Winzer

Geändert von Schwedenbitter (19. Nov 2010 um 20:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.110 Beiträge
 
Delphi 12 Athens
 
#4

AW: TUpdown ohne MouseWheel

  Alt 19. Nov 2010, 21:17
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.
{irgendein anderes sichtbares Control}.SetFocus; oder ActiveControl := nil; 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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: TUpdown ohne MouseWheel

  Alt 19. Nov 2010, 21:59
TUpDown sollte nur auf das Scrollen reagieren, wenn es den Eingabefokus besitzt.
Es reagiert auf das Scrollrad, wenn das associated control den Focus hat. Das ist richtig.
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.

ActiveControl := nil; 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.
Aber damit kann ich schon einmal leben!

Gruß
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.110 Beiträge
 
Delphi 12 Athens
 
#6

AW: TUpdown ohne MouseWheel

  Alt 19. Nov 2010, 22:49
http://www.delphipraxis.net/156104-i...ml#post1062675
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz