sub ControlValue

Dim oDocument as object, oSheets as object, oSheet as object, oDpage as object, oDatum as object
        Dim Result as string, SheetName as string, ControlName as string
        
        SheetName = "List1"                   'Nazev listu
        ControlName = "Datum"         'Nazev ovladaciho prvku

        oDocument = ThisComponent
        oSheets = oDocument.Sheets
        oSheet = oSheets.GetByName(SheetName)
        oDpage = Osheet.DrawPage
        oDatum = oDpage.Forms(SheetName).getByName(ControlName)
        Result= oDatum.text
        oSheet.getCellByPosition(0,0).Value = dateValue(Result)

end sub


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.

Funkční vzorek makra můžu případným zájemcům poslat.

Jiří Spitz


Tomas Bilek napsal(a):

Já bych si to představoval v basicu nějak takto:

1. vytvořit makro co umí zapsat datum do nějaké buňky, případně do buňky kde je kurzor

sub ZapisDatum
oDoc = ThisComponent ' ziskat odkaz na vytvořené datove pole, které pojmenujeme třeba "DateField1" oDatum = objekt_formulare_listu_nevim_jak_se_jmenuje.GetControl("DateField1")
 ' zapsat do vybrané buňky, v tomto případě A1 prvního listu
' funkce Iso2Cdat() převádí na hodnotu na řetězec - jink mi to (jinde) nefungovalo korektně oDoc.sheets(0).getCellByPosition(0,0).Value = dateValue(Iso2Cdat(oDatum.model.date))
end sub

2. ve vlastnostech našeho pole v "Události/Při ztrátě zaměření" (nebo nějaké jiné
  vhodnější události) natavit spuštění makra "ZapisDatum"
3. ohlídat aby bylo skutečně makro uloženo a přiřazeno v souboru kde je Datové pole,
  jinak to na jiném PC nebude fungovat.

To je vše, co mě momentálně napadá.
Pokud někdo ví jak získat odkaz na objekty polí umístěných na listech (viz ODatum = ...)
tak mu budu vděčný, když to sem sdělí. Předpokládám že to jde.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Odpovedet emailem