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]

Odpovedet emailem