TEdit mit VK_RETURN
-
hi,
ich habe mir eine neue von TEdit abgeleitete Komponente gebastelt und wollte nun noch einbauen, dass beim drücken ein einstellbaren taste zum nächsten steuerelement auf einem formular gesprungen wird. jedoch scheint dass nicht so recht zu klappen. die auswertung der taste funktioniert, jedoch wird der focus nicht weitergegeben zu einem nächsten steuerelement.
// im KeyPress der neuen Komponente // FNextCtrlKey enthält die Taste (z.b. VK_RETURN) // fokus weitergeben wenn die spezifizierte taste gedrückt wurde if ((FNextCtrlKey == Key) || (GetKeyState(FNextCtrlKey) & 0x8000)) { // Parent muss vorhanden sein if (GetParentComponent()) { PostMessage(GetParentComponent(), WM_NEXTDLGCTL, 0, 0) ; Key = 0; inherited::KeyPress(Key); return; } }
wie kann ich das bewerkstelligen?
-
habs selber rausgefunden. die PostMessage anweisung durch folgende ersetzen.
((TControl*) GetParentComponent())->Perform(WM_NEXTDLGCTL, 0, 0);
-
Hallo,
Bei PostMessage müsste doch der erste Parameter das handle auf die Parent-Komponente sein also GetParentComponent()->Handle
Ciao
-
TComponent besitzt kein Handle!
-
funktioniert doch nicht so ganz. lediglich wenn das TEdit direkt auf dem Formular liegt und nicht extra noch auf einem TPanel oder TGroupBox.
-
Nimm doch einfach ParentWindow, anstelle von GetParentComponent() mit diesem grässlichen C-Cast.
-
ParentWindow bringt nix. damit gehts wieder gar nicht. man kann statt dem Cast und GetParentComponent auch einfach nur Parent nehmen
-
TControl hat natürlich kein Handle.
Aber müsste dein Parent nicht vom Typ TWinControl sein?
-
hab beim googlen was gefunden, was auch bei Panels und GroupBoxen geht...
// fokus weitergeben wenn die spezifizierte taste gedrückt wurde if ((FNextCtrlKey == Key) || (GetKeyState(FNextCtrlKey) & 0x8000)) { TCustomForm *Form = GetParentForm(this); if (Form) PostMessage(Form->Handle, WM_NEXTDLGCTL, 0, 0); Key = 0; inherited::KeyPress(Key); return; }
-
Hallo
warum sendest du nicht TAB an dein "TEdit"
MfG
Klaus