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

Huawei P10 Plus patří mezi nejlépe se prodávající modely značky
Huawei si jde za svým cílem. Apple by mohl sesadit už v tomto čtvrtletí

Společnost Huawei chce být v roce 2021 největším prodejcem smartphonů. Před sebou má dvě překážky - Apple a Samsung. V uplynulém čtvrtletí se však čínský...  celý článek

Ilustrační snímek
Úřad chce regulovat mobilní trh. Může to zlevnit volání a rychlá data

Podle Českého telekomunikačního úřadu na trhu nefunguje hospodářská soutěž. Regulaci však bude předcházet veřejná konzultace a následně analýza trhu. Výsledky...  celý článek

rozbitý telefon
Revoluční patent: mobil si sám opraví prasklý displej

Zní to jako pořádné sci-fi, ale praskliny na displeji možná mobily v budoucnu opraví samy. Poslední patent Motoroly naznačuje, že se na takové technologii už...  celý článek

Soyes 6S
Nejmenší „iPhony“ na světě můžete mít za 1 300 korun

Kopie iPhonů nejsou žádnou novinkou, v čínských e-shopech jich najdeme desítky více či méně povedených. Mezi ty minimálně zajímavé patří mini smartphony Soyes....  celý článek

Motorola Moto X4
Toto je chystaná Moto X. Kdysi to bývala prémiovka

Řada Moto X bývala nejvyšší modelovou linií Motoroly, ale už loni tuto roli převzala kolekce Z. Nyní „xková“ řada hlásí návrat, ale model X4 nemíří na vrchol....  celý článek

Další z rubriky

Netradiční fotoaplikace Gudak vás donutí nad fotkami zase přemýšlet
Za 23 korun vám aplikace fotku z iPhonu ukáže až za tři dny

Vnímání fotografie se za posledních pár let výrazně změnilo. Díky záznamovým médiím již totiž nemusíme přemýšlet nad každým snímkem jako kdysi. Doby, kdy se...  celý článek

Ilustrační snímek
Na dovolené se můžete seznámit i nespálit

Na dovolenou si bereme kde co, ovšem počítač/notebook často zůstává doma. Ten je na jedné straně prostředkem k pohodlnému přístupu k informacím, na druhé pak k...  celý článek

Mobilní Messenger projde změnou, k nelibosti uživatelů v něm budou cílené...
Bez reklamy ani ránu. Bude už i na Facebook Messengeru v mobilu

Oblíbený mobilní kecálek se brzy promění. Facebook totiž do Messengeru po úspěšném testování implementuje cílené reklamy. Zobrazovat se budou na domovské...  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.