Klávesové zkratky na tomto webu - základní
Přeskočit hlavičku portálu

Programování pro PalmOS počítače krok za krokem (58)

aktualizováno 
Dnes si doplníme funkce pro zobrazení klávesnice a nápovědy ke Graffiti a vytvoříme funkci pro obsluhu událostí uživatelské nabídky.

4.28 Zobrazení klávesnice a nápovědy ke Graffiti

Popsali jsme si funkce, které použijeme při obsluze schránky v menu na kartě Editace. Obvykle bývají tyto příkazy pro práci se schránkou na kartě Editace oddělené od dvou dalších příkazů: zobrazení klávesnice a nápověda ke Graffiti.

void SysGraffitiReferenceDialog(ReferenceType typ)

Zobrazí nápovědu ke Graffiti.

Vstupní parametry
  • typ - jaká nápověda bude zobrazena. Tento parametr musí mít hodnotu referenceDefault.

Funkce SysGraffitiReferenceDialog() zobrazí na displeji nápovědu ke Graffiti. Nemůžeme však zvolit, která stránka nápovědy bude zobrazena. Jediná možná hodnota parametru, kterým funkci předáváme, je referenceDefault: zobrazení první stránky nápovědy ke Graffiti.

void SysKeyboardDialog(KeyboardType typ)

Zobrazí na displeji klávesnici pro editaci textu v políčku.

Vstupní parametry
  • typ - jaká klávesnice bude zobrazena:
    • kbdAlpha - klávesníce QWERTY
    • kbdNumbersAndPunc - číselná klávesnice
    • kbdAccent - klávesnice s národními znaky
    • kbdDefault - standardní klávesnice (s číslicemi pro políčka, ve kterých musíme zadat číslo, jinak s písmenky)

Zavoláme-li funkci SysKeyboardDialog(), zobrazí se na displeji formulář klávesnice. Ve spodní části formuláře jsou uspořádána tlačítka odpovídající jednotlivým znakům, nad nimi je políčko, do kterého znaky vpisujeme. Do políčka je zkopírován obsah aktivního políčka. Při opuštění formuláře klávesnice je text políčka zkopírován zpět do původního formuláře.

4.29 Funkce pro obsluhu příkazů na kartě Editace

Teď už umíme napsat funkci, která obsluhuje všechny příkazy na kartě Editace. Pokud je v našem programu více než jeden formulář, na kterém jsou políčka, je výhodné použít stejné identifikátory příkazů menu pro stejné akce (například PolozkaMenuKopiruj pro příkazy "Kopíruj"). Příklad je zvýrazněn v rámečku:

MENU ID MenuVstupniho
BEGIN
  PULLDOWN "Program"
  BEGIN
    MENUITEM "O Programu" ID PolozkaMenuOProgramu "O"
  END
  PULLDOWN "Editace"
  BEGIN
    MENUITEM "Zpet" ID PolozkaMenuZpet "U"
    MENUITEM "Vyrizni" ID PolozkaMenuVyrizni "X"
    MENUITEM "Kopiruj" ID PolozkaMenuKopiruj "C"
    MENUITEM "Vloz" ID PolozkaMenuVloz "P"
    MENUITEM "Vyber vse" ID PolozkaMenuVyberVse "S"
    MENUITEM SEPARATOR
    MENUITEM "Klavesnice" ID PolozkaMenuKlavesnice "K"
    MENUITEM "Graffiti" ID PolozkaMenuGraffiti "G"
  END
END

MENU ID MenuVystupniho
BEGIN
  PULLDOWN "Program"
  BEGIN
    MENUITEM "O Programu" ID PolozkaMenuOProgramu "O"
  END
  PULLDOWN "Editace"
  BEGIN
    MENUITEM "Kopiruj" ID PolozkaMenuKopiruj "C"
    MENUITEM "Vyber vse" ID PolozkaMenuVyberVse "S"
  END
END

Pokud jsou takto v každém menu naší aplikace definovány stejné identifikátory pro stejné příkazy, můžeme seskupit obsluhu těchto příkazů do jedné funkce. Ve funkci, která bude obsluhovat příkazy menu na kartě editace musíme:

  • Pro příkazy pracující se schránkou (Zpět, Kopíruj, Vyřízni, Vlož) zavoláme příslušnou systémovou funkci (například FldUndo() a podobně), které předáme ukazatel na data aktivního políčka.
  • Pro příkaz Vyber vše zavoláme funkci FldSetSelection() tak, aby označila všechen text v políčku.
  • Zobrazení klávesnice zajistíme funkcí SysKeyboardDialog(kbdDefault).
  • Abychom zobrazili nápovědu ke Graffiti zavoláme funkci SysGraffitiReferenceDialog(referenceDefault).
Boolean FunkceMenuKartyEditace(UInt16 prvekMenu)
{
	FieldPtr policko;

	switch(prvekMenu)
	{
		case PolozkaMenuZpet:
		case PolozkaMenuKopiruj:
		case PolozkaMenuVyrizni:
		case PolozkaMenuVloz:
		case PolozkaMenuVyberVse:

			policko = ZjistiEditovanePole();
			
			if (!policko)
			{
				return false;
			}

			if(prvekMenu == PolozkaMenuZpet)
			{
				FldUndo(policko);
			}
			else if(prvekMenu == PolozkaMenuVyrizni)
			{
				FldCut(policko);
			}
			else if(prvekMenu == PolozkaMenuKopiruj)
			{
				FldCopy(policko);
			}
			else if(prvekMenu == PolozkaMenuVloz)
			{
				FldPaste(policko);
			}
			else if(prvekMenu == PolozkaMenuVyberVse)
			{
				FldSetSelection(policko, 0, FldGetTextLength(policko));
			}

			return true;

		case PolozkaMenuKlavesnice:
			SysKeyboardDialog(kbdDefault);
			return true;

		case PolozkaMenuGraffiti:
			SysGraffitiReferenceDialog(referenceDefault);
			return true;

		default:
			return false;
	}
}

Důležitou součástí naší funkce FunkceMenuKartyEditace() je zjištění, které políčko je aktivní. Pokud není aktivní žádné políčko (funkce ZjistiEditovanePole(), kterou jsme si popisovali v minulém díle vrátí hodnotu NULL) tak logicky nejsou příkazy schránky podporovány.


Příště si do naší aplikace zařadíme kompletní obsluhu menu a drobným domácím úkolem ukončíme čtvrtou kapitolu.



Nejčtenější

Nové iPhony Xs budou stát až 43 500 korun. Do Česka dorazí 29. září

Matura Jan: Online #7043

Apple na akci Apple Keynote 2018 představil tři nové iPhony. Nástupce modelu X se jmenuje Xs, zvětšená varianta pak Xs...

To si ještě nikdo nedovolil, nejlepší iPhone je za neuvěřitelnou sumu

iPhone Xs/Xs Max

S nadsázkou, na nejlepší provedení nových iPhonů X bude potřeba hypotéka. Apple nový top model Xs Max s 512 GB paměti ...



Apple má tři nové iPhony. Podporují dvě SIM, ale v Česku to nefunguje

iPhone Xs/Xs Max

Apple letos představil tři nové iPhony, které navazují na loňský model X. Úplně nových smartphonů od Applu se ovšem...

Takto vypadá boj o zákazníky: pětkrát více dat a úhrada smluvní pokuty

Slovenský operátor O2 navýšil základní data u vybraných tarifů

Od revoluce v roce 2013 zažívá český mobilní trh spíše menší otřesy, zákazníci operátorů toužící po neomezeném tarifu s...

T-Mobile přidává k tarifům data navíc. Na prodejně ovšem nepochodíte

T- Mobile.

Není pochyb, že se boj o zákazníky z hlasových služeb přesunul do oblasti mobilních dat. Potvrzuje to i aktuální akční...

Další z rubriky

Online randění pozastaveno. Facebook nechtěně odstřihl uživatele od Tinderu

Aplikace Tinder

Změna bezpečnostních nastavení Facebooku v reakci na nedávné skandály s úniky dat má celkem závažný důsledek pro ty,...

Vyrážíte na dovolenou? Tyto aplikace by neměly chybět ve vašem mobilu

Ilustrační snímek

Mobilní aplikace jsou dnes v mnoha případech neodmyslitelným pomocníkem v celé řadě situací a letní cestování a...

Na dovolené se můžete seznámit i nespálit

Ilustrační snímek

Na dovolenou si bereme kde co, ovšem počítač/notebook často zůstává doma. Ten je na jedné straně prostředkem k...

Najdete na iDNES.cz