SFDialogs.DialogControl serviço

O serviço DialogControl gere os controlos pertencentes a uma caixa de diálogo definida com o Editor de Caixas de Diálogo da Basic. Cada instância do serviço atual representa um único controlo dentro de uma caixa de diálogo.

O foco está em obter e definir os valores apresentados pelos controlos da caixa de diálogo. A formatação é acedida através das propriedades XControlModel e XControlView.

Note-se que o conteúdo da propriedade DialogControl.Value, que é único, varia consoante o tipo de controlo.

Note-se que o conteúdo da propriedade DialogControl.Value, que é único, varia consoante o tipo de controlo.

Ícone da dica

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


Chamada de serviço

Antes de utilizar o serviço DialogControl, é 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 DialogControl é invocado a partir de uma instância existente do serviço Dialog através do seu método Controls(). A caixa de diálogo deve ser iniciada com o serviço SFDialogs.Dialog.


      Dim myDialog As Object, myControl As Object
      Set myDialog = CreateScriptService("SFDialogs.Dialog", "GlobalScope", myLibrary, DialogName)
      Set myControl = myDialog.Controls("myTextBox")
      myControl.Value = "A caixa de diálogo foi iniciada às " & Now()
      myDialog.Execute()
      ' ... processar os valores reais dos controlos
      myDialog.Terminate()
   

     from time import localtime, strftime
     dlg = CreateScriptService('SFDialogs.Dialog', 'GlobalScope', lib_name, dlg_name)
     text = dlg.Controls('myTextBox')
     text.Value = "A caixa de diálogo foi iniciada às " + strftime("%a, %d %b %Y %H:%M:%S", localtime())
     dlg.Execute()
     # ... processar os valores reais dos controlos
     dlg.Terminate()
   

# ... processar os valores reais dos controlos

É possível recuperar uma instância do serviço DialogControl 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, oControl contém a instância de DialogControl que desencadeou o evento de controlo.


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

Ou utilizando Python:


     def control_event_handler(event: uno):
         oControl = 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 controlo, é boa prática tratar os erros dentro da própria sub-rotina. Por exemplo, suponha que o manipulador de eventos abaixo é chamado quando se clica no botão.


    Sub OnButtonClicked(ByRef oEvent As Object)
    On Local Error GoTo Catch
        Dim oControl As Object
        oControl = 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_button_clicked(event=None):
        try:
            oControl = CreateScriptService("DialogEvent", event)
            # Processar o evento
        except Exception as e:
            # O objeto «bas» abaixo é uma instância do serviço Basic
            bas.MsgBox(str(e))
  

Tipos de controlo

O serviço DialogControl está disponível para estes tipos de controlo:

• Button
• CheckBox
• ComboBox
• CurrencyField
• DateField
• FileControl

• FixedLine
• FixedText
• FormattedField
• GroupBox
• Hyperlink
• ImageControl

• ListBox
• NumericField
• PatternField
• ProgressBar
• RadioButton
• ScrollBar

• TableControl
• TabPageContainer
• TextField
• TimeField
• TreeControl


Ícone de nota

O tipo de controlo TabPageContainer não está definido no Editor de Diálogos.


Propriedades

Nome

Somente leitura

Tipo

Aplicável a

Descrição

Border

Sim

String

Button, …

A propriedade Border refere-se à moldura do controlo: «3D», «FLAT» ou «NONE».

Cancel

Não

Boolean

Button

Especifica se um botão de comando tem ou não o comportamento de um botão «Cancelar».

Caption

Não

String

Button, CheckBox, FixedLine, FixedText, GroupBox, Hyperlink, RadioButton

Especifica o texto associado ao controlo.

ControlType

Sim

String

Todos

Um dos tipos acima referidos.

CurrentNode

Não

Objeto
UNO

TreeControl

O nó atualmente selecionado no topo do controlo de árvore. Consulte XmutableTreeNode na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.

Default

Não

Boolean

Button

Especifica se um botão de comando é o botão predefinido (OK).

Enabled

Não

Boolean

Todos

Especifica se o controlo é acessível com o cursor.

Format

Não

String

DateField, TimeField, FormattedField

(somente leitura)

Especifica o formato utilizado para apresentar datas e horas. Deve ser uma destas cadeias de caracteres:

Para datas: «Padrão (curto)», «Padrão (curto AA)», «Padrão (curto AAAA)», «Padrão (longo)», «DD/MM/AA», «MM/DD/AA», «AA/MM/DD», «DD/MM/AAAA», «MM/DD/AAAA», «AAAA/MM/DD», «AA-MM-DD», «AAAA-MM-DD».

Para os horários: «24h curto», «24h longo», «12h curto», «12h longo».

ListCount

Sim

Long

ComboBox, ListBox, TableControl

Especifica o número de linhas numa ListBox, numa ComboBox ou num TableControl.

ListIndex

Não

Long

ComboBox, ListBox, TableControl

Especifica qual o elemento selecionado numa ListBox, numa ComboBox ou num TableControl.

Locked

Não

Boolean

ComboBox, CurrencyField, DateField, FileControl, FormattedField, ListBox, NumericField, PatternField, TextField, TimeField

Especifica se o controlo é de leitura apenas.

MultiSelect

Não

Boolean

ListBox

Especifica se um utilizador pode efetuar várias seleções numa caixa de lista.

Name

Sim

String

Todos

O nome do controlo.

Page

Não

Integer

Todos

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.

A propriedade Page de um controlo define a página da caixa de diálogo na qual o controlo está visível.

Parent

Sim

Diálogo
serviço

Todos

A instância do objeto da classe pai SFDialogs.Dialog.

Picture

Não

String

Button, ImageControl

Especifica o nome do ficheiro que contém um bitmap ou outro tipo de imagem a ser apresentado no controlo especificado. O nome do ficheiro deve estar em conformidade com o atributo FileNaming do serviço ScriptForge.FileSystem.

RootNode

Sim

UNO
objeto

TreeControl

Um objeto que representa o nó raiz mais baixo (normalmente existe apenas um nó raiz deste tipo). Consulte XmutableTreeNode na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.

RowSource

Não

Array of strings

ComboBox, ListBox

Especifica os dados contidos numa caixa de combinação ou numa caixa de lista.

TabIndex

Sim

Numeric

All

A propriedade TabIndex especifica a posição de um controlo na ordem de tabulação da caixa de diálogo.

Text

Sim

String

ComboBox, FileControl, FormattedField, PatternField, TextField

Permite aceder ao texto que está a ser apresentado pelo controlo.

TipText

Não

String

Todos

Especifica o texto que aparece como dica de ferramenta quando se mantém o ponteiro do rato sobre o controlo.

TripleState

Não

Boolean

CheckBox

Especifica se o controlo de caixa de seleção pode aparecer esbatido (a cinzento) ou não.

URL

Não

String

Hyperlink

O URL a abrir quando se clicar no controlo.

Value

Não

Variant

Consulte Propriedade «Value»

Visible

Não

Boolean

Todos

Especifica se o controlo está oculto ou visível.

XControlModel

Sim

Objeto
UNO

Todos

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

XControlView

Sim

Objeto
UNO

Todos

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

XTreeDataModel

Sim

Objeto
UNO

TreeControl

O objeto UNO que representa o modelo de dados do controlo em árvore. Consulte XMutableTreeDataModel na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.

XGridColumnModel

Sim

Objeto
UNO

TableControl

O objeto UNO que representa o modelo de dados do controlo de tabela. Consulte XGridColumnModel na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.

XGridDataModel

Sim

Objeto
UNO

TableControl

O objeto UNO que representa o modelo de dados do controlo de grelha. Consulte XGridDataModel na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.


A propriedade Value

Tipo de controlo

Tipo

Descrição

Button

Boolean

Apenas para botões de alternância

CheckBox

Booleano ou Inteiro

0, Falso: não marcado
1, Verdadeiro: marcado
2: a cinzento, não sei

ComboBox

String

O valor selecionado. A propriedade ListIndex é uma opção alternativa.

CurrencyField

Numérico

DateField

Date

FileControl

String

Um nome de ficheiro formatado de acordo com a propriedade FileNaming do serviço ScriptForge.FileSystem

FormattedField

Texto ou numérico

ListBox

Cadeia de caracteres ou matriz de cadeias de caracteres

A(s) linha(s) selecionada(s) como um valor escalar ou como uma matriz, dependendo do atributo MultiSelect

NumericField

Numérico

PatternField

String

ProgressBar

Numérico

Tem de estar dentro dos limites predefinidos

RadioButton

Boolean

Cada botão tem o seu próprio nome. Estão interligados se as suas posições no TAB forem contíguas. Se um botão de opção estiver definido como True, os outros botões relacionados são automaticamente definidos como False

ScrollBar

Numérico

Tem de estar dentro dos limites predefinidos

TabPageContainer

Numeric

Uma caixa de diálogo pode ter vários separadores numerados, identificáveis ou modificáveis através da sua propriedade Value.

TableControl

Array

Matriz unidimensional com os dados da linha atualmente selecionada.

TextField

String

O texto que aparece no campo

TimeField

Date


Ícone de nota

Não existe a propriedade Value para os controlos de diálogo GroupBox, Hyperlink, ImageControl e TreeControl.


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 (ligação para a API do evento)

Descrição tal como consta no IDE Básico

OnActionPerformed

Executar ação

OnAdjustmentValueChanged

Enquanto se faz o ajuste

OnFocusGained

Ao receber o foco

OnFocusLost

Quando se perde a concentração

OnItemStateChanged

O estado do artigo foi alterado

OnKeyPressed

Tecla premida

OnKeyReleased

Chave libertada

OnMouseDragged

O rato moveu-se enquanto se premiam as teclas

OnMouseEntered

Rato lá dentro

OnMouseExited

Rato lá fora

OnMouseMoved

OnMousePressed

Botão do rato premido

OnMouseReleased

Botão do rato solto

OnNodeExpanded

(Não no IDE Basic) quando se clica no botão de expansão de um nó num controlo de árvore

OnNodeSelected

(Não no IDE do Basic) quando um nó num controlo de árvore é selecionado

OnTabSelected

(Não no IDE do Basic) quando é selecionada uma separador num controlo TabPage

OnTextChanged

Texto alterado


Í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.


Métodos

Lista de métodos do serviço DialogControl

AddSubNode
AddSubTree
CreateRoot

FindNode
Resize
SetFocus

SetTableData
WriteLine


AddSubNode

Cria e devolve um novo nó do controlo de árvore como um objeto UNO subordinado a um nó pai. Consulte XMutableTreeNode na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.

Este método pode ser chamado antes de apresentar a caixa de diálogo, para construir a árvore inicial. Também pode ser chamado a partir de um evento de diálogo ou de controlo — utilizando o evento OnNodeExpanded — para completar a árvore dinamicamente.

Sintaxe:

svc.AddSubNode(parentnode: uno, displayvalue: str, opt datavalue: any): uno

Parâmetros:

parentnode: Um objeto UNO de nó, do tipo com.sun.star.awt.tree.XMutableTreeNode.

displayvalue: O texto que aparece na caixa de controlo em árvore.

datavalue: Qualquer valor associado ao novo nó. datavalue pode ser uma cadeia de caracteres, um número ou uma data. Omita o argumento quando não for aplicável.

Exemplo:

LibreOffice Os exemplos básicos e em Python utilizam a caixa de diálogo myDialog do documento atual, proveniente da biblioteca Standard.

Em Basic

      Dim oDlg As Object, myTree As Object, myNode As Object, theRoot As Object
      Set oDlg = CreateScriptService("Dialog",,, "myDialog")
      Set myTree = oDlg.Controls("myTreeControl")
      Set theRoot = myTree.CreateRoot("Tree top")
      Set myNode = myTree.AddSubNode(theRoot, "A branch ...")
   
Em Python

     dlg = CreateScriptService('SFDialogs.Dialog', None, None, 'myDialog')
     tree = dlg.Controls('myTreeControl')
     root = tree.CreateRoot('Tree top')
     node = tree.AddSubNode(root, 'A branch ...')
   

AddSubTree

Devolve True quando uma subárvore, subordinada a um nó pai, puder ser inserida com sucesso num controlo de árvore. Se o nó pai já tivesse nós filhos antes de se chamar este método, esses nós filhos são apagados.

Este método pode ser chamado antes de apresentar a caixa de diálogo, para construir a árvore inicial. Também pode ser chamado a partir de um evento de diálogo ou de controlo — utilizando o evento OnNodeExpanded — para completar a árvore dinamicamente.

Sintaxe:

svc.AddSubTree(parentnode: uno, flattree: any, opt withdatavalue: bool): bool

Parâmetros:

parentnode: Um objeto UNO de nó, do tipo com.sun.star.awt.tree.XMutableTreeNode.

flattree: um array bidimensional ordenado pelas colunas que contêm os valores a apresentar. Esse array pode ser obtido através do método GetRows aplicado ao serviço SFDatabases.Database. Quando um elemento da matriz que contém o texto a apresentar é Empty ou Null, não é criado nenhum novo subnó e o restante da linha é ignorado.


      Árvore plana    >>>>    Subárvore resultante
      A1	B1	C1             |__   A1	
      A1	B1	C2                   |__   B1
      A1	B2	C3                         |__  C1
      A2	B3	C4                         |__  C2
      A2	B3	C5                   |__   B2
      A3	B4	C6                         |__  C3
                             |__   A2
                                   |__   B3
                                         |__  C4
                                         |__  C5
                             |__   A3
                                   |__   B4
                                         |__  C6
   

withdatavalue: Quando se utiliza o valor predefinido False, cada coluna de flattree contém o texto a apresentar no controlo de árvore. Quando True, os textos a exibir (displayvalue) encontram-se nas colunas 0, 2, 4, ... enquanto os valores dos dados (datavalue) se encontram nas colunas 1, 3, 5, ...

Exemplo:

Em Basic

      Dim myTree As Object, theRoot As Object, oDb As Object, vData As Variant
      Set myTree = myDialog.Controls("myTreeControl")
      Set theRoot = myTree.CreateRoot("By product category")
      Set oDb = CreateScriptService("SFDatabases.Database", "/home/.../mydatabase.odb")
      vData = oDb.GetRows("SELECT [Category].[Name], [Category].[ID], [Product].[Name], [Product].[ID] " _
          & "FROM [Category], [Product] WHERE [Product].[CategoryID] = [Category].[ID] " _
          & "ORDER BY [Category].[Name], [Product].[Name]")
      myTree.AddSubTree(theRoot, vData, WithDataValue := True)
   
Em Python

     SQL_STMT = "SELECT [Category].[Name], [Category].[ID], [Product].[Name], [Product].[ID] \
         FROM [Category], [Product] WHERE [Product].[CategoryID] = [Category].[ID] \
         ORDER BY [Category].[Name], [Product].[Name]"
     tree = dlg.Controls('myTreeControl')
     root = tree.CreateRoot('By Product category')
     db = CreateScriptService('SFDatabases.Database', '/home/.../mydatabase.odb')
     sub_tree = db.GetRows(SQL_STMT)
     tree.AddSubTree(root, sub_tree, withdatavalue=True)
   

CreateRoot

Devolve um novo nó raiz do controlo de árvore, como um objeto UNO de nó do tipo com.sun.star.awt.tree.XMutableTreeNode. A nova raiz da árvore é inserida abaixo dos nós raiz já existentes. Consulte XMutableTreeNode na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.

Este método pode ser chamado antes de apresentar a caixa de diálogo, para construir a árvore inicial. Também pode ser chamado a partir de um evento de uma caixa de diálogo ou de um controlo, para completar a árvore dinamicamente.

Sintaxe:

svc.CreateRoot(displayvalue: str, opt datavalue: any): uno

Parâmetros:

displayvalue: O texto que aparece na caixa de controlo em árvore.

datavalue: Qualquer valor associado ao novo nó. datavalue pode ser uma cadeia de caracteres, um número ou uma data. Omita o argumento quando não for aplicável.

Exemplo:

Em Basic

      Dim myTree As Object, myNode As Object
      Set myTree = myDialog.Controls("myTreeControl")
      Set myNode = myTree.CreateRoot("Tree starts here ...")
   
Em Python

     tree = dlg.Controls('myTreeControl')
     node = tree.CreateRoot('Tree starts here ...')
   

FindNode

Percorre a árvore e procura, de forma recursiva, a partir da raiz, um nó que cumpra determinados critérios. Basta uma correspondência: ou o seu valor de exibição corresponda ao padrão displayvalue, ou o seu valor de dados seja igual a datavalue. As comparações podem ou não distinguir maiúsculas de minúsculas. A primeira ocorrência correspondente é devolvida como um objeto UNO de nó do tipo com.sun.star.awt.tree.XMutableTreeNode. Consulte XMutableTreeNode na documentação da Interface de Programação de Aplicações (API) para obter informações detalhadas.

Caso não seja encontrado, o método devolve Nothing, que deve ser verificado com a função incorporada IsNull().

Este método pode ser chamado antes de apresentar a caixa de diálogo, para construir a árvore inicial. Também pode ser chamado a partir de um evento de uma caixa de diálogo ou de um controlo.

Sintaxe:

svc.FindNode(displayvalue: str = '', opt datavalue: any, casesensitive = False): uno

Parâmetros:

É necessário especificar um dos argumentos displayvalue ou datavalue. Se ambos estiverem presentes, basta que um deles corresponda para selecionar o nó.

displayvalue: O padrão a ser comparado. Consulte o método SF_String.IsLike() para obter a lista de caracteres curinga possíveis. Quando for igual a uma cadeia de caracteres de comprimento zero (valor predefinido), este valor de exibição não é procurado.

datavalue: Qualquer valor associado ao novo nó. datavalue pode ser uma cadeia de caracteres, um número ou uma data. Omita o argumento quando não for aplicável.

distingue maiúsculas de minúsculas: O valor por predefinição é False

Exemplo:

Em Basic

      Dim myTree As Object, myNode As Object
      Set myTree = myDialog.Controls("myTreeControl")
      Set myNode = myTree.FindNode("*Sophie*", CaseSensitive := True)
   
Em Python

     tree = dlg.Controls('myTreeControl')
     node = FindNode('*Sophie*', casesensitive=True)
     if node is None:
         # ...
   

Resize

Deslocar o canto superior esquerdo de um controlo de diálogo para novas coordenadas e/ou modificar as suas dimensões. Devolve True se o redimensionamento tiver sido bem-sucedido.

Sintaxe:

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

Parâmetros:

Todas as distâncias são expressas em unidades Map AppFont e são medidas a partir do canto superior esquerdo da caixa de diálogo principal. Sem argumentos, o método redimensiona o controlo para o seu «tamanho preferencial», um tamanho ajustado em função do seu conteúdo real. Os argumentos em falta permanecem inalterados.

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

Topo: A distância vertical a partir do canto superior esquerdo

Largura: a largura horizontal do retângulo que contém o controlo

Altura: a altura vertical do retângulo que contém o controlo

Exemplo:

Em Basic

      Dim oControl As Object
      Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
      Set oControl = oDlg.Controls("thisControl")
      oControl.Resize(100, 200, Height:=6000) ' A largura permanece inalterada
    
Em Python

      dlg = CreateScriptService('Dialog', None, None, 'myDialog')
      ctrl = dlg.Controls('thisControl')
      ctrl.Resize(300, 200, 1500)  # A altura permanece inalterada
    

SetFocus

Colocar o foco no controlo. Devolve True se o foco tiver sido estabelecido com sucesso.

Este método é frequentemente chamado a partir de um evento de caixa de diálogo ou de controlo.

Sintaxe:

svc.SetFocus(): bool

Exemplo:

Em Basic

      Dim oControl As Object
      Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
      Set oControl = oDlg.Controls("thisControl")
      oControl.SetFocus()
    
Em Python

      dlg = CreateScriptService('Dialog', None, None, 'myDialog')
      ctrl = dlg.Controls('thisControl')
      ctrl.SetFocus()
    

SetTableData

Preenche um TableControl com os dados fornecidos. Todos os dados já existentes são apagados antes da inserção dos novos dados passados como argumento.

Quando o TableControl é adicionado à caixa de diálogo, é possível utilizar o IDE do Basic para definir se os cabeçalhos das colunas e das linhas serão apresentados na tabela. Se o TableControl tiver cabeçalhos de colunas e/ou linhas, a primeira coluna e/ou linha do conjunto de dados fornecido são utilizadas como rótulos para os cabeçalhos da tabela.

Este método devolve True quando é bem-sucedido.

Sintaxe:

svc.SetTableData(dataarray: any[0..*, 0..*], widths: int[0..*], alignments: str, RowHeaderWidth = 10): bool

Parâmetros:

dataarray: Dados a introduzir na tabela, representados como um array de arrays em Basic ou uma tupla de tuplas em Python. Os dados devem incluir cabeçalhos de colunas e linhas, caso devam ser apresentados pelo TableControl.

larguras: Matriz que contém as larguras relativas de cada coluna. Por outras palavras, larguras = (1, 2) significa que a segunda coluna tem o dobro da largura da primeira. Se o número de valores na matriz for inferior ao número de colunas da tabela, então o último valor da matriz é utilizado para definir a largura das colunas restantes.

alinhamentos: Define o alinhamento em cada coluna como uma cadeia de caracteres em que cada caractere pode ser «L» (Esquerda), «C» (Centro), «R» (Direita) ou « » (espaço em branco, valor predefinido, o que significa alinhamento à esquerda para cadeias de caracteres e à direita para valores numéricos). Se o comprimento da cadeia de caracteres for inferior ao número de colunas da tabela, o último caractere da cadeia é utilizado para definir o alinhamento das colunas restantes.

RowHeaderWidth: largura da coluna do cabeçalho da linha, expressa em unidades Map AppFont. Valor predefinido = 10. O argumento é ignorado quando o TableControl não tem cabeçalho de linha.

Exemplo:

Em Basic

O exemplo seguinte parte do princípio de que a caixa de diálogo myDialog possui um TableControl denominado Grid1, cujas propriedades «Mostrar cabeçalho de linha» e «Mostrar cabeçalho de coluna» estão definidas como «Sim».


     Dim myDialog As Object, oTable As Object, tableData As Variant
     myDialog = CreateScriptService("Dialog", "GlobalScope", "Standard", "myDialog")
     oTable = myDialog.Controls("Grid1")
     tableData = Array("Column A", "Column B", "Column C")
     tableData = SF_Array.AppendRow(tableData, Array("Row 1", 1, 2))
     tableData = SF_Array.AppendRow(tableData, Array("Row 2", 3, 4))
     tableData = SF_Array.AppendRow(tableData, Array("Row 3", 5, 6))
     vAlignments = "LCC"
     vWidths = Array(2, 1, 1)
     oTable.SetTableData(tableData, vWidths, vAlignments)
     myDialog.Execute()
   

A propriedade Value devolve a linha selecionada na tabela. Se não estiver selecionada nenhuma linha, é devolvido um objeto Array vazio. O trecho de código seguinte mostra como verificar se está selecionada alguma linha na tabela.


     rowValues = oTable.Value
     If UBound(rowValues) < 0 Then
         MsgBox "Nenhuma linha selecionada."
     Else
         MsgBox "A linha " & oTable.ListIndex & " está selecionada."
     End If
   
Em Python

     dlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "myDialog")
     table_control = dlg.Controls("Grid1")
     table_data = (("Column A", "Column B", "Column C"),
                   ("Row 1", 1, 2),
                   ("Row 2", 3, 4),
                   ("Row 3", 5, 6))
     alignments = "LCC"
     widths = (100, 50, 50)
     table_control.SetTableData(table_data, widths, alignments)
     dlg.Execute()
   

     bas = CreateScriptService("Basic")
     row_values = table_control.Value
     if len(row_values) == 0:
         bas.MsgBox("No row selected.")
     else:
         bas.MsgBox(f"Row {table_control.ListIndex} is selected.")
   

WriteLine

Adiciona uma nova linha no final de um campo de texto com várias linhas. Será inserido um carácter de nova linha quando for necessário. O método devolve True em caso de sucesso.

É gerado um erro se o controlo em questão não for do tipo TextField ou não for multilinha.

Sintaxe:

svc.WriteLine(opt line: str): bool

Parâmetros:

Linha: A cadeia de caracteres a inserir. O valor predefinido é uma linha vazia.

Exemplo:

Em Basic

      Dim oDlg As Object, oControl As Object
      Set oDlg = CreateScriptService("SFDialogs.Dialog",,, "myDialog")
      Set oControl = oDlg.Controls("thisControl")
      oControl.WriteLine("a new line")
   
Em Python

     dlg = CreateScriptService('SFDialogs.Dialog', None, None, 'myDialog')
     ctrl = dlg.Controls('thisControl')
     ctr.WriteLine("a new line")
   
Í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!