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ší

Honor 6A
Nenápadný premiant nižší třídy. Vyzkoušeli jsme Honor 6A

Nejlevnější model v nabídce značky Honor je dobrým příkladem toho, jak se mají dělat levné smartphony. Soustředí se na baterii, kvalitu displeje a na systém,...  celý článek

Microsoft Lumia 950 XL
Microsoft připravil dárek pro nejvěrnější fanoušky mobilních Windows

Mobilní Windows už nejsou pro Microsoft prioritou, jejich vývoj ukončil. Přesto americký gigant vydal stejně jako pro počítače aktualizaci Fall Creators Update.  celý článek

Vedoucímu hotelové služby explodoval v kapse košile Samsung Galaxy Grand Duos.
V kapse košile ucítil teplo, krátce poté jeho samsung explodoval

Nepříjemné chvilky zažil o poslední zářijové sobotě 47letý hotelový provozní Yulianto, v náprsní kapse jeho košile mu totiž explodoval telefon Samsung Galaxy...  celý článek

Smartphony s obřími displeji jsou čím dál oblíbenější a to i proto, že výrobci...
Králové mezi přerostlými smartphony. Z kapes vytáhnou hodně peněz

Smartphony s obřími displeji jsou čím dál oblíbenější a to i proto, že výrobci minimalizují jejich rámečky. Velké phablety jsou tak kompaktnější než kdy...  celý článek

Navigace testuje majáky v pražskému tunelu
Mobil se neztratí ani v tunelu Blanka. Zkusili jsme testovací majáky Waze

Populární navigační aplikace Waze se v Praze možná dočká příjemného vylepšení. V tunelu, kde není dostupný signál z navigačních satelitů GPS, se bude...  celý článek

Další z rubriky

Ilustrační snímek
S těmito aplikacemi se o dovolené neztratíte. Najdou let i levný hotel

Místo slovníku, mapy a průvodce už řada lidí vyráží na dovolenou na neznámé místo jen se svým telefonem. V mnoha situacích je totiž neocenitelným pomocníkem....  celý článek

Find Wifi funkce na Facebooku
Ušetříte za mobilní data. Facebook vám ukáže bezplatnou wi-fi

V aplikaci sociální sítě Facebook se objevila nová užitečná funkce - dovede vás nasměrovat k nejbližší veřejné wi-fi síti.  celý článek

Virus pro Android
Na aplikace alternativních taxi útočí virus. Pase po údajích ke kartám

Uživatelé mobilních aplikací alternativních taxi včetně aplikace Uber by měli být obezřetní. Ohrožuje je totiž nový trojský kůň, který od uživatelů láká údaje...  celý článek

Najdete na iDNES.cz



mobilní verze
© 1999–2017 MAFRA, a. s., a dodavatelé Profimedia, Reuters, ČTK, AP. Jakékoliv užití obsahu včetně převzetí, šíření či dalšího zpřístupňování článků a fotografií je bez souhlasu MAFRA, a. s., zakázáno. Provozovatelem serveru iDNES.cz je MAFRA, a. s., se sídlem
Karla Engliše 519/11, 150 00 Praha 5, IČ: 45313351, zapsaná v obchodním rejstříku vedeném Městským soudem v Praze, oddíl B, vložka 1328. Vydavatelství MAFRA, a. s., je členem koncernu AGROFERT.