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

V dnešním dílu uděláme krátkou odbočku, ve které si povíme o tom, jak je možné použít textové konstanty pro nápovědu. Po této odbočce doplníme do našeho postupně vznikajícího programu první funkci - ošetření tlačítka nápovědy.

3.14. Využití textových konstant

Ve druhé kapitole jsme se naučili definovat v souboru prostředků aplikace textové konstanty. Tato definice začíná klíčovým slovem STRING, po kterém následuje jednoznačná identifikace textové konstanty a text. Text může být na jednom nebo na více řádcích.

STRING ID JednoznacnaIdentifikace "Text..."

STRING ID JednoznacnaIdentifikace "Text..." \
                                  "...další text..." \
                                  "...a další text"

Tyto konstanty můžeme v naší aplikaci využít jako nápovědu pomocí funkce FrmHelp(). Této funkci předáme jako parametr jednoznačnou identifikaci textové konstanty.

void FrmHelp(UInt16 id)

Zobrazí formulář nápovědy.

Vstupní parametry
  • id - hodnota jednoznačné identifikace textové konstanty, která bude zobrazena ve formuláři nápovědy.

Funkce FrmHelp() zobrazí na displeji formulář nápovědy, ve kterém bude zobrazen text příslušné textové konstanty, která byla definována v souboru prostředků aplikace. V této konstantě může být použit znak '\n' označující vynucený přechod na nový řádek. Příklad dialogu nápovědy si můžete prohlédnout na obrázku dále.

Druhým možným využitím textových konstant je jejich zkopírování do řetězcové proměnné. K tomu slouží funkce operačního systému SysCopyStringResource().

void SysCopyStringResource(Char* text, Int16 id)

Zkopíruje textovou konstantu do řetězce.

Vstupní parametry
  • id - hodnota jednoznačné identifikace textové konstanty, která bude zkopírována do řetězce text
Výstupní parametry
  • text - proměnná, do které bude text zkopírován

Funkce SysCopyStringResource() neprovádí kontrolu délky kopírovaného řetězce. V naší aplikaci si musíme dát dobrý pozor, abychom do řetězcové proměnné neukládali text, který by přesáhl její velikost.

3.15. Druhý krok - oživení tlačítka pro nápovědu

Nyní můžeme do našeho programu doplnit ošetření tlačítka nápovědy. Vyjdeme z programu, který jsme vytvořili na začátku této kapitoly. Tento program nejprve doplníme o příslušnou textovou konstantu s textem nápovědy, například takto:

STRING ID TextOProgramu "Metoda stanoveni cilové vysky ditete dle midparenta\n\n"             "Vzorovy priklad z knihy \"Programování pro " 			...

Nesmíme zapomenout ani na definici příslušné konstanty TextOProgramu v hlavičkovém souboru vyska.h.

Takto definovanou textovou konstantu můžeme použít jako nápovědu, kterou zobrazíme na displeji pomocí funkce FrmHelp(). Nápověda, která se zobrazí na displeji při zavolání funkce FrmHelp(TextOProgramu), je na následujícím obrázku:

Funkci formuláře doplníme o ošetření zprávy ctlSelectEvent, která je generována po stisknutí libovolného tlačítka.

I když máme zatím ve formuláři jen jedno tlačítko, nesmíme zapomenout na větvení podle hodnoty parametru udalost->data.ctlSelect.controlID. Pouze v tom případě, obsahuje-li tento parametr jednoznačnou identifikaci tlačítka s otazníkem, zobrazíme nápovědu a necháme funkci dialogu vrátit hodnotu true. Doplněná funkce formuláře je v následujícím rámečku:

static Boolean UdalostHlavnihoFormulare(EventPtr udalost)
{
	Boolean zpracovano = false;

	switch(udalost->eType)
	{
		case frmOpenEvent:
			FrmDrawForm(FrmGetActiveForm());
			zpracovano = true;
			break;

		case ctlSelectEvent:

				// Tato udalost je volana vzdy pri stisknuti tlacitka.
				// Parametrem je mimo jine i cislo prostredku prvku formulare.
				// Vystupni parametr |zpracovano| muzeme nastavit jen
				// u tlacitek, ktera skutecne obsluhujeme.
				
			switch(udalost->data.ctlSelect.controlID)
			{
				case TlacitkoOProgramu:
					FrmHelp(TextOProgramu);
					zpracovano = true;
					break;
					
				default:
					break;
			}
			break;
			
		default:
			break;
	}

	return zpracovano;
}

Zdrojový text vytvořené aplikace pro Palm Pilot si můžete stáhnout zde. Pokud se nyní perem dotknete tlačítka s otazníkem, zobrazí se standardní dialog, ve kterém si můžete prohlédnout text nápovědy. Po opuštění tlačítkem Done se vrátíme zpět do našeho formuláře.


V příštím dílu si ukážeme, jak nastavovat a zjišťovat hodnotu přepínačů a políček k zaškrtnutí jednotlivě i po skupinách.