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
[Erledigt] Fokus von Controls entfernen?
-
- 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?
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.
Rekursion: siehe Rekursion.
Re: Fokus von Controls entfernen?
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.
Du kannst bei der Listbox Enabled:=false setzten oder eine von TCustomControl abgeleitete Paintbox machen, die den Focus erhalten kann.
-
- 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?
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
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.
Rekursion: siehe Rekursion.
-
- 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?
Du musst den Focus nach jeder Aktion auf dein Kartencontrol setzen.
Control.SetFocus;
Control.SetFocus;
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/