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]