D
bitte um verzeihung, gemeint ist natürlich eine combobox (Style: DropDOwn)^^ (sonst würde das mit den Items ja keinen Sinn ergeben)
bei dir funktioniert das problemlos?
kann net sein^^
wir sprechen über diesen PART:
void __fastcall Tf_AutoDetect::FormKeyPress(TObject *Sender, char &Key)
{
switch (Key)
{
case ('a'): f_Editor->cb_Key->ItemIndex = 13; break;
case ('b'): f_Editor->cb_Key->ItemIndex = 14; break;
case ('c'): f_Editor->cb_Key->ItemIndex = 15; break;
case ('d'): f_Editor->cb_Key->ItemIndex = 16; break;
case ('e'): f_Editor->cb_Key->ItemIndex = 17; break;
case ('f'): f_Editor->cb_Key->ItemIndex = 18; break;
case ('g'): f_Editor->cb_Key->ItemIndex = 19; break;
case ('h'): f_Editor->cb_Key->ItemIndex = 20; break;
case ('i'): f_Editor->cb_Key->ItemIndex = 21; break;
case ('j'): f_Editor->cb_Key->ItemIndex = 22; break;
case ('k'): f_Editor->cb_Key->ItemIndex = 23; break;
case ('l'): f_Editor->cb_Key->ItemIndex = 24; break;
case ('m'): f_Editor->cb_Key->ItemIndex = 25; break;
case ('n'): f_Editor->cb_Key->ItemIndex = 26; break;
case ('o'): f_Editor->cb_Key->ItemIndex = 27; break;
case ('p'): f_Editor->cb_Key->ItemIndex = 28; break;
case ('q'): f_Editor->cb_Key->ItemIndex = 29; break;
case ('r'): f_Editor->cb_Key->ItemIndex = 30; break;
case ('s'): f_Editor->cb_Key->ItemIndex = 31; break;
case ('t'): f_Editor->cb_Key->ItemIndex = 32; break;
case ('u'): f_Editor->cb_Key->ItemIndex = 33; break;
case ('v'): f_Editor->cb_Key->ItemIndex = 34; break;
case ('w'): f_Editor->cb_Key->ItemIndex = 35; break;
case ('x'): f_Editor->cb_Key->ItemIndex = 36; break;
case ('y'): f_Editor->cb_Key->ItemIndex = 37; break;
case ('z'): f_Editor->cb_Key->ItemIndex = 38; break;
}
f_AutoDetect->Close();
}
UPDATE - PROBLEM GELÖST:
Nachdem ich die Zeile
f_AutoDetect->Close();
in der Funktion FormKeyPress() auskommentiert habe, ist mir aufgefallen, dass sich das Fenster was zum Drücken der gewünschten Taste auffordert trotzdem schließt, nach kurzem grübeln warum dem so ist, hab' ich erkannt, dass die selbe Zeile ja auch noch in der Funktion OnKeyDown() habe. Und BAM ... das war der Fehler, OnKeyDown() wird früher aufgerufen als OnKeyPress(), eigentlich klar. Das Ganze konnte also nicht funktionieren, weil bevor es dazu kam, dass durch das switch-Konstrukt in der OnKeyPress()-Funktion gegangen wird, das Fenster längst wieder geschlossen war. Es sei noch gesagt, dass OnKeyPress() nicht nur GROßBUCHSTABEN nimmt, sondern nur kleinbuchstaben. Das ganze funktioniert jetzt ohne die besagte Zeile in der OnKeyDown()-Funktion wunderbar, vielen Dank allen die sich Zeit für mein Problem genommen haben. Stell hier immer wieder gern meine Fragen!
[EDIT] OMFG, jetzt bekomm ich das Fenster AutoDetect nicht mehr zu. Die besagte Zeile steht nun nur noch in der OnKeyPress()-Funktion. Jetzt hab' ich angenommen -denk mal würden die meisten auch tun ;-)- ,dass erst durch die OnKeyDown()-Funktion gegangen wird, dann durch die OnKeyPress()-Funktion und dann ,unabhängig davon was jetzt tatsächlich gedrückt wurde, das Fenster geclosed wird! Dem ist nicht so, das Fenster schließt sich nur, wenn eine der Tasten im OnKeyPress()-Switch-Konstrukt gedrückt wurde, ansonsten bleibt das Fensterchen (AutoDetect) offen! Es scheint als würde OnKeyPress() einfach ignoriert, wenn schon OnKeyDown() "anschlägt". Hier nochmal der Code wies jetzt aussieht:
void __fastcall Tf_AutoDetect::FormKeyPress(TObject *Sender, char &Key)
{
switch (Key)
{
case ('a'): f_Editor->cb_Key->ItemIndex = 13; break;
case ('b'): f_Editor->cb_Key->ItemIndex = 14; break;
case ('c'): f_Editor->cb_Key->ItemIndex = 15; break;
case ('d'): f_Editor->cb_Key->ItemIndex = 16; break;
case ('e'): f_Editor->cb_Key->ItemIndex = 17; break;
case ('f'): f_Editor->cb_Key->ItemIndex = 18; break;
case ('g'): f_Editor->cb_Key->ItemIndex = 19; break;
case ('h'): f_Editor->cb_Key->ItemIndex = 20; break;
case ('i'): f_Editor->cb_Key->ItemIndex = 21; break;
case ('j'): f_Editor->cb_Key->ItemIndex = 22; break;
case ('k'): f_Editor->cb_Key->ItemIndex = 23; break;
case ('l'): f_Editor->cb_Key->ItemIndex = 24; break;
case ('m'): f_Editor->cb_Key->ItemIndex = 25; break;
case ('n'): f_Editor->cb_Key->ItemIndex = 26; break;
case ('o'): f_Editor->cb_Key->ItemIndex = 27; break;
case ('p'): f_Editor->cb_Key->ItemIndex = 28; break;
case ('q'): f_Editor->cb_Key->ItemIndex = 29; break;
case ('r'): f_Editor->cb_Key->ItemIndex = 30; break;
case ('s'): f_Editor->cb_Key->ItemIndex = 31; break;
case ('t'): f_Editor->cb_Key->ItemIndex = 32; break;
case ('u'): f_Editor->cb_Key->ItemIndex = 33; break;
case ('v'): f_Editor->cb_Key->ItemIndex = 34; break;
case ('w'): f_Editor->cb_Key->ItemIndex = 35; break;
case ('x'): f_Editor->cb_Key->ItemIndex = 36; break;
case ('y'): f_Editor->cb_Key->ItemIndex = 37; break;
case ('z'): f_Editor->cb_Key->ItemIndex = 38; break;
default : break;
}
f_AutoDetect->Close();
}
und
void __fastcall Tf_AutoDetect::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
switch (Key)
{
case (VK_F1): f_Editor->cb_Key->ItemIndex = 1; break;
case (VK_F2): f_Editor->cb_Key->ItemIndex = 2; break;
case (VK_F3): f_Editor->cb_Key->ItemIndex = 3; break;
case (VK_F4): f_Editor->cb_Key->ItemIndex = 4; break;
case (VK_F5): f_Editor->cb_Key->ItemIndex = 5; break;
case (VK_F6): f_Editor->cb_Key->ItemIndex = 6; break;
case (VK_F7): f_Editor->cb_Key->ItemIndex = 7; break;
case (VK_F8): f_Editor->cb_Key->ItemIndex = 8; break;
case (VK_F9): f_Editor->cb_Key->ItemIndex = 9; break;
case (VK_F10): f_Editor->cb_Key->ItemIndex = 10; break;
case (VK_F11): f_Editor->cb_Key->ItemIndex = 11; break;
case (VK_F12): f_Editor->cb_Key->ItemIndex = 12; break;
default : break;
}
}
'ne Idee?[/EDIT]
**[EDIT2]**Habe auch das Problem jetzt gelöst, indem ich die OnKeyUp()-Funktion zum Closen benutze, es bedarf als keiner Lösung des Problems, aber eine Erklärung, warum es nicht so wie vorher (hier: oben) funktioniert wär' trotzdem toll! [/EDIT2]
mfg dust