Delphi-PRAXiS
Seite 17 von 20   « Erste     7151617 1819     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   FireMonkey Sammelthread (https://www.delphipraxis.net/162660-firemonkey-sammelthread.html)

stahli 23. Mär 2013 10:37

AW: FireMonkey Sammelthread
 
Das Leben Programmieren kann so einfach sein: AutoCapture :-)

Zitat:

Beschreibung: Gibt an, ob das Steuerelement Mausereignisse abfängt.

Wenn ein Steuerelement die Mausbotschft erhält, werden alle nachfolgenden Mausereignisse an dieses Steuerelement übergeben, bis der Benutzer die Maustaste loslässt.

Siehe auchFMX.Types.TControl.MouseDown

stahli 3. Mai 2013 20:28

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?

Union 3. Mai 2013 22:16

AW: FireMonkey Sammelthread
 
Musst Du Keydown überschreiben und dort auf Key = vkTab abfragen.

stahli 3. Mai 2013 22:22

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;
...

Union 3. Mai 2013 22:31

AW: FireMonkey Sammelthread
 
Ich meinte das Form...

stahli 3. Mai 2013 23:04

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.

Union 3. Mai 2013 23:17

AW: FireMonkey Sammelthread
 
Ich habs doch getestet. Wenn Du das Keydown im Form überschreibst, kommt dort Tab definitiv an.

stahli 3. Mai 2013 23:24

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!

Union 4. Mai 2013 01:48

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.

Thom 4. Mai 2013 09:07

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:
 if (Key = vkTab) and (not Assigned(FFocused) or (Assigned(FFocused) and not FFocused.WantTabs)) then
  [...]
Aber nö - Delphi-Programmierer brauchen so was nicht...

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.
Seite 17 von 20   « Erste     7151617 1819     Letzte »    

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