2009-06-04 10 views
2

Gibt es trotzdem eine TSpeedButton zu zwingen, flach gezogen zu werden?Einen TSpeedButton abflachen?

Bei Verwendung eines Touchscreen-Monitors bewegt sich die Maus nicht aus der Schaltfläche heraus, sodass der hervorgehobene Rahmen auch dann auf dem Bildschirm bleibt, wenn Sie auf eine andere Schaltfläche klicken.

Antwort

3

Es sieht nicht so aus, als könnte ich ohne einen Touchscreen wiedergeben, aber wenn ich Sie richtig verstehe, wenn jemand einen Knopf berührt, dann wird es heiß (entweder steigt auf, wenn Down wahr ist, oder Hervorhebung), Aber wenn sie eine andere Taste berühren, wird der Mausausgang nicht ausgelöst, so dass sie heiß bleibt. Ist das korrekt?

Es gibt mehrere Möglichkeiten, dies zu beheben. Wahrscheinlich ist das einfachste bei jedem Klick-Ereignis ein Aufruf einer Methode, die die Maus von der Schaltfläche weg bewegt.

Mouse.CursorPos := Point(0,0); 

Wenn das nicht genug ist, dann können Sie die Taste deaktivieren, die auf geklickt wurde, bewegen Sie die Maus aus, aktualisieren Sie es, und es wieder aktivieren. Eine deaktivierte Taste kann nicht heiß sein. Vielleicht möchten Sie einen Timer, der die Schaltfläche aktiviert, nachdem sie für eine Sekunde mit der Maus deaktiviert wurde, aber ich wette, dass nur das Bewegen der Maus genug sein wird.

Außerdem dachte ich immer, es wäre Käse, wenn ein Mauszeiger auf dem Knopf, den ich gerade berührt habe, übrig geblieben ist, so dass Ihr Touch-System dadurch edler aussieht.

+0

Danke Jim, das funktioniert super. Ich werde wahrscheinlich eine Option brauchen, um es auszuschalten, es ist seltsam, wenn Sie eine echte Maus verwenden. – stukelly

+0

Sie haben Recht, wenn Sie eine andere Taste berühren, wird der Mausausgang nicht ausgelöst. – stukelly

+0

Das klingt dann wie ein Fehler in der VCL, da es OnExit auslösen soll, wenn es erkennt, dass die Maus aus irgendeinem Grund in ein anderes Steuerelement verschoben wurde. Welche Version von Delphi/BCB verwenden Sie? –

2

Haben Sie versucht, die Eigenschaft Flat auf True zu setzen?

+0

Die Schaltfläche hat sich nicht geändert. Ich denke, dass es etwas mit der MouseInControl Eigenschaft zu tun hat. – stukelly

+0

Schade. Es war einen Versuch wert. – gabr

Verwandte Themen