<p class="Head1"><help:key-word value="Události objektů" tag="kw66462_1" xmlns:help="http://openoffice.org/2000/help"/>Události u objektů</p>
<p class="Paragraph">Při vložení objektu do dokumentu můžete některým předem definovaným událostem přiřadit makro. Toto makro se pak spustí, pokud dojde k příslušné události. V sadě <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> lze tuto funkci použít v odpovídajícího dialogovém okně objektu. To znamená, že pokud je objektem rámec, je třeba použít dialogové okno <span class="T1">Rámec</span>, <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>a pokud je to obrázek, použijte dialogové okno <span class="T1">Obrázek</span> atd. V závislosti na vybraném objektu se seznam všech událostí definovaných pro aktuální objekt zobrazí na kartě <help:link Id="67665" xmlns:help="http://openoffice.org/2000/help"><span class="T1">Makro</span></help:link> v dialogovém okně Objekt nebo v dialogovém okně <span class="T1">Přiřadit makro</span>.</p>
<p class="Paragraph">Makro je obvykle formulováno v proceduře SUB. Výchozí složení procedury SUB je následující:</p>
<p class="Paragraph">Sub EventRoutine()</p>
<p class="Paragraph">[příkazové řádky]</p>
<p class="Paragraph">End Sub</p>
<p class="Paragraph">Procedura SUB EventRoutine musí být propojena s událostí. Spustí se, jakmile dojde k této události.</p>
<p class="Head2"><help:key-word value="Navázání speciálních událostí s rámci" tag="kw66462_2" xmlns:help="http://openoffice.org/2000/help"/>Propojení speciálních událostí s rámci</p>
<p class="Paragraph">Vložíte-li rámec do textového dokumentu, nezobrazí se pouze obecné události používané také u jiných objektů, například výběr objektu atd., ale také některé speciální události, které lze použít ke změně nebo přesunutí rámce. Tyto události lze zpracovat mnoha způsoby. Můžete je propojit s procedurou FUNCTION jazyka Basic, ve které lze rozhodnout, zda má být událost zpracována aplikací <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Writer nebo samotnou procedurou FUNCTION.</p>
<p class="Paragraph">U procedury FUNCTION lze nastavit některé parametry. První parametr je vždy název rámce. K určení způsobu zpracování lze použít celočíselnou hodnotu. Lze zadat následující hodnoty:</p>
<p class="Paragraph">0: Událost bude zpracována aplikací <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Writer.</p>
<p class="Paragraph">1: Událost bude zpracována procedurou FUNCTION.</p>
<p class="Paragraph">Vrácenou hodnotu 1 použijte například k určení, že žádný znak nebude možné zadat do rámce po zadání určitého řetězce znaků pomocí klávesnice, nebo k určení akce, která má být spuštěna po stisknutí určitých kláves. Tuto funkci ilustrují následující příklady:</p>
<p class="Paragraph">Je-li procedura FUNCTION KeyAlpha propojena s událostí Vkládání alfanumerických znaků, budou všechny speciální znaky zadané uživatelem nahrazeny vlastními znaky.</p>
<p class="PropText">Function KeyAlpha( sFrame as String, iCode as Integer ) as Integer</p>
<p class="PropText">Dim sChange as String</p>
<p class="PropText">iCode = &h00ff AND iCode REM only the lowermost byte correpsonds a key</p>
<p class="PropText"/>
<p class="PropText">REM a short transformation table</p>
<p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>KeyAlpha = 0 REM Character does not have to be replaced. <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Writer displays it</p>
<p class="PropText">Else</p>
<p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>rem use the changed string</p>
<p class="PropText">KeyAlpha = 1 REM replace input</p>
<p class="PropText">End If</p>
<p class="PropText"/>
<p class="PropText">End Function</p>
<p class="PropText"/>
<p class="Paragraph">V dalším příkladu je znázorněno, jak lze formátování přiřadit přímo z klávesnice. Je-li procedura FUNCTION KeyNoAlpha propojena s událostí Vkládání jiných než alfanumerických znaků, bude při použití předem stanovených klávesových zkratek přiřazeno předem definované formátování.</p>
<p class="PropText">Function KeyNoAlpha( sFrame as String, iKey as Integer ) as Integer</p>
<p class="PropText"/>
<p class="PropText">KeyNoAlpha = 1</p>
<p class="PropText"/>
<p class="PropText">Select Case iKey</p>
<p class="PropText">Case 5382: REM (Shift)+(Del) deletes all frame contents</p>
<p class="PropText">Case 12800: REM (Ctrl)(Shift)+(A) Aligns the frame to the center.</p>
<p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>Rem center the frame</p>
<p class="PropText">Case 12802: REM (Ctrl)(Shift)+(C) makes the background pinkish</p>
<p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>REM Set Background color= RGB(255,127,127)</p>
<p class="PropText"/>
<p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>Case else REM All other keys do not have special functions; thus try to execute them using $[officename ] Writer</p>
<p class="PropText"/>
<p class="PropText">KeyNoAlpha = 0</p>
<p class="PropText"/>
<p class="PropText">End Select</p>
<p class="PropText"/>
<p class="PropText">End Function</p>
<p class="PropText"/>
<p class="Paragraph">Předané parametry procedury FUNCTION závisí na odpovídající události:</p>