Odvolávám, co jsem odvolal...
sub ControlValue(oEvt)
'Makro zjisti, ze ktereho datoveho pole bylo volano a podle toho dosadi
do spravne bunky vybrane datum
Dim oDocument as object, oSheets as object, oSheet as object, oDpage as
object, oDatum as object
Dim Result as string, SheetName as string
Dim radek as integer
SheetName = "List1" 'Nazev listu
oDocument = ThisComponent
oSheets = oDocument.Sheets
oSheet = oSheets.GetByName(SheetName)
select case oEvt.Source.Model.Name 'Zjisteni nazvu objektu, ktery
vyvolal udalost
case "Datum1" 'Nazev datového pole pro bunku A1
radek = 0
case "Datum2" 'Nazev datového pole pro bunku A2
radek = 1
end select
Result= oEvt.Source.text 'Hodnota data jako text
oSheet.getCellByPosition(0, radek).Value = dateValue(Result)
end sub
Každá událostní procedura může mít jako parametr událost, ze které se dá
zjistit, o jakou událost se jedná, kdo událost vyvolal atd. Lze tak mít
na listu více datových polí s různými jmény. Událostní procedura
zjistí, ze kterého datového pole byla vyvolána a podle toho rozhodne, do
které buňky vloží výslednou hodnotu. Na uživateli tak zůstává správně
vyplnit příkaz select case.
Jiří Spitz
Jiří Spitz napsal(a):
Uvedená procedura sice plní to, co od ní žádáte (vkládá do buňky A1
datum z ovládacího prvku "Datum" na listu "List1"), ale tento přístup je
v praxi velmi těžko pužitelný. Pokud potřebujete mít takových ovládacích
prvků napojených do Calcu na formuláři více, musel byste pro každý z
nich napsat stejnou funkci s jiným názvem, Funkce totiž nemá žádnou
možnost se dozvědět, který z ovládacích prvků ji vyvolal a tudíž do
které buňky uložit výslednou hodnotu.
To by se asi dalo řešit použitím "Listeneru", který hlídá výskyt
určitých typů událostí (v našem případě změn hodnot v ovládacích prvcích
typu datum), ale tak daleko jsem zatím ve výzkumu OOo Basicu nedospěl.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]