für ein vorhaben brauche ich onkeyup von Form1.
Ich dachte immer das wird erst ausgelöst sobald ich die Taste loslasse, richtig ?
z.b.
ich drücke STRG+ALT+S und halte dabei STRG+ALT+S gedrückt.
dann wird es trotzdem ausgelöst !
Ist das verhalten jetzt richtig ? oder handelt es sich um ein Bug ?
der Grund:
Bei meinem Projekt verwende ich ein Mainmenu. Das Mainmenu hat ja sowieso schon einige Mängel z.b. beim Erstellen im Desinger und die ShortKey gehen nicht.
Sobald ich ein TPageControl oder ähnliches auf mein Form habe geht es schon wieder nicht.
Dafür wollte ich eine einfache klasse schreiben die in etwa so Funktionieren sollte:
Beim Erstellen der Klasse gibt du ihr ein Form. Beim Constructur der Klasse wird onKeyPrieview auf True gestellt und onKeyUp mit einem Ereignis belegt.
Mehr nicht.
Jetzt wollte ich beim drücken einer Taste die gesammte Mainmenu Struktur durchgehen.
Dafür habe ich mir folgende Funktion ausgedacht:
Code: Alles auswählen
function TMenuKey.FindMenuShortKey(const key: word; shift: TShiftState
): TMenuitem;
function GetMenu(aMenu:TMenuitem; const key: word; shift: TShiftState):TMenuitem;
var
i:Integer;
aKey:Word;
aShift:TShiftState;
begin
for i:=0 to aMenu.Count-1 do begin
ShortCutToKey(aMenu.Items[i].ShortCut,aKey,aShift);
if (aKey = key) and (aShift = shift) then begin
writeln('OK:',aMenu[i].caption);
break;
end;
if aMenu.items[i].count > 0 then
getMenu(aMenu[i],key,shift);
end;
end;
var
i:Integer;
begin
writeln('TEST');
for i:=0 to fForm.Menu.Items.count-1 do
GetMenu(fForm.Menu.Items[i],key,shift);
end;
strg+h z.b.
aber nicht mit
strg+alt+h. ich vermute das hängt mit dem onKeyUp Problem zusammen.
Edit:
Der Fehler ist, wenn ich die Taten länger drücke, wird es ausgelöst obwohl ich die Taste gar nicht losgelassen habe !