Macros 如何通过事件驱动宏模拟LibreOffice基本表单中的用户输入
我有一个LibreOffice基本表单,允许我手动向表中添加行。但是,每一行的第一个字段几乎总是前几行第一个字段-日期的副本。通过宏,我想自动填写日期字段,这样我就不必手动重复信息。 使用PriorToReset事件处理程序,我尝试了以下操作:Macros 如何通过事件驱动宏模拟LibreOffice基本表单中的用户输入,macros,base,libreoffice,simulate,Macros,Base,Libreoffice,Simulate,我有一个LibreOffice基本表单,允许我手动向表中添加行。但是,每一行的第一个字段几乎总是前几行第一个字段-日期的副本。通过宏,我想自动填写日期字段,这样我就不必手动重复信息。 使用PriorToReset事件处理程序,我尝试了以下操作: Sub Main Dim defaultDate as string End Sub Sub PriorToReset(event) dim Form dim DateField Form=event.source Dat
Sub Main
Dim defaultDate as string
End Sub
Sub PriorToReset(event)
dim Form
dim DateField
Form=event.source
DateField = Form.getByName("Date")
if DateField.Text = "" then
defaultDate = Date
DateField.Text = defaultDate
else
defaultDate = DateField.Text
end if
End Sub
这确实会将当前日期放入一个空行中,但当我填写剩余字段并尝试保存该行时,它会表示日期字段为空而表示反对。我在该字段中查看今天的日期,但系统的行为好像是空的。如果我只在最后一个数字上退格,则替换它并按enter键,它将接受它
显然,仅仅将日期转储到“Text”属性中并没有设置输入数据的指示符。我还试验了:
DateField.setPropertyValue(“文本”,默认日期)
但这完全是错误的。
如何通过宏模拟数据输入?使用声明为UNO date结构的变量设置DATEFILD的date属性 首先,声明结构。然后设置结构的各个成员的值(年、月、日)。然后将date属性设置为等于struct和commit 调整此代码示例以适合:
Sub change_a_date
Dim adate As New com.sun.star.util.Date
root_form = ThisComponent.Drawpage.Forms
main_frm = root_form.getByName("MainForm")
adate.year = 1990
adate.month = 7
adate.day = 4
main_frm.getByName("date_bx").date = adate
main_frm.getByName("date_bx").commit
End Sub
基于示例的声明。另见