Ktoś wie jak tego dokonać w MainMenu lub ogólnie w programie aby po tych klawiszach wykonywał odpowiednią procedurę ?
Za żadne skarby nie mogę uporać się z taką kombinacją klawiszy
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
{$WARN COMPARING_SIGNED_UNSIGNED OFF}
if (Shift = [ssShift]) and (Key = VkKeyScan((','))) then
ShowMessage('Działa.');
end;
z ciekawosci zaczalem szukac czym jest wlasciwie typ TShortCut.
znalazlem:
TShortCut = Low(Word)..High(Word);
tylko ze nie lapie tej budowy, moze to ktos wyjasnic?
i jak np z poziomu kodu przypisac do tego skrot?
//znalazlem fajne funkcje:
function ShortCut(Key: Word; Shift: TShiftState): TShortCut;
begin
Result := 0;
if WordRec(Key).Hi <> 0 then Exit;
Result := Key;
if ssShift in Shift then Inc(Result, scShift);
if ssCtrl in Shift then Inc(Result, scCtrl);
if ssAlt in Shift then Inc(Result, scAlt);
end;
procedure ShortCutToKey(ShortCut: TShortCut; var Key: Word; var Shift: TShiftState);
begin
Key := ShortCut and not (scShift + scCtrl + scAlt);
Shift := [];
if ShortCut and scShift <> 0 then Include(Shift, ssShift);
if ShortCut and scCtrl <> 0 then Include(Shift, ssCtrl);
if ShortCut and scAlt <> 0 then Include(Shift, ssAlt);
end;
a wracajac do samego pytania.... reczne wpisanie z klawiatury frazy: "Shift+," i wcisniecie Enter powoduje przypisanie skrotu wiec nie wiem w czym problem...
i nie wiem czemu pytasz o "<" skoro to jest to samo co Shift+przecinek.
Boże... jaki ja jestem głupi...
Ja uporczywie próbowałem wklepać shift+< a nie pomyślałem i nawet do głowy mi nie przyszło, że to jest to samo co shift+,
Dzięki :)
TShortCut = Low(Word)..High(Word);
tylko ze nie lapie tej budowy, moze to ktos wyjasnic?
typ zakresowy, od wartości low(word) do wartości high(word) - czyli od 0 do 65535, w rezultacie po prostu word.
podobnie można:
type cyfra = 0..9;
tsign = -1 ..+1;
a ile taka zmienna zajmuje? tyle co najblizszy typ „prawdziwy”, czyli w powyższych wypadkach byte
i <code noframe>shortint
.
więc po co to? żeby lepiej wyrazić nasze intencje, poza tym możemy włączyć kontrolę zakresów {$R+}
i będzie nam się ładnie wysypywać po przekroczeniu.