OnKeyDown

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

OnKeyDown

Beitrag von Lincoln Six Echo »

OnKeyDown in einer eigenen Komponente überschrieben, abgeleitet von TCustomControl.

procedure WMGetDlgCode(var Message: TLMNoParams) ebenfalls überschrieben.

Egal was ich nun für Keys belege oder nicht, die Reaktion auf "Pfeil-links" /"Pfeil-rechts" erfolgt immer nur einmal, dann hat plötzlich ein anderes Control den Focus und reagiert auf die Tasten.

Dabei: TabStop := true.

Hat jemand eine Idee ?


.....

Code: Alles auswählen

procedure TFLCustomImageEditor.WMGetDlgCode(var Message: TLMNoParams);
begin
  inherited;
  Message.Result := Message.Result or DLGC_WANTALLKEYS or DLGC_WANTTAB;
end;
 
procedure TFLCustomImageEditor.KeyDown(var Key: Word; Shift: TShiftState);
begin
  case Key of
      VK_LEFT : MoveLayer(layer,-1,0);
  end;
end;
 
.....
Zuletzt geändert von Lori am So 21. Sep 2014, 10:22, insgesamt 1-mal geändert.
Grund: Highlighter

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: OnKeyDown

Beitrag von Antrepolit »

Hast du evtl. eine konkrete Frage? Ideen habe ich viele zu allerlei Dingen.
Grüße, Antrepolit

care only if your os is really burning

Bitschubser
Beiträge: 61
Registriert: Mo 27. Aug 2012, 15:43

Re: OnKeyDown

Beitrag von Bitschubser »

Lincoln Six Echo hat geschrieben:OnKeyDown in einer eigenen Komponente überschrieben, abgeleitet von TCustomControl.
[...]
dann hat plötzlich ein anderes Control den Focus und reagiert auf die Tasten......
Einfach mal so ins Blaue:
Wenn du OnKeyDown nicht überschreibst, verschiebt dann die Pfeiltaste auch den Fokus? (Dann ist das wahrscheinlich bei deiner Kombination ursprünglich so beabsichtigt.)
Dann müßtest du in deiner "OnKeyDown" "Key" vor dem Rücksprung auf 0 setzen, damit der nicht noch von jemand anderem ausgewertet wird...

ruewa
Beiträge: 153
Registriert: Sa 12. Apr 2014, 14:43

Re: OnKeyDown

Beitrag von ruewa »

Probier's mal damit:

Code: Alles auswählen

procedure TFLCustomImageEditor.KeyDown(var Key: Word; Shift: TShiftState);
begin
  case Key of
      VK_LEFT : MoveLayer(layer,-1,0);
  end;
  Key := 0;                // damit wird die nachfolgende Eventbearbeitung neutralisiert
end;
Gruß Rüdiger

Edit: Oh, sorry, Bitschubser war schneller, das hatte ich beim ersten Durchsehen überlesen.

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: OnKeyDown

Beitrag von Lincoln Six Echo »

Tatsächlich ist das die Lösung. Key := 0 eingefügt und der Fehler tritt nicht mehr auf.

Ist auch logisch, obwohl es unter Delphi XX anders geht.

Aber mittlerweile halte ich Lazarus definitiv für die bessere IDE.

Explizit danke an Bitschubser und Ruewa.

Antworten