[Erledigt] Fokus von Controls entfernen?

Rund um die LCL und andere Komponenten
Antworten
Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

[Erledigt] Fokus von Controls entfernen?

Beitrag von Komoluna »

Liebes Forum,

ich habe mir einen kleinen Karteneditor geschrieben, wo man mithilfe einer Listbox einen Gebäudetyp auswählen kann.
Wenn man ein Gebäude auf die Karte gesetzt hat soll man dieses mit den Pfeiltasten noch bewegen können(dies wird mit TForm.OnKeyDown und KeyPreview=true ausgelesen und funktioniert auch).
Das Problem ist, wenn man die Pfeiltasten drückt befindet sich der Control-Focus vom Fenster noch auf der ListBox, und somit wird nicht nur das Gebäude verschoben, sonder auch die Selektion in der ListBox verändert. Da ich mit Maus-Events und das Rendering in einer Paintbox mache, kann ich nicht den Fokus auf die PaintBox verschieben, da sie nur ein GUI Element ist und kein Input.
Eine "Unfocus" Prozedur scheint es nicht zu geben, was kann man da machen?

MFG

Komoluna
Zuletzt geändert von Komoluna am Sa 29. Mär 2014, 12:46, insgesamt 1-mal geändert.
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Fokus von Controls entfernen?

Beitrag von theo »

So einfach geht das afaik nicht.
Du kannst bei der Listbox Enabled:=false setzten oder eine von TCustomControl abgeleitete Paintbox machen, die den Focus erhalten kann.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Fokus von Controls entfernen?

Beitrag von Komoluna »

da ich nicht für jedes neue Control, was ich hinzufüge das enabled setzen möchte, habe ich jetzt einfach eine
Variable vom Typ TCustomControl auf meinem Fenster(unsichtbar). Bei PaintBox.OnMouseDown habe ich dann einfach FocusControl(UnusedFocus);
(so heißt die Variable/Komponente). Die übernimmt dann statt der Paintbox den Fokus.

MFG
Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: [Erledigt] Fokus von Controls entfernen?

Beitrag von Christian »

Du musst den Focus nach jeder Aktion auf dein Kartencontrol setzen.
Control.SetFocus;
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten