![]() |
AW: FireMonkey Sammelthread
Das Leben Programmieren kann so einfach sein: AutoCapture :-)
Zitat:
|
AW: FireMonkey Sammelthread
Liste der Anhänge anzeigen (Anzahl: 1)
Ich setze eine TEdit-Ableitung in ein eigenes "Gitter" und reagiere auf bestimmte Tasteneingaben (z.B. schließen bei Enter oder ESC).
Auch auf Tab und Shift+Tab möchte ich selbst reagieren. Die kommen aber als Tastenereignisse nicht an. Ich habe auch nichts gefunden, wo die behandelt werden. Hat jemand einen Rat? |
AW: FireMonkey Sammelthread
Musst Du Keydown überschreiben und dort auf Key = vkTab abfragen.
|
AW: FireMonkey Sammelthread
KeyDown feuert bei Tab im FMX nicht.
Ich habe aber auch noch nicht gefunden, wo das vorher abgefangen wird.
Delphi-Quellcode:
procedure TssCellEdit.KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState);
begin // CodeSite.Send(IntToStr(Byte(KeyChar)) + ' ' + IntToStr(Key) + ' ' + IntToStr(Integer(ssShift))); if ((Key = 13) or (Key = 27)) and (KeyChar = #0) and (Shift = []) then SelectParentCell(Self, True) else if (KeyChar = #0) and (Shift = []) then begin case Key of 33: // PageUp if (CustomItemsBox <> nil) then begin CustomItemsBox.ShouldFocused := True; CustomItemsBox.MoveFocusPageUp; end else inherited; 34: // PageDown if (CustomItemsBox <> nil) then begin CustomItemsBox.ShouldFocused := True; CustomItemsBox.MoveFocusPageDown; end else inherited; ... |
AW: FireMonkey Sammelthread
Ich meinte das Form...
|
AW: FireMonkey Sammelthread
Da feuert Tab auch nicht (würde dann auch nicht wirklich helfen, da das Gitter das eigentlich intern regeln soll).
Ich vermute, dass "die Plattform" das vorher abfängt, finde aber den tatsächlichen Ablauf nicht. |
AW: FireMonkey Sammelthread
Ich habs doch getestet. Wenn Du das Keydown im Form überschreibst, kommt dort Tab definitiv an.
|
AW: FireMonkey Sammelthread
Oh sorry, ich habe da geschummelt... :oops:
Beim Formular habe ich jetzt OnKeyDown verwendet. Da kommen Tastaturereignisse (wenn ein Edit den Focus hat) an, aber nicht ein Tab. Insofern habe ich gefolgert, dass das auch im KeyDown so ist. Überschreiben bringt mir nichts, ich will ja mein Gitter in normalen Formularen einsetzen können. Aber ich werde mir morgen das FmxForm nochmal genauer ansehen, das muss ja (logisch gefolgert) den Tab dann eigenmächtig filtern und anders behandeln. Danke für Deine geduldige Hilfe! |
AW: FireMonkey Sammelthread
Das passiert in TCommonCustomForm.Keydown. Dort ist eine Abfrage die dafür sorgt dass das focussierte Control KEINEN Key mitbekommt. Danach wird dann der Focus auf das nächste focussierbare Element gesetzt. Danach wird nur noch der OnCanFocus Event aufgerufen in TControl.GetCanfocus.
|
AW: FireMonkey Sammelthread
Und da ist es wieder - das unausgegorene FireMonkey-Konzept: Anstatt jedem Control eine Eigenschaft WantTabs zu spendieren (ist nun wahrlich keine neue Erfindung - gibt's auch schon bei einigen VCL Controls), die standardmäßig false liefert und die Abfrage in TCommonCustomForm.KeyDown so zu gestalten:
Delphi-Quellcode:
Aber nö - Delphi-Programmierer brauchen so was nicht...
if (Key = vkTab) and (not Assigned(FFocused) or (Assigned(FFocused) and not FFocused.WantTabs)) then
[...] Ich kann allerdings nicht sagen, ob sich da in XE4 etwas getan hat, da ich dafür nur die Trial und damit keine Quelltexte habe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 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