AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FormKeyDown erkennt vk_Left... nicht

Ein Thema von taaktaak · begonnen am 28. Mai 2008 · letzter Beitrag vom 11. Jun 2008
 
taaktaak

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

Re: FormKeyDown erkennt vk_Left... nicht

  Alt 29. Mai 2008, 07: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
 


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 08:14 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