SFDialogs.Dialog serviço

O serviço Dialog contribui para a gestão de caixas de diálogo criadas com o Editor de Diálogos do Basic ou criadas dinamicamente. Cada instância da classe atual representa uma única caixa de diálogo apresentada ao utilizador.

Ícone da dica

Uma caixa de diálogo pode ser apresentada nos modos modal ou não modal.


No modo modal, a caixa é apresentada e a execução do processo da macro é suspensa até que seja premido um dos botões «OK» ou «Cancelar». Entretanto, as ações do utilizador realizadas na caixa podem desencadear ações específicas.

No modo não modal, a caixa de diálogo fica «flutuante» no ambiente de trabalho do utilizador e a execução do processo da macro prossegue normalmente. Uma caixa de diálogo não modal fecha-se quando é encerrada com o método Terminate() ou quando a sessão LibreOffice termina. O botão de fecho da janela fica inativo nas caixas de diálogo não modais.

Uma caixa de diálogo desaparece da memória após o seu encerramento explícito.

Ícone da dica

O serviço SFDialogs.Dialog está intimamente relacionado com o serviço SFDialogs.DialogControl.


Invocação e utilização do serviço

Antes de utilizar o serviço Dialog, é necessário carregar ou importar a biblioteca ScriptForge:

Ícone de nota

• As macros básicas requerem o carregamento da biblioteca ScriptForge através da seguinte instrução:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Os scripts Python requerem a importação do módulo scriptforge:
from scriptforge import CreateScriptService


O serviço Dialog é invocado através do método CreateScriptService. Este requer três argumentos posicionais adicionais para especificar a caixa de diálogo a ativar:

Contentor: "GlobalScope" para bibliotecas pré-instaladas ou um nome de janela, conforme definido pelo serviço ScriptForge.UI. O valor por predefinição, a cadeia vazia "", representa o documento atual.

Biblioteca: O nome, que distingue maiúsculas de minúsculas, de uma biblioteca contida no contentor. O valor predefinido é «Standard».

DialogName: Uma cadeia de caracteres que distingue maiúsculas de minúsculas e que identifica a caixa de diálogo.

Os exemplos abaixo, em Basic e Python, apresentam a caixa de diálogo dlgConsole que pertence à biblioteca partilhada ScriptForge:


      Dim oDlg As Object, lButton As Long
      Dim Container As String, Library As String, DialogName As String
      Set oDlg = CreateScriptService("SFDialogs.Dialog", "GlobalScope", "ScriptForge", "dlgConsole")
      '... a inicialização dos controlos faz-se aqui...'
      lButton = oDlg.Execute()
      'Modo predefinido = Modal
      If lButton = oDlg.OKBUTTON Then
      '... Controlar o processo e fazer o que for necessário aqui'
      End If
      oDlg.Terminate()
  

Ou utilizando Python:


    dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', 'ScriptForge', 'dlgConsole')
    # ... a inicialização dos controlos vai aqui...
    rc = dlg.Execute()
    # O modo predefinido é «Modal»
    if rc == dlg.OKBUTTON:
        # ... Controlar o processo e fazer o que for necessário aqui
    dlg.Terminate()
  
Ícone de nota

Utilize a cadeia de caracteres «GlobalScope» como argumento container quando a caixa de diálogo estiver guardada em As minhas macros e caixas de diálogo ou em Macros e caixas de diálogo da aplicação.


Ícone da dica

O serviço de caixas de diálogo oferece métodos que criam novos controlos dinamicamente numa caixa de diálogo existente, pré-definida com o Editor de Caixas de Diálogo. Uma caixa de diálogo é inicializada com controlos no Editor de Caixas de Diálogo e é possível adicionar novos controlos em tempo de execução, antes ou depois da instrução Execute() da caixa de diálogo.


O serviço Dialog também pode ser invocado — através do método CreateScriptService — ao criar caixas de diálogo em tempo real. Requer dois argumentos posicionais adicionais após o nome do serviço ad hoc «NewDialog»:

DialogName: Uma cadeia de caracteres que distingue maiúsculas de minúsculas e que identifica a caixa de diálogo.

Local: A localização da janela da caixa de diálogo pode ser:

Todos os elementos são expressos em unidades Map AppFont.


    Sub newDialog()
        Dim oDlg As Object
       oDlg = CreateScriptService("NewDialog", "myDialog1", Array(100,200, 40, 110))
       ' ...
    End Sub
  

Ou utilizando Python:


    def newDialog():
       dlg = CreateScriptService('NewDialog', 'myDialog1', (100, 200, 40, 110))
       # ... Controlar o processo e fazer o que for necessário
  

Todas as propriedades e métodos aplicáveis às caixas de diálogo predefinidas estão disponíveis para essas novas caixas de diálogo. Em particular, a série de métodos CreateXXX() para a adição de novos controlos às caixas de diálogo.

Recuperar a instância do Dialog que desencadeou um evento de diálogo

É possível recuperar uma instância do serviço Dialog através do serviço SFDialogs.DialogEvent, desde que a caixa de diálogo tenha sido iniciada com o serviço Dialog. No exemplo abaixo, oDlg contém a instância Dialog que desencadeou o evento da caixa de diálogo.


    Sub aDialogEventHander(ByRef poEvent As Object)
        Dim oDlg As Object
        Set oDlg = CreateScriptService("SFDialogs.DialogEvent", poEvent)
        ' ...
    End Sub
  

Ou utilizando Python:


    def control_event_handler(event: uno):
        dlg = CreateScriptService("SFDialogs.DialogEvent", event)
        # ...
  

Note-se que, nos exemplos anteriores, o prefixo "SFDialogs." pode ser omitido quando se considerar adequado.

Tratamento de exceções nos manipuladores de eventos

Ao criar um manipulador de eventos para eventos de caixa de diálogo, é boa prática tratar os erros dentro da própria sub-rotina. Por exemplo, suponha que o manipulador de eventos abaixo seja chamado quando o botão do rato for premido na janela de diálogo.


    Sub OnMouseButtonPressed(ByRef oEvent As Object)
    On Local Error GoTo Catch
        Dim oDialog As Object
        oDialog = CreateScriptService("DialogEvent", oEvent)
        ' Processar o evento
        Exit Sub
    Catch:
        MsgBox SF_Exception.Description
        SF_Exception.Clear
    End Sub
  
Ícone da dica

Chame SF_Exception.Clear se não quiser que o erro se propague após o término da execução da caixa de diálogo.


Em Python, utilize blocos try/except nativos para o tratamento de exceções, conforme ilustrado abaixo:


    def on_mouse_button_pressed(event=None):
        try:
            dlg = CreateScriptService("DialogEvent", event)
            # Processar o evento
        except Exception as e:
            # O objeto «bas» é uma instância do serviço Basic
            bas.MsgBox(str(e))
  

Propriedades

Nome

Somente leitura

Tipo

Descrição

OKBUTTON

Sim

Integer

Valor = 1. Foi premido o botão «OK».

CANCELBUTTON

Sim

Integer

Valor = 0. Foi premido o botão «Cancelar».

Caption

Não

String

Indique o título da caixa de diálogo.

Height

Não

Long

Especifique a altura da caixa de diálogo.

IsAlive

Sim

Boolean

True quando a caixa de diálogo não tiver sido fechada (por exemplo, por uma ação do utilizador).

Modal

Sim

Boolean

Especifica se a caixa de diálogo está atualmente a ser executada no modo modal.

Name

Sim

String

O nome da caixa de diálogo

Page

Não

Integer

Uma caixa de diálogo pode ter várias páginas que o utilizador pode percorrer passo a passo. A propriedade Page do objeto Dialog define qual a página da caixa de diálogo que está ativa

Visible

Não

Boolean

Especifique se a caixa de diálogo está visível no ambiente de trabalho. Por predefinição, não está visível até que o método Execute() seja executado, tornando-se visível a seguir.

XDialogModel

Sim

objeto
UNO

O objeto UNO que representa o modelo de diálogo. Consulte XControlModel e UnoControlDialogModel na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.

XDialogView

Sim

objeto
UNO

O objeto UNO que representa a vista de diálogo. Consulte XControl e UnoControlDialog na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.

Width

Não

Long

Especifique a largura da caixa de diálogo.


Propriedades do evento

As propriedades de evento On… são cadeias de caracteres URI que fazem referência a um script acionado por um evento. Consulte a respetiva especificação na especificação URI da estrutura de scripting.

Nome

Descrição básica do IDE

OnFocusGained

Ao receber o foco

OnFocusLost

Quando se perde a concentração

OnKeyPressed

Tecla premida

OnKeyReleased

Chave libertada

OnMouseDragged

O rato moveu-se enquanto se premiam as teclas

OnMouseEntered

Rato dentro

OnMouseExited

Rato lá fora

OnMouseMoved

O rato moveu-se

OnMousePressed

Botão do rato premido

OnMouseReleased

Botão do rato solto


Ícone da dica

Dica: Todas as propriedades On… podem ser definidas programaticamente.
O exemplo Como apresentar dados num controlo de árvore na Wiki do LibreOffice ilustra isso mesmo.


Ícone de aviso

A atribuição de eventos através do IDE Básico e a atribuição de eventos através de macros são mutuamente exclusivas.


Lista de métodos do Serviço de Diálogo

Activate
Center
Controls
CloneControl
CreateButton
CreateCheckBox
CreateComboBox
CreateCurrencyField
CreateDateField
CreateFileControl
CreateFixedLine
CreateFixedText

CreateFormattedField
CreateGroupBox
CreateHyperlink
CreateImageControl
CreateListBox
CreateNumericField
CreatePatternField
CreateProgressBar
CreateRadioButton
CreateScrollBar
CreateTableControl
CreateTabPageContainer

CreateTextField
CreateTimeField
CreateTreeControl
EndExecute
Execute
GetTextsFromL10N
ImportControl
OrderTabs
Resize
SetPageManager
Terminate


Ícone da dica

Os controlos TabPageContainer não estão disponíveis no Editor de Caixas de Diálogo.


Ícone de nota

O dimensionamento de uma caixa de diálogo é feito utilizando Map AppFont units. Um modelo de caixa de diálogo ou de controlo também utiliza unidades AppFont. Por outro lado, as respetivas vistas utilizam píxeis.


Activate

Estabelece o foco na instância atual de Dialog. Devolve True se o foco tiver sido estabelecido com sucesso.

Este método é chamado a partir de um evento de caixa de diálogo ou de controlo, ou quando uma caixa de diálogo é apresentada em modo não modal.

Sintaxe:

svc.Activate(): bool

Exemplo:


      Dim oDlg As Object
      Set oDlg = CreateScriptService(,, "myDialog")
      oDlg.Execute()
      ' ...
      oDlg.Activate()
   

Os exemplos básicos em Python e LibreOffice partem do princípio de que a caixa de diálogo está armazenada na biblioteca Standard do documento atual.


     dlg = CreateScriptService(,,'myDialog')
     dlg.Execute()
     # ...
     dlg.Activate()
   

Center

Centraliza a instância atual da caixa de diálogo no meio de uma janela pai. Sem argumentos, o método centraliza a caixa de diálogo no meio da janela atual.

Devolve True em caso de sucesso.

Sintaxe:

svc.Center(opt Parent: obj): bool

Parâmetros:

Pai: Um objeto opcional que pode ser…

Exemplo:

Em Basic

     Sub TriggerEvent(oEvent As Object)
         Dim oDialog1 As Object, oDialog2 As Object, lExec As Long
         Set oDialog1 = CreateScriptService("DialogEvent", oEvent) ' A caixa de diálogo que provocou o evento
         Set oDialog2 = CreateScriptService("Dialog", ...) ' Abrir uma segunda caixa de diálogo
         oDialog2.Center(oDialog1)
         lExec = oDialog2.Execute()
         Select Case lExec
             ...
     End Sub
  
Em Python

     def triggerEvent(event: uno):
       dlg1 = CreateScriptService('DialogEvent.Dialog', event)  # A caixa de diálogo que provocou o evento
       dlg2 = CreateScriptService('Dialog', ...)  # Abrir uma segunda caixa de diálogo
       dlg2.Center(dlg1)
       rc = dlg2.Execute()
       if rc is False:
         # ...
   

CloneControl

Duplique um controlo existente de qualquer tipo na caixa de diálogo atual. O controlo duplicado permanece inalterado e pode ser reposicionado.

Sintaxe:

svc.CloneControl(SourceName: str, ControlName: str, Left: num, Top: num): svc

Parâmetros:

SourceName: O nome do controlo a duplicar.

ControlName: Um nome de controlo válido, expresso como uma cadeia de caracteres que distingue maiúsculas de minúsculas. Não pode já existir.

Esquerda, Topo: As coordenadas do novo controlo expressas em unidades Map AppFont.

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

      Set myButton2 = oDlg.CloneControl("Button1", "Button2", 30, 30)
   
Em Python

     dlg = dlg.CloneControl('Button1', 'Button2', 30, 30)
   

Controls

Devolva uma das seguintes opções:

Sintaxe:

svc.Controls(): str[0..*]

svc.Controls(controlname: str): svc

Parâmetros:

ControlName : Um nome de controlo válido, expresso como uma cadeia de caracteres que distingue maiúsculas de minúsculas. Se não for indicado, a lista de nomes de controlos é devolvida como um array com índice a partir de zero.

Exemplo:


      Dim myDialog As Object, myList As Variant, myControl As Object
      Set myDialog = CreateScriptService("SFDialogs.Dialog", , "Standard", "Dialog1")
      myList = myDialog.Controls()
      Set myControl = myDialog.Controls("myTextBox")
   

     dlg = CreateScriptService('SFDialogs.Dialog','', 'Standard', 'Dialog1')
     ctrls = dlg.Controls()
     ctrl = dlg.Controls('myTextBox')
   

CreateButton

Cria um novo controlo do tipo Button na caixa de diálogo atual.

Sintaxe:

svc.CreateButton(ControlName: str, Place: any, Toggle: bool = False, Push: str = ""): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Alternar: quando True, é criado um botão de alternância. Valor predefinido = False

Clicar em: «OK», «CANCELAR» ou «» (predefinição)

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myButton = oDlg.CreateButton("Button1", Array(20, 20, 60, 15))
   
Em Python

     myButton = dlg.CreateButton('Button1', (20, 20, 60, 15))
   

CreateCheckBox

Cria um novo controlo do tipo CheckBox na caixa de diálogo atual.

Sintaxe:

svc.CreateCheckBox(ControlName: str, Place: any, Multiline: bool = False): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

MultiLine: Quando True (valor predefinido = False), a legenda pode ser apresentada em mais do que uma linha.

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myCheckBox = oDlg.CreateCheckBox("CheckBox1", Array(20, 20, 60, 15), MultiLine := True)
   
Em Python

     myCheckBox = dlg.CreateCheckBox('CheckBox1', (20, 20, 60, 15), MultiLine = True)
   

CreateComboBox

Cria um novo controlo do tipo ComboBox na caixa de diálogo atual.

Sintaxe:

svc.CreateComboBox(ControlName: str, Place: any, Border: str = "3D", DropDown: bool = True, LineCount: num = 5): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

DropDown: Quando True (por predefinição), é apresentado um botão de menu suspenso

LineCount: Especifica o número máximo de linhas apresentadas no menu suspenso (valor predefinido = 5)

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myComboBox = oDlg.CreateComboBox("ComboBox1", Array(20, 20, 60, 15), Dropdown := True)
   
Em Python

     myComboBox = dlg.CreateComboBox('ComboBox1', (20, 20, 60, 15), Dropdown = True)
   

CreateCurrencyField

Cria um novo controlo do tipo CurrencyField na caixa de diálogo atual.

Sintaxe:

svc.CreateCurrencyField(ControlName: str, Place: any, Border ="3D", SpinButton: bool = False, MinValue: num = -1000000, MaxValue: num = +1000000, Increment: num = 1, Accuracy: num = 2): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

SpinButton: quando True (valor predefinido = False), existe um botão giratório

MinValue: o valor mais baixo que pode ser introduzido no controlo. Valor predefinido = -1000000

MaxValue: o valor máximo que pode ser introduzido no controlo. Valor predefinido = +1000000

Incremento: o valor em que o botão giratório avança quando é premido. Padrão = 1

Precisão: especifica a precisão decimal. Valor predefinido = 2 algarismos decimais

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myCurrencyField = oDlg.CreateCurrencyField("CurrencyField1", Array(20, 20, 60, 15), SpinButton := True)
   
Em Python

     myCurrencyField = dlg.CreateCurrencyField('CurrencyField1', (20, 20, 60, 15), SpinButton = True)
   

CreateDateField

Cria um novo controlo do tipo DateField na caixa de diálogo atual.

Sintaxe:

svc.CreateDateField(ControlName: str, Place: any, Border: str = "3D", DropDown: bool = False, opt MinDate: datetime, opt MaxDate: datetime): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

DropDown: quando True (valor predefinido = False), é apresentado um botão de menu suspenso

MinDate: a data mais antiga que pode ser introduzida no controlo. Valor predefinido = 1900-01-01

MaxDate: a data mais tardia que pode ser introduzida no controlo. Valor predefinido = 31-12-2200

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myDateField = oDlg.CreateDateField("DateField1", Array(20, 20, 60, 15), Dropdown := True)
   
Em Python

     myDateField = dlg.CreateDateField('DateField1', (20, 20, 60, 15), Dropdown = True)
   

CreateFileControl

Cria um novo controlo do tipo FileControl na caixa de diálogo atual.

Sintaxe:

svc.CreateFileControl(ControlName: str, Place: any, Border: str = "3D"): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myFileControl = oDlg.CreateFileControl("FileControl1", Array(20, 20, 60, 15))
   
Em Python

     myFileControl = dlg.CreateFileControl('FileControl1', (20, 20, 60, 15))
   

CreateFixedLine

Cria um novo controlo do tipo FixedLine na caixa de diálogo atual.

Sintaxe:

svc.CreateFixedLine(ControlName: str, Place: any, Orientation: str): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Orientação: para a orientação horizontal, utilize «H» ou «Horizontal»; para a orientação vertical, utilize «V» ou «Vertical».

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myFixedLine = oDlg.CreateFixedLine("FixedLine1", Array(20, 20, 60, 15), Orientation := "vertical")
   
Em Python

     myFixedLine = dlg.CreateFixedLine('FixedLine1', (20, 20, 60, 15), Orientation = 'vertical')
   

CreateFixedText

Cria um novo controlo do tipo FixedText na caixa de diálogo atual.

Sintaxe:

svc.CreateFixedText(ControlName: str, Place: any, Border: str = "3D", MultiLine: bool = False, Align: str = "LEFT", VerticalAlign: str = "TOP"): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «NENHUMA» (predefinição), «PLANA» ou «3D»

Multiline: Quando True (valor predefinido = False), a legenda pode ser apresentada em mais do que uma linha

Alinhar: alinhamento horizontal, «LEFT» (padrão), «CENTER» ou «RIGHT»

VerticalAlign: alinhamento vertical, «TOP» (padrão), «MIDDLE» ou «BOTTOM»

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myFixedText = oDlg.CreateFixedText("FixedText1", Array(20, 20, 60, 15), MultiLine := True)
   
Em Python

     myFixedText = dlg.CreateFixedText('FixedText1', (20, 20, 60, 15), MultiLine = True)
   

CreateFormattedField

Cria um novo controlo do tipo FormattedField na caixa de diálogo atual.

Sintaxe:

svc.CreateFormattedField(ControlName: str, Place: any, Border: str = "3D", SpinButton: bool = False, MinValue: num = -1000000, MaxValue: num = +1000000): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

SpinButton: quando True (valor predefinido = False), existe um botão giratório

MinValue: o valor mais baixo que pode ser introduzido no controlo. Valor predefinido = -1000000

MaxValue: o valor máximo que pode ser introduzido no controlo. Valor predefinido = +1000000

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myFormattedField = oDlg.CreateFormattedField("FormattedField1", Array(20, 20, 60, 15), SpinButton := True)
   
Em Python

     myFormattedField = dlg.CreateFormattedField('FormattedField1', (20, 20, 60, 15), SpinButton = True)
   

CreateGroupBox

Cria um novo controlo do tipo GroupBox na caixa de diálogo atual.

Sintaxe:

svc.CreateGroupBox(ControlName: str, Place: any): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myGroupBox = oDlg.CreateGroupBox("GroupBox1", Array(20, 20, 60, 15))
   
Em Python

     myGroupBox = dlg.CreateGroupBox('GroupBox1', (20, 20, 60, 15))
   

CreateHyperlink

Cria um novo controlo do tipo Hyperlink na caixa de diálogo atual.

Sintaxe:

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «NENHUMA» (predefinição), «PLANA» ou «3D»

MultiLine: Quando True (valor predefinido = False), a legenda pode ser apresentada em mais do que uma linha

Alinhar: alinhamento horizontal, «ESQUERDA» (predefinição), «CENTRO» ou «DIREITA»

VerticalAlign: alinhamento vertical, «TOP» (padrão), «MIDDLE» ou «BOTTOM»

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myHyperlink = oDlg.CreateHyperlink("Hyperlink1", Array(20, 20, 60, 15), MultiLine := True)
   
Em Python

     myHyperlink = dlg.CreateHyperlink('Hyperlink1', (20, 20, 60, 15), MultiLine = True)
   

CreateImageControl

Cria um novo controlo do tipo ImageControl na caixa de diálogo atual.

Sintaxe:

svc.CreateImageControl(ControlName: str, Place: any, Border: str = "3D", Scale: str = "FITTOSIZE"): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

Escala: Um dos seguintes valores: «FITTOSIZE» (padrão), «KEEPRATIO» ou «NO»

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myImageControl = oDlg.CreateImageControl("ImageControl1", Array(20, 20, 60, 15))
   
Em Python

       myImageControl = dlg.CreateImageControl('ImageControl1", (20, 20, 60, 15))
   

CreateListBox

Cria um novo controlo do tipo ListBox na caixa de diálogo atual.

Sintaxe:

svc.CreateListBox(ControlName: str, Place: any, Border: str = "3D", DropDown: bool = True, LineCount: num = 5, MultiSelect: bool = False): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

DropDown: Quando True (por predefinição), é apresentado um botão de menu suspenso

LineCount: Especifica o número máximo de linhas apresentadas no menu suspenso (valor predefinido = 5)

MultiSelect: Quando True, é possível selecionar mais de uma entrada. Valor predefinido = False

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myListBox = oDlg.CreateListBox("ListBox1", Array(20, 20, 60, 15), Dropdown := True, MultiSelect := True)
   
Em Python

     myListBox = dlg.CreateListBox('ListBox1', (20, 20, 60, 15), Dropdown = True, MultiSelect = True)
   

CreateNumericField

Cria um novo controlo do tipo NumericField na caixa de diálogo atual.

Sintaxe:

svc.CreateNumericField(ControlName: str, Place: any, Border: str = "3D", SpinButton: bool = False, MinValue: num = -1000000, MaxValue: num = 1000000, Increment: num = 1, Accuracy: num = 2): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

SpinButton: quando True (valor predefinido = False), existe um botão giratório

MinValue: o valor mais baixo que pode ser introduzido no controlo. Valor predefinido = -1000000

MaxValue: o valor máximo que pode ser introduzido no controlo. Valor predefinido = +1000000

Incrimento: o valor em que o botão giratório avança quando é premido. Valor predefinido = 1

Precisão: especifica a precisão decimal. Valor predefinido = 2 algarismos decimais

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myNumericField = oDlg.CreateNumericField("NumericField1", Array(20, 20, 60, 15), SpinButton := True)
   
Em Python

     myNumericField = dlg.CreateNumericField('NumericField1', (20, 20, 60, 15), SpinButton = True)
   

CreatePatternField

Cria um novo controlo do tipo PatternField na caixa de diálogo atual.

Sintaxe:

svc.CreatePatternField(ControlName: str, Place: any, Border: str = "3D", EditMask: str, opt LiteralMax: str): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

EditMask: um código de caractere que determina o que o utilizador pode introduzir
Consulte Pattern_Field na wiki para obter mais informações.

LiteralMask: contém os valores iniciais que são apresentados no campo de padrão

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myPatternField = oDlg.CreatePatternField("PatternField1", Array(20, 20, 60, 15), EditMask := "NNLNNLLLLL", LiteralMask := "__.__.2002")
   
Em Python

     myPatternField = dlg.CreatePatternField('PatternField1', (20, 20, 60, 15), EditMask = 'NNLNNLLLLL', LiteralMask = '__.__.2002')
   

CreateProgressBar

Cria um novo controlo do tipo ProgressBar na caixa de diálogo atual.

Sintaxe:

svc.CreateProgressBar(ControlName: str, opt Place: any, Border: str = "3D", MinValue: num = 0, MaxValue: num = 100): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

MinValue: o valor mais baixo que pode ser introduzido no controlo. Valor predefinido = 0

MaxValue: o valor máximo que pode ser introduzido no controlo. Valor predefinido = 100

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myProgressBar = oDlg.CreateProgressBar("ProgressBar1", Array(20, 20, 60, 15), MaxValue := 1000)
   
Em Python

     myProgressBar = dlg.CreateProgressBar('ProgressBar1', (20, 20, 60, 15), MaxValue = 1000)
   

CreateRadioButton

Cria um novo controlo do tipo RadioButton na caixa de diálogo atual.

Sintaxe:

svc.CreateRadioButton(ControlName: str, Place: any, MultiLine: bool = False): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

MultiLine: Quando True (valor predefinido = False), a legenda pode ser apresentada em mais do que uma linha

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myRadioButton = oDlg.CreateRadioButton("RadioButton1", Array(20, 20, 60, 15), MultiLine := True)
   
Em Python

     myRadioButton = dlg.CreateRadioButton('RadioButton1', (20, 20, 60, 15), MultiLine = True)
   

CreateScrollBar

Cria um novo controlo do tipo ScrollBar na caixa de diálogo atual.

Sintaxe:

svc.CreateScrollBar(ControlName: str, Place, Orientation: str, Border: str = "3D", MinValue: num = 0, MaxValue: num = 100): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Orientação: para a orientação horizontal, utilize «H» ou «Horizontal»; para a orientação vertical, utilize «V» ou «Vertical».

Borda: «3D» (predefinição), «FLAT» ou «NONE»

MinValue: o valor mais baixo que pode ser introduzido no controlo. Valor predefinido = 0

MaxValue: o valor máximo que pode ser introduzido no controlo. Valor predefinido = 100

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myScrollBar = oDlg.CreateScrollBar("ScrollBar1", Array(20, 20, 60, 15), MaxValue := 1000)
   
Em Python

     myScrollBar = dialog.CreateScrollBar('ScrollBar1', (20, 20, 60, 15), MaxValue = 1000)
   

CreateTableControl

Cria um novo controlo do tipo TableControl na caixa de diálogo atual.

Sintaxe:

svc.CreateTableControl(ControlName: str, Place: any, Border: str = "3D", RowHeaders: bool = True, ColumnHeaders: bool = True, ScrollBars: str = "N", GridLines: bool = False): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

RowHeaders: quando True (por predefinição), os cabeçalhos das linhas são apresentados

ColumnHeaders: quando True (por predefinição), os cabeçalhos das colunas são apresentados

Barras de deslocamento: os valores possíveis são: «H» ou «Horizontal» (barras de deslocamento horizontais), «V» ou «Vertical» (barras de deslocamento verticais); «B» ou «Both» (ambas as barras de deslocamento); «N» ou «None» (predefinição) para não apresentar barras de deslocamento. As barras de deslocamento aparecem dinamicamente quando são necessárias.

GridLines: quando True (valor predefinido = False), são desenhadas linhas horizontais e verticais entre as células da grelha

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myTableControl = oDlg.CreateTableControl("TableControl1", Array(20, 20, 60, 15), ScrollBars := "B")
   
Em Python

     myTableControl = dlg.CreateTableControl('TableControl1', (20, 20, 60, 15), ScrollBars = 'B')
   

CreateTabPageContainer

Cria um novo controlo do tipo TabPageContainer na caixa de diálogo atual. As separadores são distribuídas por linhas separadas dentro da caixa de diálogo, quando necessário. Não é suportada a existência de vários TabPageContainer.

Ícone de aviso

A criação do controlo TabPageContainer ocorre sempre em último lugar na criação de uma caixa de diálogo.


Sintaxe:

svc.CreateTabPageContainer(ControlName: str, Place: any, TabHeaders: str[1..*], Border: str = "3D"): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

TabHeaders: Um conjunto de cadeias de caracteres que define cada rótulo individual das separadores

Borda: «3D» (predefinição), «FLAT» ou «NONE»

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myTabPageContainer = oDlg.CreateTabPageContainer("someContainer", Array(20, 20, 60, 15), TabHeaders := Array("Modules", "Dialogs", "Libraries"))
   
Em Python

     myTabPageContainer = dlg.CreateTabPageContainer('theTabs', TabHeaders=('Modules', 'Dialogs', 'Libraries'), place=(20, 20, 60, 15))
   

CreateTextField

Cria um novo controlo do tipo TextField na caixa de diálogo atual.

Sintaxe:

svc.CreateTextField(ControlName: str, Place: any, Border: str = "3D", MultiLine: bool = False, MaximumLength: num = 0, PasswordCharacter: str = ""): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

MultiLine: Quando True (valor predefinido = False), a legenda pode ser apresentada em mais do que uma linha

MaximumLength: o número máximo de caracteres (valor predefinido = 0, o que significa ilimitado)

PasswordCharacter: um único carácter que especifica o texto de eco para um campo de texto de palavra-passe (valor predefinido = "")

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic
Set myTextField = oDlg.CreateTextField("TextField1", Array(20, 20, 120, 50), MultiLine := True)
   
Em Python

     myTextField = dlg.CreateTextField('TextField1', (20, 20, 120, 50), MultiLine = True)
   

CreateTimeField

Cria um novo controlo do tipo TimeField na caixa de diálogo atual.

Sintaxe:

svc.CreateTimeField(ControlName: str, Place: any, Border: str = "3D", MinTime: num = 0, MaxTime: num = 24): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

MinTime: o valor mínimo de tempo que pode ser introduzido no controlo. Valor predefinido = 0

MaxTime: o valor máximo de tempo que pode ser introduzido no controlo. Valor predefinido = 24h

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myTimeField = oDlg.CreateTimeField("TimeField1", Array(20, 20, 60, 15))
   
Em Python

     myTimeField = dlog.CreateTimeField('TimeField1', (20, 20, 60, 15))
   

CreateTreeControl

Cria um novo controlo do tipo TreeControl na caixa de diálogo atual.

Sintaxe:

svc.CreateTreeControl(ControlName: str, Place: any, Border = "3D"): svc

Parâmetros:

ControlName: o nome do novo controlo. Este ainda não pode existir.

Local: ou …

Todos os elementos são expressos em unidades Map AppFont.

Borda: «3D» (predefinição), «FLAT» ou «NONE»

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set myTreeControl = oDlg.CreateTreeControl("TreeControl1", Array(20, 20, 60, 15))
   
Em Python

     myTreeControl = dlg.CreateTreeControl('TreeControl1', (20, 20, 60, 15))
   

EndExecute

Encerra a exibição de uma caixa de diálogo modal e devolve o argumento como valor de retorno para a ação Execute() atualmente em execução.

EndExecute() surge normalmente no âmbito do processamento de uma macro acionada por um evento de caixa de diálogo ou de controlo.

Sintaxe:

svc.EndExecute(returnvalue: int)

Parâmetros:

returnvalue: O valor passado ao método Execute() em execução.

Exemplo:

Em Basic

      Sub OnEvent(poEvent As com.sun.star.lang.EventObject)
          Dim oDlg As Object
          Set oDlg = CreateScriptService("SFDialogs.DialogEvent", poEvent)
          oDlg.EndExecute(ReturnValue := 25)
      End Sub
   
Em Python

     from com.sun.star.lang import EventObject
     def on_event(event: EventObject):
         dlg = CreateScriptService("SFDialogs.DialogEvent", event)
         dlg.EndExecute(25)
   
Ícone da dica

As menções acima a com.sun.star.lang.EventObject são opcionais. Essas anotações ajudam a identificar a Interface de Programação de Aplicações (API) do LibreOffice.


Execute

Apresentar a caixa de diálogo e, caso seja modal, aguardar que o utilizador a feche. O valor devolvido pode ser:

No caso das caixas de diálogo não modais, o método devolve sempre 0 e a execução da macro prossegue.

Sintaxe:

svc.Execute(modal: bool = True): int

Parâmetros:

modal: False no caso de uma caixa de diálogo não modal. Valor predefinido = True.

Exemplo:

Neste exemplo básico, a caixa de diálogo myDialog está armazenada na biblioteca Standard do documento atual.


      Dim oDlg As Object, lReturn As Long
      Set oDlg = CreateScriptService("SFDialogs.Dialog", , , "myDialog")
      lReturn = oDlg.Execute(Modal := False)
      Select Case lReturn
          ' ...
      End Select
   

Este código Python apresenta a caixa de diálogo modal DlgConvert da biblioteca Basic partilhada Euro.


     dlg = CreateScriptService("SFDialogs.Dialog", 'GlobalScope', 'Euro', "DlgConvert")
     rc = dlg.Execute()
     if rc == dlg.CANCELBUTTON:
         # ...
   

GetTextsFromL10N

Substitui todas as cadeias de texto fixas numa caixa de diálogo pelas respetivas versões traduzidas, com base numa instância do serviço L10N. Este método traduz as seguintes cadeias de texto:

O método devolve True se for bem-sucedido.

Para criar uma lista de cadeias traduzíveis numa caixa de diálogo, utilize o método AddTextsFromDialog do serviço L10N.

Sintaxe:

svc.GetTextsFromL10N(l10n: svc): bool

Parâmetros:

l10n: Uma instância do serviço L10N a partir da qual serão recuperadas as cadeias traduzidas.

Exemplo:

O exemplo seguinte carrega as cadeias traduzidas e aplica-as à caixa de diálogo «MyDialog».

Em Basic

     oDlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "MyDialog")
     myPO = CreateScriptService("L10N", "/home/user/po_files/")
     oDlg.GetTextsFromL10N(myPO)
     oDlg.Execute()
   
Em Python

     dlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "MyDialog")
     myPO = CreateScriptService("L10N", "/home/user/po_files/")
     dlg.GetTextsFromL10N(myPO)
     dlg.Execute()
   
Ícone da dica

Leia a página de ajuda do serviço L10N para saber mais sobre como os ficheiros PO e POT são tratados.


ImportControl

Importar e duplicar um controlo existente de qualquer tipo de uma caixa de diálogo para a caixa de diálogo atual. O controlo duplicado permanece inalterado. O novo controlo pode ser renomeado e reposicionado. Os manipuladores de eventos, quando existentes, também podem ser importados.

Sintaxe:

svc.ImportControl(SourceDialog: svc, SourceName: str, opt ControlName: str, Page: num = 0, OffsetX: num = 0, OffsetY:num = 0, IncludeOnProperties: bool = False): svc

Parâmetros:

SourceDialog: uma instância da classe SFDialogs.Dialog.

SourceName: o nome do controlo a importar.

ControlName: o nome do novo controlo. Este nome ainda não pode existir. O valor predefinido é SourceName

Página: o número da página do novo controlo. Valor predefinido = 0

OffsetX, OffsetY: o número de píxeis a adicionar às coordenadas do controlo de origem em unidades «Map AppFont». Valor predefinido = 0; pode ser negativo.

IncludeOnProperties: inclui as propriedades do evento On.... Valor predefinido = False.

Tipo de retorno:

Uma instância do serviço SFDialogs.DialogControl ou Nothing.

Exemplo:

Em Basic

     Set mCtrl = oDlg.ImportControl(srceDlg, "someCtrlName")
   
Em Python

     dlg.ImportControl(srceDlg, 'aCtrlName', includeOnProperties=true)
   

OrderTabs

Define o índice de tabulação de uma série de controlos. A sequência de controlos é indicada como uma matriz de nomes de controlos, do primeiro ao último.

Ícone de aviso

Os controlos com um índice >= 1 não são acessíveis com a tecla TAB se:
- estiverem omitidos da lista indicada
- forem do tipo FixedLine, GroupBox ou ProgressBar
- estiverem desativados


Sintaxe:

svc.TabsList(TabsList: num, Start: num = 1, Increment: num = 1): bool

Parâmetros:

TabsList: um array de nomes de controlos válidos, por ordem de tabulação

Início: o índice de tabulação a atribuir ao primeiro controlo da lista. Valor predefinido = 1

Incremento: a diferença entre dois índices de tabulação sucessivos. Valor predefinido = 1

Tipo de retorno:

Devolve True em caso de sucesso.

Exemplo:

Em Basic

     oDlg.OrderTabs(Array("myListBox", "myTextField", "myNumericField"), Start := 10)
   
Em Python

     dlg.OrderTabs(('myListBox', 'myTextField', 'myNumericField'), Start = 10)
   

Resize

Devolve True em caso de sucesso.

Sintaxe:

svc.Resize(opt Left: num, opt Top: num, opt Width: num, opt Height: num): bool

Parâmetros:

Esquerda: a distância horizontal a partir do canto superior esquerdo

Top: a distância vertical a partir do canto superior esquerdo

Largura: a largura do retângulo que contém a caixa de diálogo

Altura: a altura do retângulo que contém a caixa de diálogo

Os argumentos em falta permanecem inalterados

Exemplo:

Em Basic

     oDlg.Resize(1000, 2000, Height := 6000) ' A largura não é alterada
   
Em Python

     dlg.Resize(1000, 2000, Height = 6000)  # A largura não é alterada
   

SetPageManager

Define quais os controlos numa caixa de diálogo que são responsáveis pela alternância entre páginas, facilitando a gestão da propriedade Page de uma caixa de diálogo e dos seus controlos.

As caixas de diálogo podem ter várias páginas e a página atualmente visível é definida pela propriedade Page da caixa de diálogo. Se a propriedade Page não for alterada, a página visível por predefinição é igual a 0 (zero), o que significa que não está definida nenhuma página específica e que todos os controlos visíveis são apresentados, independentemente do valor definido na respetiva propriedade Page.

Quando a propriedade Page de uma caixa de diálogo é alterada para outro valor, como 1, 2, 3 e assim por diante, apenas os controlos cuja propriedade Page corresponda à página atual da caixa de diálogo serão apresentados.

Ao utilizar o método SetPageManager, é possível definir quatro tipos de gestores de páginas:

Ícone da dica

É possível utilizar mais do que um mecanismo de gestão de páginas ao mesmo tempo.


Este método deve ser chamado apenas uma vez antes de se chamar o método Execute. As chamadas subsequentes são ignoradas.

Se for bem-sucedido, este método devolve True.

Sintaxe:

svc.SetPageManager(pilotcontrols: str = "", tabcontrols: str = "", wizardcontrols: str = "", opt lastpage: int): bool

Parâmetros:

pilotcontrols: uma lista separada por vírgulas de nomes de controlos ListBox, ComboBox ou RadioButton utilizados como gestores de páginas. No caso dos controlos RadioButton, especifique o nome do primeiro controlo do grupo a utilizar.

tabcontrols: uma lista, separada por vírgulas, de nomes de botões que serão utilizados como gestores de páginas. A ordem em que são especificados neste argumento corresponde ao número da página a que estão associados.

wizardcontrols: uma lista separada por vírgulas com os nomes de dois botões que serão utilizados como botões «Anterior»/«Seguinte».

lastpage: o número da última página disponível. Recomenda-se especificar este valor ao utilizar o gestor de páginas Anterior/Seguinte.

Exemplo:

Considere uma caixa de diálogo com três páginas. A caixa de diálogo possui um controlo ListBox denominado «aPageList», que será utilizado para controlar a página visível. Além disso, existem dois botões denominados «btnPrevious» e «btnNext», que serão utilizados como botões «Anterior» e «Seguinte» na caixa de diálogo.

Em Basic

    oDlg.SetPageManager(PilotControls := "aPageList", _
                           WizardControls := "btnPrevious,btnNext", _
                           LastPage := 3)
    oDlg.Execute()
  
Em Python

    dlg.SetPageManager(pilotcontrols="aPageList",
                       wizardcontrols="btnPrevious,btnNext",
                       lastpage=3)
    dlg.Execute()
  

Terminate

Encerra o serviço Dialog para a instância atual. Devolve True se o encerramento tiver sido bem-sucedido.

Sintaxe:

svc.Terminate(): bool

Exemplo:

Os exemplos em Basic e Python abaixo abrem as caixas de diálogo não modais DlgConsole e dlgTrace. Estas estão armazenadas, respetivamente, nas bibliotecas partilhadas ScriptForge e Access2Base. Os botões de fecho das caixas de diálogo estão desativados e o encerramento explícito é efetuado no final de um processo em execução.

Neste exemplo, um botão no DlgConsole impede o encerramento da janela:

Em Basic

     oDlg = CreateScriptService("SFDialogs.Dialog","GlobalScope","ScriptForge","DlgConsole")
     oDlg.Execute(modal:=False)
     Wait 5000
     oDlg.Terminate()
   
Em Python

     from time import sleep
     dlg = CreateScriptService('SFDialogs.Dialog',"GlobalScope",'Access2Base',"dlgTrace")
     dlg.Execute(modal=False)
     sleep 5
     dlg.Terminate()
   
Ícone de aviso

Todas as rotinas ou identificadores do ScriptForge Basic que tenham o caractere de sublinhado «_» como prefixo estão reservados para uso interno. Não se destinam a ser utilizados em macros do Basic ou em scripts Python.


Necessitamos da sua ajuda!

Necessitamos da sua ajuda!