![]() |
Fokuswechsel zwischen zwei Komponenten
Hallo,
ich habe ein DBGrid über dem eine Lookupbox 'schwebt'. Navigiert man im Grid in ein Feld, welches ein Lookupfeld ist, so wird die Box sichtbar gemacht und der entsprechende Wert in der Box angezeigt. Für das OnKeyPress-Ereignis des Grid habe ich das folgende implementiert:
Delphi-Quellcode:
So wird die Box fokussiert sobald man eine Taste drückt.
procedure TForm_Main.DBGrid_DetailKeyPress(Sender: TObject; var Key: Char);
begin if not (key in ['a'..'z','A'..'Z','0'..'9'] )then exit; if (Grid.SelectedField.KeyFields = LookupBox.KeyField) then begin LookupBox.SetFocus; SendMessage(LookupBox.Handle, WM_Char, word(Key), 0); end; end; Für das Ereignis LookupBox_OnKeyDown:
Delphi-Quellcode:
So soll bei 'OnKeyDown' der Box, wenn Return, der Fokus an das Grid zurückgegeben werden und das nächste Feld den Fokus erhalten.
procedure TForm_Main.DBLookupBox_GridMasterKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState); var Index: Integer; begin if char(key)=char(VK_RETURN) then begin DBGrid_Master.SelectedIndex:= DBGrid_Master.SelectedIndex+1; DBGrid_Master.SetFocus; showmessage(IntToStr(DBGrid_Master.SelectedIndex)); end; end; Leider funktioniert das nur für das erste Feld. Für alle folgenden Felder wird der Fokus nicht gesetzt. Gebe ich den SelectedIndex aus, wird dieser korrekt inkrementiert. Wo ist mein Fehler? |
Re: Fokuswechsel zwischen zwei Komponenten
könnte es ein, daß das die box solange den focus hat, bis keyup abgearbeitet wurde?
gruß rené |
Re: Fokuswechsel zwischen zwei Komponenten
Hi,
dann sollte es aber gar nicht funktionieren. Es geht aber in der ersten Spalte des Grids... Weitere Ideen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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