Как получить значение TextField1 диалога

Автор sttt, 9 августа 2017, 13:45

0 Пользователи и 1 гость просматривают эту тему.

sttt

Как получить значение TextField1 диалога? - пытался так:
   
        DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
'ocControl = Dlg.getControl("TextField1")
ocControl = Dlg.Controls("TextField1")
ocControl.Model.TextColor = RGB(55,155,95)
ocControl.Model.HelpText = "тестовая подсказка..."
'MsgBox ocControl.Model.Text
'ocControl .Label = "Новая надпись"
MsgBox ocControl.getText()

rami

#1
Цитата: sttt от  9 августа 2017, 11:45Как получить значение TextField1 диалога? - пытался так:
А в чём проблема? Так и получить, как у вас написано. Если ничего не показывает, значит текстовое поле пустое.

P.S. если хотите увидеть диалог с полем и записать текст, нужно добавить:Dlg.execute()
передMsgBox ocControl.getText()

JohnSUN

Цитата: rami от  9 августа 2017, 13:56
А в чём проблема?
Возможно, не найден диалог с именем Dialog1 потому что он ещё не создан?.. Питоньяк, глава  10.2.  Dialogs
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

sttt

Цитата: rami от  9 августа 2017, 13:56
Цитата: sttt от  9 августа 2017, 11:45Как получить значение TextField1 диалога? - пытался так:
А в чём проблема? Так и получить, как у вас написано. Если ничего не показывает, значит текстовое поле пустое.

P.S. если хотите увидеть диалог с полем и записать текст, нужно добавить:Dlg.execute()
передMsgBox ocControl.getText()


Dim Dlg As Object

Sub Main
'thisComponent.Parent.FormDocuments.getByName("FormTest").open
'FormTest.Show
'ThisComponent.DrawPage.Forms.getByName("FormTest")'.getByName("Text1")

DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
Dlg.Execute()
Dlg.dispose()

End Sub

Sub RunTest

'Dim Dlg As Object
Dim Ctl As Object
Dim ocControl As Object
Dim text As String
Dim textControl As Object
Dim textComp As Object

'DialogLibraries.LoadLibrary("Standard")
'Dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
'ocControl = Dlg.getControl("TextField1")
ocControl = Dlg.Controls("TextField1")
ocControl.Model.TextColor = RGB(55,155,95)
ocControl.Model.HelpText = "тестовая подсказка..."
'MsgBox ocControl.Model.Text
'Ctl.Label = "Новая надпись"
MsgBox ocControl.getText()

End Sub


Main прописан у кнопки в экселе у события "Выполнить действие"
В открывшейся форме есть кнопка с выполнением процедуры RunTest

Где-то не то делаю (

sttt

вроде со всеми объектами получается работать, а с простейшим TextField1 не получается

sttt

сейчас попробовал нажать кнопку с процедурой RunTest и получил в MsgBox Label1 хотя должен быть тестовый текст. И, если сделать так: ocControl.setText("просто тест") меняет текст метки, хотя логично полагаю, что должно меняться содержимое текстового поля

sttt


rami

Давайте пустой документ с макросами и диалогом.

У меня всё нормально работает.

sttt

Заново сделал книгу с диалогом и все заработало.
Не пойму с чем связано, но не стал метку добавлять на форму,
сначала все необходимые элементы, протестировал и только потом метку добавил.

rami

Цитата: sttt от  9 августа 2017, 15:49
сейчас попробовал нажать кнопку с процедурой RunTest и получил в MsgBox Label1 хотя должен быть тестовый текст. И, если сделать так: ocControl.setText("просто тест") меняет текст метки, хотя логично полагаю, что должно меняться содержимое текстового поля
Скорей всего была путаница с именами переменных.

Цитата: sttt от  9 августа 2017, 14:33Заново сделал книгу с диалогом и все заработало.
Иногда большие эксперименты заводят в большие дебри. В таком случае бывает полезно начать сначала.