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 (57)

aktualizováno 
Dnes si dokončíme popis několika funkcí, které použijeme při zpracování příkazů na kartě Editace.

4.27 Aktivní objekt formuláře a určení typu objektu

V každém formuláři může být jeden objekt aktivní. Aktivní objekt je ten, který právě zpracovává znaky zadávané uživatelem na plošce Graffiti (nebo pomocí klávesnice). V současné verzi operačního systému PalmOS mohou být aktivní objekty pouze políčka; v budoucích verzích může být typů aktivních objektů víc.

Je-li políčko aktivní, je na něm zobrazen blikající kursor. Kursor označuje místo, kam bude zapsán další znak, který zadáme pomocí Graffiti nebo klávesnice. Po zobrazení formuláře funkcí FrmDrawForm() nemusí být aktivní žádné políčko; kursor není vidět a znaky zadávané Graffiti nebo klávesnicí jsou ignorovány.

UInt16 FrmGetFocus(const FormType *formulář)

Zjistí, na kterém políčku se nachází kursor.

Vstupní parametry
  • formulář - ukazatel na strukturu obsahující data formuláře
Vrácená hodnota
  • noFocus - pokud ve formuláři není žádný aktivní objekt
  • index prvku formuláře, který je aktivní

Funkce FrmGetFocus() vrátí index prvku formuláře, na kterém se nachází kursor. Jednoznačnou identifikaci prvku formuláře získáme pomocí funkce FrmGetObjectId(). Pokud není žádný prvek formuláře aktivní, vrátí funkce FrmGetFocus() hodnotu noFocus.

void FrmSetFocus(FormType *formulář, UInt16 index)

Nastaví aktivní objekt (políčko) ve formuláři.

Vstupní parametry
  • formulář - ukazatel na strukturu obsahující data formuláře
  • index - index prvku formuláře, který si přejeme aktivovat, nebo konstanta noFocus, pokud si přejeme kursor skrýt

Jediné prvky formuláře, které můžeme funkcí FrmSetFocus() zatím aktivovat, jsou políčka. Políčka, na kterých může být kursor, mohou být buď samostatnou součástí formuláře, nebo mohou být uspořádána v tabulce. Pro příklad tabulky, která obsahuje políčka, se podívejte například do vestavěné aplikace ToDo; programování tabulek bude popsáno až v šesté kapitole.

Je-li aktivní prvek formuláře políčko, které je součástí tabulky, vrátí funkce FrmGetFocus() index tabulky, nikoliv index políčka. Tabulky budeme probírat v šesté kapitole; teď si jenom řekneme, že abychom zjistili, na kterém řádku tabulky je aktivní políčko, musíme použít speciální funkce manažera tabulek PalmOS.

Pro odlišení aktivního samostatného políčka od aktivního políčka v tabulce musíme použít funkci FrmGetObjectType(). Funkce FrmGetObjectType() určí typ prvku formuláře, jehož index jí předáme. Pokud chceme tedy použít funkci FrmGetFocus() k určení prvku formuláře, na kterém je kursor, musíme ověřit, že index aktivního prvku formuláře odpovídá políčku.

FormObjectKind FrmGetObjectType(const FormType *formulář, UInt16 index)

Určí typ objektu formmuláře (políčko, tlačítko a podobně).

Vstupní parametry
  • formulář - ukazatel na strukturu obsahující data formuláře
  • index - index prvku formuláře, jehož typ zjišťujeme
Vrácená hodnota

Označuje typ objektu. Některé hodnoty jsou

  • frmFieldObj - políčko pro úpravu textu
  • frmControlObj - tlačítko nebo přepínač
  • frmListObj - seznam
  • frmTableObj - tabulka
  • frmBitmapObj - obrázek
  • frmLabelObj - text
  • frmTitleObj - nadpis formuláře
  • frmPopupObj - tlačítko výběru ze seznamu
  • frmGraffitiStateObj - ukazatel stavu graffiti
  • frmGadgetObj - uživatelem definovaný objekt
  • frmScrollbarObj - posuvník

Chceme-li zjistit, zda je některé z políček formuláře aktivní, musíme nejprve získat index aktivního prvku formuláře. Poté musíme ověřit, zda se jedná o políčko, nebo o tabulku. V příštích verzích PalmOS mohou být i jiné druhy aktivních prvků. Proto doporučuji napsat jednoduchou obalující funkci jako v následujícím rámečku:

static FieldPtr ZjistiEditovanePole()
{
	FormPtr formular = FrmGetActiveForm();
	UInt16 zaostreni = FrmGetFocus(formular);
	FormObjectKind typObjektu;

	if(zaostreni == noFocus)
	{
		return NULL;
	}

	typObjektu = FrmGetObjectType(formular, zaostreni);

	if(typObjektu == frmFieldObj)
	{
		return FrmGetObjectPtr(formular, zaostreni);
	}
	else
	{
		return NULL;
	}
}

Funkce ZjistiEditovanePole() vrátí ukazatel na data aktivního políčka, nebo NULL, pokud není žádné políčko aktivní. V příští kapitole doplníme tuto funkci o práci s políčky v tabulkách.


Příště 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.





Nejčtenější

Fidget spinner mobil pořídíte za asi 350 korun.
Hit letošního roku už můžete mít i jako mobil. Stojí několik stovek

Hračka původně určená k relaxaci, fidget spinner, je hitem letošního roku. Její slávy využil výrobce z Hongkongu, který do ní vtěsnal celý funkční mobil....  celý článek

Fotografické čipy Samsung ISOCELL
Už nebudou vykukovat. Samsung představil mobilní foťáky Isocell

Špičkové chytré telefony mnohým nahradí digitální kompakt. Z fotografických čipů pro smartphony se tak stává zajímavý segment a Samsung patří i v tomto směru...  celý článek

Nokia 7
Nokia má novou sedmičku. Výbavou zaujme, cenou spíše ne

Další přírůstek do rodiny obnovené značky Nokia nese pořadovou číslovku sedm a vyplňuje prostor mezi střední třídou v podobě Nokie 6 a špičkovou Nokií 8. Její...  celý článek

Smartphony OnePlus sbírají a odesílají některá uživatelská data na servery v USA
Populární smartphony šmírují uživatele. Denně odešlou desítky MB dat

Matematik a softwarový inženýr Chris D. Moore si všiml podivného chování svého smartphonu OnePlus 2. Zjistil, že telefon sbírá až podezřele podrobné informace...  celý článek

iPhone 8 Plus
iPhony 8 nejdou na odbyt. Lépe se prodávají i loňské modely

O nové iPhony 8 není ve Spojených státech velký zájem. Dokonce se lépe prodává rok starý iPhone, který výrobce s nástupem modelu 8 zlevnil.  celý článek

Další z rubriky

Logo aplikace Sarahah
Už přes ni vyhrožovali smrtí. Přesto je aplikace extrémně populární

Vysoký nárůst popularity zaznamenala aplikace Sarahah, určená k posílání anonymních zpráv. Ačkoliv se v posledních týdnech těší velké oblibě, zahaluje ji také...  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

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

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.