Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Stringgrid: Bei Mausrad kein onclick aufrufen
gnomecoder - So 29.05.11 16:18
Titel: Stringgrid: Bei Mausrad kein onclick aufrufen
Hi.
Bin grad dabei nen Zahlenspiel zu programmieren, dabei läuft alles in nem Stringgrid ab und man klickt mit der Maus auf die Zellen.
Da das Stringgrid mit der Zeit zig Zellen besitzen kann, ist es notwendig dass man scrollen kann. (Stringgrid in Scrollbox)
Wenn man das scrollen jetzt mim Mausrad macht wird immer das Onclick ereignis aufgerufen.
(Die selektierte Zelle wandert immer eine Zeile runter oder hoch.)
Ist es möglich das zu umgehn? Das scrollen soll weiterhin funktionieren.
Moderiert von
Gausi: Topic aus Sonstiges (Delphi) verschoben am So 29.05.2011 um 18:02
gnomecoder - So 29.05.11 16:47
Habs jetzt so gelöst dass ich drauf achte dass das stringgrid.height immer so groß ist dass man nicht scrollen muss, sondern in der scrollbox gescrollt wird, dann setze bei jedem Klick aufs Stringgrid den Fokus auf die Scrollbox.
Mit
Quelltext
1: 2:
| with (Sender as TScrollBox).VertScrollBar do Position := Position + 10; |
im onmousewheeldown ereignis kann man dann sogar die Scrollbox mim Mausrad scrollen.
Nur wird diese dann dann wieder ganz nach oben gescrollt wenn man auf nen element klickt was sich in der Scrollbox befindet :?
Lannes - So 29.05.11 17:01
Hallo,
hat das einen bestimmten Grund das StringGrid über eine ScrollBox zu scrollen?
Gausi - So 29.05.11 17:02
Das würde mich auch interessieren. Ein StringGrid hat doch selber schon Scrollbars dafür - warum das also in eine Scrollbox packen? :gruebel:
gnomecoder - So 29.05.11 17:07
weil ich, wenn ich mit dem Stringgrid scrolle, das oben beschriebene Problem habe.
wenn ich erfahre wie ich umgehe, dass das Onclick Ereinis beim scrollen aufgerufen wird, ist die Scrollbox überflüssig, da habt ihr recht.
Edit: vllt als kleine ergänzung zum verständnis: ein Klick in ein Feld ist quasi eine Eingabe vom Benutzer, was als nächstes gemacht werden soll. Wenn also beim Scrollen irgendwelche felder 'angeklickt' werden, ist das unvorteilhaft^^
Gausi - So 29.05.11 17:42
Dann würde ich zu einem Komponentenwechsel tendieren. In der DP wird zwar erläutert, wie man das StringGrid anpassen kann, aber das halte ich nicht für besonders schön. Dann lieber das ganze mit einer anderen Komponente machen, wie z.B. dem VirtualStringTree. :nixweiss:
gnomecoder - So 29.05.11 18:01
Perfekt, die vorgeschlagene Lösung in dem Thread funktioniert super.
Danke.
Da es nur nen kleines Projekt ist werd ich mal beim Stringgrid bleiben soweits jetzt funktioniert.
Mit Alternativen habe ich nämlich noch nicht gearbeitet^^
MDX - So 29.05.11 19:30
Gausi hat folgendes geschrieben : |
| [...] Dann lieber das ganze mit einer anderen Komponente machen, wie z.B. dem VirtualStringTree. :nixweiss: [...] |
Bleib bloß damit weg :P
Gausi - So 29.05.11 19:44
MDX hat folgendes geschrieben : |
| Bleib bloß damit weg :P |
Wieso? Das Ding ist zwar am Anfang etwas umständlich zu benutzen. Aber wenn man den Dreh einmal raushat, ist der VST echt prima, weil man den ganz den eigenen Bedürfnissen anpassen kann.
jaenicke - So 29.05.11 19:48
Ich nehme an wegen seines Threads, den ich bisher zu faul zu beantworten war. :mrgreen:
MDX - So 29.05.11 20:10
Ja, ganz genau weil alles am Anfang total kompliziert und unverständlich ist :D (Gibt leider irgendwie keine guten Tutorials...)
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!