Einzelnen Beitrag anzeigen

taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#8

Re: FormKeyDown erkennt vk_Left... nicht

  Alt 29. Mai 2008, 08:58
Guten Morgen Zusammen!

@bluesbear: Danke für den Hinweis, ATI ist in meinem Fall unschuldig. Es stimmt mich allerdings nachdenklich, dass Programme in der Lage sind, das Verhalten eines anderen Programmes so grundlegend zu beeinflussen. Hat sicherlich in bestimmten Fällen seine Vorteile, aber wenn das praktisch unbemerkt geschieht, dann kann man ja auf der Suche nach der Ursache für ein absonderliches Verhalten ja geradezu Verzeifeln.

@SirThornberry: Besonderen Dank für dein Posting, obwohl ich die Angelegenheit schon ad acta gelegt hatte. Hatte es ergebnislos mit GetDlgCode() und einer eigenen WinProc versucht. Der Hinweis

Zitat:
Allerdings nur, wenn kein Control den Focus hat (ansonsten gehen die Tasten an das Control (selbst mit KeyPreview := True))
löst nun auch auf, warum es nicht funktioniert hat: Auf meinen ansonsten leeren Test-Forms ist standardmäßig immer ein Close-Button placiert. Und der hat nach Aufruf natürlich den Focus.

Mit ActiveControl:=nil funktioniert's - nun stellt sich allerdings die Frage, wo man den Befehl sinnvoll anordnet. OnFormActivate() wäre eine Möglichkeit: Dann werden die Tasten erkannt, bis irgendein anderes Control den Focus bekommen hat. Danach ist Schluss, da ActiveControl aktualisiert wird und nicht mehr nil ist. Die Reaktion, nun in allen focussierbaren Controls in deren OnEnter() das ActiveControl auf nil zu setzen, ist nicht praktikabel, da dann z.B. Buttons "ihren" Click nicht mehr empfangen. Also müssten, um dies auch dem Anwender deutlich zu machen, die "störenden" Controls deaktiviert (und auch wieder aktiviert) werden.

Dazu fällt mir im Augenblick keine vollständig automatisierte Lösung ein. Hmm, oder so: Man wertet das OnClick() des Image aus, in dem das Bitmap verschoben werden soll. Zur Kennzeichnung, dass nun das Image "den Focus" hat, zeichnet man einen farbigen Rahmen um das Image. Im OnClick() werden alle "gefährlichen" Controls disabled und ActiveControl auf nil gesetzt. Schön und gut, aber dieser Verschiebemodus muss auch wieder ausgeschaltet werden können. Also bei erneutem OnClick() vice versa!?

Hm, da ist es wohl deutlicher, wenn es einen separaten Button gibt, der dieses An/Aus steuert.

Tja, es gibt verschiedene Lösungsansätze, schauen wir mal...
Ralph
  Mit Zitat antworten Zitat