Autor Téma: Klavesova zkratka  (Přečteno 82 krát)

Offline raul

  • Plnoletý
  • ***
  • Příspěvků: 191
  • Karma: 11
    • Verze Delphi: FPC :D
Klavesova zkratka
« kdy: 13-02-2018, 22:45:36 »
Zdarec lidi,
leta jsem nepsal GUI apku a ted badam - delam mikroskopickou aplikacku s jednim tlacitkem a par edity, a rad bych tam dal moznost spustit cosi na stisknuti nejake klavesy - treba Shist+F7 nebo tak. A vubec netusim jak. Event je stejny s tlacitkem, ktere tam je (nekdy disabled), jen je to takovej override toho disabled - fakt to myslim vazne a chci danou akci udelat :)

Poradite ?
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

Offline Delfin

  • Guru
  • *****
  • Příspěvků: 610
  • Karma: 27
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Klavesova zkratka
« Odpověď #1 kdy: 14-02-2018, 00:05:13 »
Zdarec lidi,
leta jsem nepsal GUI apku a ted badam - delam mikroskopickou aplikacku s jednim tlacitkem a par edity, a rad bych tam dal moznost spustit cosi na stisknuti nejake klavesy - treba Shist+F7 nebo tak. A vubec netusim jak. Event je stejny s tlacitkem, ktere tam je (nekdy disabled), jen je to takovej override toho disabled - fakt to myslim vazne a chci danou akci udelat :)

Poradite ?

Predne, pokud je tlacitko disabled, nema vyznam nechavat aktivni klavesovou zkratku. Pokud si za tim vsak stojis, TAction, coz by byla moje rada Ti v takto zmatenem navrhu nepomuze ;) Nicmene dobra, pokud tedy chces klavesovou zkratku pro "kliknuti" na disablovane tlacitko, muzes pouzit napr. komponentu TApplicationEvents a napsat pro ni handler udalosti OnShortCut, napr. pro vytvoreni klavesove zkratky pro celou aplikaci lze napsat:

Kód: Delphi [Vybrat]
  1. procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean);
  2. var
  3.   ShiftState: TShiftState;
  4. begin
  5.   if Msg.CharCode = VK_F7 then // pokud je prave stisknuta klavesa F7
  6.   begin
  7.     ShiftState := KeyDataToShiftState(Msg.KeyData); // "vestaveny" prevod KeyData na TShiftState
  8.     if ssShift in ShiftState then // pokud je (i mimo jine modifikacni klavesy) stisknuty Shift
  9.     begin
  10.       Button1.Click; // vyvola udalost kliknuti na tlacitko nehlede na jeho Enabled stav
  11.       Handled := True; // naznaci retezci udalosti ze byla klavesova zkratka zpracovana
  12.     end;
  13.   end;
  14. end;
« Poslední změna: 14-02-2018, 00:15:16 od Delfin »
I'm a soldier, so don't panic!

Offline raul

  • Plnoletý
  • ***
  • Příspěvků: 191
  • Karma: 11
    • Verze Delphi: FPC :D
Re:Klavesova zkratka
« Odpověď #2 kdy: 14-02-2018, 00:13:29 »
Nechci klikat na disablovany tlacitko, na tom netrvam. Tlacitko je disablovane proto, ze neni uplne bezpecne na nej nekdy cvaknout (ci stisknout enter, coz nekdy je ok ale nekdy ne). Kdyz ne, tak tam misto jineho tlacitka (a pripadneho omylu jeho stisku) chci dat prave klavesovou zkratku. Tzn TAction ? Nevim co je na tom zmateneho ? Je to stupid easy utilitka, ktera proste vygeneruje nejake soubory, kde nekdy muze byt v poho je prepsat, ale nekdy ne a to tak, ze vubec - a proto treba ten shift+neco apod to dostatecne zkomplikuje (samozrejme posleze s dotazem).

Ja zel pisu spis ty jaderny veci ci ruzne optimalizace a s GUI prijdu do styku jednou za x let, takze vim prd co se jak pouziva.
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

Offline raul

  • Plnoletý
  • ***
  • Příspěvků: 191
  • Karma: 11
    • Verze Delphi: FPC :D
Re:Klavesova zkratka
« Odpověď #3 kdy: 14-02-2018, 00:22:50 »
Je to utilitka pro me, takze tady neresim skorem nic, jen se mi proste nechce vypisovat desitky souboru s podobnym obsahem, takze generator. TAction facha - zalozil jsem akci a do jeji obsluhy dal dialog a posleze zavolani onoho generovani.

= Vyreseno pres TAction

== Moc dekuji !
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

Offline Delfin

  • Guru
  • *****
  • Příspěvků: 610
  • Karma: 27
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Klavesova zkratka
« Odpověď #4 kdy: 14-02-2018, 00:24:04 »
Neni zac. Ale tady jsem se spletl. Mel jsem za to ze jde o Delphi :-[
I'm a soldier, so don't panic!

Offline raul

  • Plnoletý
  • ***
  • Příspěvků: 191
  • Karma: 11
    • Verze Delphi: FPC :D
Re:Klavesova zkratka
« Odpověď #5 kdy: 14-02-2018, 00:27:12 »
V poho, TAction zabral. Znas to, at clovek neodcvaka nextnextnext a dpc.. Takze proto je to takto, generator ma neco vygenerovat, ale muze se stat ze by prepsal neco blbe, takze proto radeji nez pres dotaz tak slozitou klavesovku :D
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: