Mozna sprobowac to zrobic tak:
na formie ustawiamy właściwość "Key preview" na true i w zdarzeniu OnKeyDown wpisujemy
case Key of
VK_UP : UstawNextF;
VK_DOWN : UstawPrevF;
end
dodatkowo deklarujemy dwie procedurki:
procedure TForm1.UstawNextF;
var i,id : integer;
begin
for i:=0 to ComponentCount-1 do
if Components[i] is TWinControl then
if TWinControl(Components[i]).Focused then begin
id := i;
break;
end;
i := id+1;
if i > ComponentCount-1 then i := 0;
while ((i=id) or not ((Components[i] is TWinControl) and (TWinControl(Components[i]).CanFocus))) do
begin
Inc(i);
if i > ComponentCount-1 then i := 0;
end;
if i >=0 then
TWinControl(Components[i]).SetFocus;
end;
procedure TForm1.UstawPrevF;
var i, id : integer;
begin
for i:=0 to ComponentCount-1 do
if Components[i] is TWinControl then
if TWinControl(Components[i]).Focused then begin
id := i;
break;
end;
i := id-1;
if i < 0 then i := ComponentCount-1;
while ((i=id) or not ((Components[i] is TWinControl) and (TWinControl(Components[i]).CanFocus))) do
begin
Dec(i);
if i < 0 then i := ComponentCount-1;
end;
if i >=0 then
TWinControl(Components[i]).SetFocus;
end;
PS. pisalem szybko wiec prosze nie krytykowac ;P
Niestety sa problemy np z Memo, komponent przechwytuje komunikat klawisza.