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

LG V30
LG začalo určovat trendy. Ukazuje, jak má vypadat moderní smartphone

Z nenápadného výrobce se stal jeden z určujících producentů chytrých telefonů. Chystaná novinka to zanedlouho potvrdí.  celý článek

Samsung Galaxy S8
Prodeje Galaxy S8 nemusí být růžové, pomoci by mohl Note 8

Samsung při zmínce o prodejích svého nového top modelu pouze sdělil, že se prodává nejlépe v historii, ale žádná čísla neuvedl. Nyní to vypadá, že prodeje...  celý článek

Apple iPhone 6 a iPhone 6 Plus
Apple vyprodává iPhony. Už stačí necelých 10 tisíc i na velký model

Apple v nejbližší době představí nové iPhony. Aby vyprázdnil sklady, vyprodává starší modely. V Česku tak tento týden klesla cena modelu 6 pod 10 tisíc korun.   celý článek

Samsung GearFit2 Pro
Náramek dovolí plavání i potápění. Přinese i podporu Spotify

Ačkoli bude hlavní hvězdou blížící se tiskové konference Samsungu v New Yorku již sedmá generace phabletu Note, jedinou odhalenou novinkou nebude. Spolu s ním...  celý článek

příslušenství k Samsungu Galaxy S8+
Natáhněte si na špičkový Samsung třeba mechanickou klávesnici

Vlastníci Samsungu Galaxy S8/S8+ mají spoustu možností, jakými doplňky si vylepšit svůj smartphone. Na výběr jsou různé kryty, pouzdra, sluchátka plus...  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

Záchranná služba představila ve středu oficiální mobilní aplikaci, pomůže...
Aplikaci české záchranky používá už 330 tisíc lidí, čekají ji vylepšení

Aplikaci Záchranka, která v naléhavých případech umožňuje přivolat si pomoc přes mobil, čekají v dubnu inovace. Spustí se zdokonalené funkce pro neslyšící a...  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

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.