Sumário

# Serviço ScriptForge.Basic

O serviço ScriptForge.Basic propõe uma coleção de métodos LibreOffice Basic a serem executados em um contexto Python. Os métodos de serviço Basic reproduzem a sintaxe e o comportamento exatos das funções integradas do Basic.

Exemplo típico:

       bas.MsgBox('Mostra este texto numa caixa de mensagem a partir de um script Python')

O serviço ScriptForge.Basic é limitado aos scripts em Python.

## Invocação do serviço

Antes de usar o serviço Basic, é necessário importar o método CreateScriptService() do módulo scriptforge:

        from scriptforge import CreateScriptService
        bas = CreateScriptService("Basic")

## Propriedades

Nome | Somente leitura | Tipo | Descrição
--- | --- | --- | ---
MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL | Sim | Integer | Valores: 0, 1, 5, 4, 3
MB_ICONEXCLAMATION, MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONSTOP | Sim | Integer | Valores: 48, 64, 32, 16
MB_ABORTRETRYIGNORE, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3 | Sim | Integer | Valores: 2, 128, 256, 512
IDABORT, IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY, IDYES | Sim | Integer | Valores: 3, 2, 5, 7, 1, 4, 6 Constantes que indicam o botão selecionado em MsgBox.
StarDesktop | Sim | Objeto UNO | Retorna o objeto StarDesktop que representa o aplicativo LibreOffice.
ThisComponent | Sim | objeto UNO | Se o componente atual se referir a um documento LibreOffice, esse método retornará o objeto UNO que representa o documento. Esta propriedade retorna None quando o componente atual não corresponde a um documento.
ThisDatabaseDocument | Sim | objeto UNO | Se o script estiver sendo executado a partir de um documento Base ou qualquer um de seus subcomponentes, este método retorna o componente principal da instância Base. Caso contrário, esta propriedade retorna None.

Lista de Métodos no Serviço Basic
CDate CDateFromUnoDateTime CDateToUnoDateTime ConvertFromUrl (*) ConvertToUrl (*) CreateUnoService CreateUnoStruct (*) DateAdd | DateDiff DatePart DateValue Format GetDefaultContext GetGuiType (*) GetPathSeparator (*) GetSystemTicks | GlobalScope.BasicLibraries GlobalScope.DialogLibraries InputBox (*) MsgBox (*) Now RGB Xray

Existem alternativas Python para métodos marcados com (*).

## CDate

Converte uma expressão numérica ou uma string para um objeto nativo Python do tipo datetime.datetime.

Este método expõe a função interna do Basic CDate para scripts em Python.

### Sintaxe:

svc.CDate(expression: any): obj

### Parâmetros:

expression: uma expressão numérica ou uma string representando uma data.

Quando converter uma expressão de texto, a data e a hora devem ser inseridas em um dos padrões de aceitação da data definidos para sua configuração de localidade (veja LibreOffice - PreferênciasFerramentas - Opções - Idiomas e Localidades - Geral) ou no formato de data ISO (momentaneamente, apenas o formato ISO com hifens, por exemplo, "2012-12-31" é aceito). Em expressões numéricas, os valores à esquerda do decimal representam a data, a partir de 31 de dezembro de 1899. Os valores à direita do decimal representam as horas.

### Exemplo:

        d = bas.CDate(1000.25)
        bas.MsgBox(str(d)) # 1902-09-26 06:00:00
        bas.MsgBox(d.year) # 1902

## CDateFromUnoDateTime

Converte uma representação de data/tempo em UNO para um objeto nativo Python do tipo datetime.datetime.

### Sintaxe:

svc.CDateFromUnoDateTime(unodate: uno): obj

### Parâmetros:

unodate: Um objeto UNO que armazena data/tempo de um dos seguintes tipos: com.sun.star.util.DateTime, com.sun.star.util.Date ou com.sun.star.util.Time

### Exemplo:

O exemplo a seguir cria um objeto com.sun.star.util.DateTime e converte-o para um objeto Python do tipo datetime.datetime.

        uno_date = bas.CreateUnoStruct('com.sun.star.util.DateTime')
        uno_date.Year = 1983
        uno_date.Month = 2
        uno_date.Day = 23
        new_date = bas.CDateFromUnoDateTime(uno_date)
        bas.MsgBox(str(new_date)) # 1983-02-23 00:00:00

## CDateToUnoDateTime

Converte uma representação de data em um objeto com.sun.star.util.DateTime.

### Sintaxe:

svc.CDateToUnoDateTime(date: obj): uno

### Parâmetros:

date: Um objeto Python que armazena data/tempo de um dos seguintes tipos: datetime.datetime, datetime.date, datetime.time, float (time.time) ou time.struct_time.

### Exemplo:

        from datetime import datetime
        current_datetime = datetime.now()
        uno_date = bas.CDateToUnoDateTime(current_datetime)
        bas.MsgBox(str(uno_date.Year) + "-" + str(uno_date.Month) + "-" + str(uno_date.Day))

## ConvertFromUrl

Retorna um caminho usando a notação do sistema para uma URL especificada em file:.

### Sintaxe:

svc.ConvertFromUrl(url: str): str

### Parâmetros:

url: Uma URL do tipo file:.

### Tipo de retorno:

Um caminho de arquivo no formato do sistema.

### Exemplo:

        filename = bas.ConvertFromUrl( "file:///C:/Program%20Files%20(x86)/LibreOffice/News.txt" )
        bas.MsgBox(filename)

O método do módulo uno fileUrlToSystemPath() retorna um caminho do sistema utilizando uma sintaxe idêntica.

        import uno
        filename = uno.fileUrlToSystemPath( "file:///C:/Program%20Files%20(x86)/LibreOffice/News.txt" )
        bas.MsgBox(filename)

## ConvertToUrl

Retorna uma URL do tipo file: para um caminho especificado no formato do sistema.

### Sintaxe:

svc.ConvertToUrl(systempath: str): str

### Parâmetros:

systempath: Um caminho para nome de arquivo no formato do sistema, como uma string.

### Tipo de retorno:

Uma string no formato URL file:.

### Exemplo:

        url = bas.ConvertToUrl( 'C:\Program Files(x86)\LibreOffice\News.txt' )
        bas.MsgBox(url)

O método do módulo uno systemPathToFileUrl() retorna o URL do arquivo para um dado caminho do sistema.

        from uno import systemPathToFileUrl as ConvertToUrl
        filename = ConvertToUrl( 'C:\Program Files(x86)\LibreOffice\News.txt' )
        bas.MsgBox(filename)

## CreateUnoService

Cria uma instância de um serviço UNO com o ProcessServiceManager.

### Sintaxe:

svc.CreateUnoService(servicename: str): uno

### Parâmetros:

servicename: Um nome completo para um serviço, como por exemplo com.sun.star.ui.dialogs.FilePicker ou com.sun.star.sheet.FunctionAccess.

### Exemplo:

        dsk = bas.CreateUnoService('com.sun.star.frame.Desktop')

## CreateUnoStruct

Retorna uma instância da estrutura UNO do tipo especificado.

### Sintaxe:

svc.CreateUnoStruct(unostructure: str): uno

### Parâmetros:

unostructure: Um nome totalmente qualificado da estrutura tal como com.sun.star.beans.Property ou com.sun.star.util.DateTime.

### Exemplo:

        date_struct = CreateUnoStruct('com.sun.star.util.DateTime')

O método do módulo uno createUnoStruct() cria uma instância de um tipo de estrutura Uno.

        import uno
        p = uno.createUnoStruct( 'com.sun.star.beans.Property' )
        bas.MsgBox(p)

## DateAdd

Adiciona um intervalo de datas ou tempo a uma data/tempo específica várias vezes e retorna a data/tempo resultante.

### Sintaxe:

svc.DateAdd(interval: str, number: num, date: datetime): datetime

### Parâmetros:

interval: Uma expressão do tipo string da tabela a seguir, a qual especifica o intervalo de data ou tempo:

intervalo (valor da string) | Explicação
--- | ---
yyyy | Ano
q | Trimestre
m | Mês
y | Dia do ano
w | Dia da semana
ww | Semana do ano
d | Dia
h | Hora
n | Minuto
s | Segundos

number: Uma expressão numérica especificando quantas vezes o valor interval será adicionado (quando positivo) ou subtraído (quando negativo).

date: Um valor datetime.datetime especificado. O valor interval será acrescentado number vezes a este valor datetime.datetime.

### Tipo de retorno:

Um valor datetime.datetime.

### Exemplo:

        dt = datetime.datetime(2004, 1, 31)
        dt = bas.DateAdd("m", 1, dt)
        print(dt)

## DateDiff

Retorna o número de intervalos de data ou tempo entre dois valores de data/tempo específicos.

### Sintaxe:

svc.DateDiff(interval: str, date1: datetime, date2: datetime, firstdayofweek = 1, firstweekofyear = 1): int

### Parâmetros:

interval: Uma string com uma expressão definindo um intervalo de data, conforme definido anteriormente no método DateAdd.

date1, date2: Dois valores datetime.datetime a serem comparados.

firstdayofweek - Um parâmetro opcional que especifica o primeiro dia da semana.

Valor firstdayofweek | Explicação
--- | ---
0 | Use o valor padrão do sistema
1 | Domingo (padrão)
2 | Segunda-feira
3 | Terça-feira
4 | Quarta-feira
5 | Quinta-feira
6 | Sexta-feira
7 | Sábado

firstweekofyear - Um parâmetro opcional que especifica a primeira semana de um ano.

Valor firstweekofyear | Explicação
--- | ---
0 | Use o valor padrão do sistema
1 | A semana 1 é a semana com 1ro de janeiro (padrão)
2 | A semana 1 é a primeira semana que contém quatro ou mais dias desse ano
3 | A semana 1 é a primeira semana que contém somente dias do ano novo

### Tipo de retorno:

Um número.

### Exemplo:

        date1 = datetime.datetime(2005,1, 1)
        date2 = datetime.datetime(2005,12,31)
        diffDays = bas.DateDiff('d', date1, date2)
        print(diffDays)

## DatePart

A função DatePart retorna uma parte específica de uma data.

### Sintaxe:

svc.DatePart(interval: str, date: datetime, firstdayofweek = 1, firstweekofyear = 1): int

### Parâmetros:

interval: Uma string com uma expressão definindo um intervalo de data, conforme definido anteriormente no método DateAdd.

date: Objeto de data/tempo a partir da qual o resultado é calculado.

firstdayofweek, firstweekofyear: parâmetros opcionais que especificam, respectivamente, o primeiro dia da semana e a primeira semana do ano, conforme detalhado no método DateDiff.

### Tipo de retorno:

A parte extraída de um valor de data/tempo.

### Exemplo:

        print(bas.DatePart("ww", datetime.datetime(2005,12,31)
        print(bas.DatePart('q', datetime.datetime(1999,12,30)

## DateValue

Computa um valor de data a partir de uma string representando uma data.

### Sintaxe:

svc.DateValue(date: str): datetime

### Parâmetros:

data: String que contém a data que será convertida para um objeto Date.

A string a ser passada para a função DateValue deve ser expressa em um dos formatos de data definidos por suas configurações de localidade (veja suas configurações em LibreOffice - PreferênciasFerramentas - Opções - Idiomas e localidades - Geral) ou usando o formato ISO "yyyy-mm-dd" (ano, mês e dia separado por hifens).

### Tipo de retorno:

A data calculada.

### Exemplo:

        dt = bas.DateValue("23-02-2011")
        print(dt)

## Format

Converte um número em um string e formata-a de acordo com a formatação especificada.

### Sintaxe:

svc.Format(expression: any, format = ''): str

### Parâmetros:

expression: Expressão numérica que você deseja converter em uma string formatada.

formato: String que especifica o código de formato para o número. Se formato for omitido, a função Formato funciona como a função LibreOffice Basic Str().

### Tipo de retorno:

Caractere texto.

### Códigos de formatação

Em BASIC, um código format pode ser dividido em três secções separadas por ponto e vírgula. A primeira parte define o formato para valores positivos, a segunda parte para valores negativos e a terceira parte para zero. Se especificar apenas um código format, ele será aplicado a todos os números.

Você pode definir o local utilizado para controlar o formato de números, datas e moedas no LibreOffice Basic em LibreOffice - PreferênciasFerramentas - Opções - Idiomas e localidades - Geral. Nos códigos de formato do Basic, o ponto decimal (.) sempre será utilizado como espaço reservado para o separador decimal em seu local e será substituído pelo caractere correspondente.

O mesmo se aplica para as configurações de localidade para data, hora e formatos monetários. O código de formatação do Basic será interpretado e exibido de acordo com suas configurações de localidade.

A lista a seguir descreve os códigos que você pode usar para formatar uma expressão numérica:

Código | Descrição
--- | ---
0 | Se expressão tiver um dígito na posição do 0 no código formato, o dígito é exibido; caso contrário, é exibido um zero. Se a expressão tiver menos dígitos que a quantidade de zeros no código format (em qualquer lado do decimal), serão exibidos zeros à esquerda ou à direita. Se a expressão tiver mais dígitos à esquerda do separador decimal do que o número de zeros no código format, os dígitos adicionais serão exibidos sem formatação. As casas decimais na expressão são arredondadas de acordo com o número de zeros exibidos que aparecem após o separador decimal no código Format.
# | Se expressão contiver um dígito na posição do espaço reservado # no código formato, o dígito será exibido; caso contrário, nada será exibido nessa posição. Este símbolo funciona como o 0, exceto pelo fato de que os zeros à esquerda ou à direita não serão exibidos se houver mais caracteres # no código Format do que dígitos na Expressão. Serão exibidos apenas os dígitos relevantes do Expressão.
. (period) | O espaço reservado decimal determina o número de casas decimais à esquerda e à direita do separador decimal. Se o código Format contiver somente espaços reservados para # à esquerda deste símbolo, os números menores que 1 começarão com um separador decimal. Para sempre exibir um zero à esquerda dos números fracionários, use o 0 como um marcador para o primeiro dígito à esquerda do separador decimal. O uso do ponto como separador de milhares e de decimais é dependente das configurações regionais. Quando usar um número no código fonte Basic, sempre use um ponto como separador decimal. O caractere exibido como separador decimal depende no formato de número usado no seu sistema.
% | Multiplica a expressão por 100 e insere o sinal de percentagem (%) onde a expressão aparece no código formato.
E- E+ e- e+ | Se o código format contiver pelo menos um espaço reservado para dígitos (0 ou #) à direita do símbolo E-, E+, e- ou e+, a expressão será formatada no formato científico ou exponencial. A letra E ou e é inserida entre o número e o expoente. O número de espaços reservados para dígitos à direita do símbolo determina o número de dígitos no expoente. Se o expoente for negativo, o sinal de subtração será exibido diretamente antes de um expoente com E-, E+, e-, e+. Se o expoente for positivo, o sinal de adição só será exibido antes de expoentes com E+ ou e+.
- + $ ( ) space | : Um sinal de mais (+), menos (-), dólar ($), espaço ou parênteses inseridos diretamente no código format são exibidos como caracteres literais.
\ | Para exibir caracteres diferentes dos listados aqui, você deve precedê-los de uma barra invertida (\) ou colocá-los entre aspas (" "). A barra invertida exibe o próximo caractere no código format. Os caracteres no código Format que tem um significado reservado só podem ser mostrados como caracteres literais se estiverem precedidos de uma barra invertida. A barra invertida não é exibida, a menos que você digite duas barras invertidas (\\) no código de formatação. Os caracteres que devem ser precedidos de uma barra invertida no código de formato para serem exibidos como caracteres literais são: caracteres de formatação de data e hora (a, c, d, h, m, n, p, q, s, t, w, y, /, :), caracteres de formatação de números (#, 0, E, %, e, vírgula, ponto) e caracteres de formatação de cadeia de caracteres (@, &, <, >, !).

### Formatos predefinidos

Você também pode usar os formatos de número predefinidos. Com exceção do "Número Geral", todos os códigos de formato predefinidos retornam o número como um número decimal com duas casas decimais.

Se você usar formatos predefinidos, o nome do formato deverá estar entre aspas.

Código | Descrição
--- | ---
"<" | Converter expressão para minúsculas
">" | Converta expressão para maiúsculas.
"c" or "General Date" | Retorna a expressão numérica no formato de data curta, opcionalmente com "H:MM:SS AM/PM". Se expressão for uma string, retorna a string.
"n" | Retorna os minutos da expressão numérica, com 1 ou 2 dígitos.
"nn" | Retorna os minutos da expressão numérica com dois dígitos.
"w" | Retorna o dia da semana da expressão numérica. 1 é domingo e 7 é sábado.
"General Number" | Retorna a expressão numérica com 12 dígitos (0.############).
"Currency" | Retorna a expressão numérica na moeda da localidade.
"Fixed" | Retorna a expressão numérica com 2 casas decimais (0,00).
"Standard" | Retorna a expressão numérica com separadores de milhares e 2 casas decimais (@0,00).
"Percent" | Retorna a expressão numérica como valor percentual (0,00%).
"Scientific" | Retorna a expressão numérica em notação científica (#.00E+00);
"Yes/No" | Retorna “Sim” se a expressão numérica não for igual a zero, “Não” caso contrário. “Sim” e “Não” são localizados.
"True/False" | Retorna “Verdadeiro” se a expressão numérica não for igual a zero, “Falso” caso contrário. “Verdadeiro” e “Falso” são localizados.
"On/Off" | Retorna "On" se a expressão numérica não for igual a zero, "Off" caso contrário. "On" e "Off" são localizados.
"Long Date" or "dddddd" | Retorna a expressão numérica no formato longo de data do sistema e depende da linguagem.
"Medium Date" | Retorna a expressão numérica no formato de data DD-MMM-AA, dependendo da linguagem.
"Short Date" or "ddddd" | Retorna a expressão numérica no formato de data curta do sistema, dependendo da linguagem.
"Long Time" or "ttttt" | Retorna a expressão numérica no formato de hora longo do sistema e depende da localidade ("H:MM:SS AM/PM").
"Medium Time" | Retorna a expressão numérica no formato de hora médio do sistema, dependendo da localidade (HH:MM AM/PM)
"Short Time" | Retorna a expressão numérica no formato de hora curto do sistema, dependendo da linguagem (HH:MM).

Você pode definir o local utilizado para controlar o formato de números, datas e moedas no LibreOffice Basic em LibreOffice - PreferênciasFerramentas - Opções - Idiomas e localidades - Geral. Nos códigos de formato do Basic, o ponto decimal (.) sempre será utilizado como espaço reservado para o separador decimal em seu local e será substituído pelo caractere correspondente.

O mesmo se aplica para as configurações de localidade para data, hora e formatos monetários. O código de formatação do Basic será interpretado e exibido de acordo com suas configurações de localidade.

### Exemplo:

        txt = bas.Format(6328.2, '##.##0.00')
        print(txt)

## GetDefaultContext

Retorna o contexto padrão do "process service factory", se existente, ou retorna uma referência nula.

GetDefaultContext é uma alternativa ao método getComponentContext() disponível a partir da variável global XSCRIPTCONTEXT ou no módulo uno.py.

### Sintaxe:

svc.GetDefaultContext(): uno

### Tipo de retorno:

O contexto padrão do componente é usado ao instanciar serviços usando o XMultiServiceFactory. Consulte o capítulo Professional UNO no Guia do Desenvolvedor pelo link api.libreoffice.org para maiores informações.

### Exemplo:

        ctx = bas.GetDefaultContext()

## GetGuiType

Retorna um valor numérico que especifica a interface gráfica do usuário. Esta função existe apenas por razões de compatibilidade com versões mais antigas.

Consulte o método system() do módulo Python platform para identificar o sistema operacional.

### Sintaxe:

svc.GetGuiType(): int

### Exemplo:

        n = bas.GetGuiType()

Instruções mais pertinentes estão disponíveis na página da Ajuda Identificar o sistema operacional.

Os serviços • ScriptForge.Platform fornecem uma coleção de propriedades sobre o ambiente de execução e do contexto, que inclui a detecção da plataforma.
• Uma indetificação mais extensa do sistema operacional pode ser vista na fórmula Calc INFO("system").

## GetPathSeparator

Retorna o separador de diretórios dependente do sistema operacional usado para especificar caminhos de arquivos.

Use o método os.pathsep do módulo Python os para identificar o separador de diretórios.

### Sintaxe:

svc.GetPathSeparator(): str

### Exemplo:

        sep = bas.GetPathSeparator()

## GetSystemTicks

Retorna o número de tiques do sistema fornecido pelo sistema operacional. Você pode utilizar esta função para otimizar certos processos. Use este método para estimar tempos em milissegundos.

### Sintaxe:

svc.GetSystemTicks(): int

### Exemplo:

        ticks_ini = bas.GetSystemTicks()
        time.sleep(1)
        ticks_end = bas.GetSystemTicks()
        bas.MsgBox("{} - {} = {}".format(ticks_end, ticks_ini,ticks_end - ticks_ini))

## GlobalScope.BasicLibraries

Retorna o objeto UNO contendo todas as bibliotecas e módulos Basic compartilhados.

Este método é o equivalente em Python à instrução GlobalScope.BasicLibraries em scripts Basic.

### Sintaxe:

svc.GlobalScope.BasicLibraries(): uno

### Tipo de retorno:

com.sun.star.script.XLibraryContainer

### Exemplo:

O exemplo a seguir carrega a biblioteca Basic Gimmicks se ela ainda não tiver sido carregada.

        libs = bas.GlobalScope.BasicLibraries()
        if not libs.isLibraryLoaded("Gimmicks"):
            libs.loadLibrary("Gimmicks")

## GlobalScope.DialogLibraries

Retorna um objeto UNO contendo todas as bibliotecas de diálogo compartilhadas.

Este método é o equivalente em Python à instrução GlobalScope.DialogLibraries em scripts Basic.

### Sintaxe:

svc.GlobalScope.DialogLibraries(): uno

### Tipo de retorno:

com.sun.star.comp.sfx2.DialogLibraryContainer

### Exemplo:

Os exemplo a seguir mostram uma caixa de mensagem com os nomes de todas as bibliotecas de diálogo compartilhadas.

        dlg_libs = bas.GlobalScope.DialogLibraries()
        lib_names = dlg_libs.getElementNames()
        bas.MsgBox("\n".join(lib_names))

## InputBox

### Sintaxe:

svc.InputBox(prompt: str, [title: str], [default: str], [xpostwips: int, ypostwips: int]): str

### Parâmetros:

prompt: expressão de cadeia de caracteres exibida como uma mensagem na caixa de diálogo.

title: expressão de cadeia de caracteres exibida na barra de título da caixa de diálogo.

default: expressão de cadeia de caracteres exibida como padrão na caixa de texto quando nenhuma outra entrada é fornecida.

xpostwips: expressão de número inteiro que especifica a posição horizontal da caixa de diálogo. A posição é uma coordenada absoluta e não faz referência à janela do LibreOffice.

ypostwips: expressão de número inteiro que especifica a posição vertical da caixa de diálogo. A posição é uma coordenada absoluta e não faz referência à janela do LibreOffice.

Se xpostwips e ypostwips forem omitidos, a caixa de diálogo será centralizada na tela. A posição é especificada em twips.

### Tipo de retorno:

String

### Exemplo:

        txt = s.InputBox('Por favor, digite uma frase:', 'Prezado usuário')
        s.MsgBox(txt, s.MB_ICONINFORMATION, "Confirmação da frase")

Para informações mais detalhadas consulte a página Wiki Input/Output to Screen with Python.

## MsgBox

Mostra uma caixa de diálogo contendo uma mensagem e retorna um valor opcional.
Constantes MB_XX especificam o tipo da caixa de diálogo, o número e o tipo dos botões a serem mostrados, além do tipo do ícone. Ao adicionar seus respectivos valores eles formam padrões de bits que definem a aparência de um diálogo MsgBox.

### Sintaxe:

bas.MsgBox(prompt: str, [buttons: int], [title: str])[: int]

### Parâmetros:

prompt: Expressão de cadeia de caracteres exibida como uma mensagem na caixa de diálogo. Quebras de linha podem ser inseridas com Chr$(13).

title: expressão de cadeia de caracteres exibida na barra de título da caixa de diálogo. Se omitida, a barra de títulos exibe o nome do aplicativo correspondente.

buttons: qualquer expressão de número inteiro que especifique o tipo da caixa de diálogo, assim como o número e o tipo dos botões a serem exibidos e o tipo do ícone. buttons representa uma combinação de padrões de bits, ou seja, é possível definir uma combinação de elementos adicionando-se seus respectivos valores:

### Tipo de retorno:

Um valor inteiro opcional conforme detalhado anteriormente nas propriedades IDXX.

### Exemplo:

        txt = s.InputBox('Por favor, digite uma frase:', 'Prezado usuário')
        s.MsgBox(txt, s.MB_ICONINFORMATION, "Confirmação da frase")

Para informações mais detalhadas consulte a página Wiki Input/Output to Screen with Python.

## Now

Retorna a data e hora corrente do sistema em um objeto nativo Python do tipo datetime.datetime.

### Sintaxe:

svc.Now(): datetime

### Exemplo:

        bas.MsgBox(bas.Now(), bas.MB_OK, "Now")

## RGB

Retorna um valor inteiro representando uma cor, constituído pelos componentes vermelho, verde e azul.

### Sintaxe:

svc.RGB(red:int, green: int, blue: int): int

### Parâmetros:

red: qualquer expressão de número inteiro que represente o componente vermelho (0-255) da cor composta.

green: qualquer expressão de número inteiro que represente o componente verde (0-255) da cor composta.

blue: qualquer expressão de número inteiro que represente o componente azul (0-255) da cor composta.

O valor resultante Long é calculado com a seguinte fórmula:
Resultado = red×65536 + green×256 + blue.

No modo de compatibilidade com o VBA (Option VBASupport 1), o valor Long é calculado como
Resultado = red + green×256 + blue×65536
Veja Função RGB [VBA]

A caixa de diálogo Colher uma cor ajuda a calcular os componentes vermelho, azul e verde de uma cor composta. As caixas Cor do texto e Cores personalizadas mostram a caixa Colher uma cor.

### Tipo de retorno:

Integer

### Exemplo:

        YELLOW = bas.RGB(255,255,0)

## Xray

Inspeciona objetos ou variáveis UNO.

### Sintaxe:

svc.Xray(obj: any)

### Parâmetros:

obj: Uma variável ou objeto UNO.

### Exemplo:

        bas.Xray(bas.StarDesktop)

Todas as rotinas ou identificadores do ScriptForge em Basic que possuem o caractere "_" como prefixo são reservadas para uso interno. Elas não devem ser usadas em macros escritas em Basic ou em Python.

Tópicos relacionados

Especificador GlobalScope

Programando com scripts Python

uno.fileUrlToSystemPath()

uno.systemPathToFileUrl()

Input/Output to Screen with Python no Wiki

XSCRIPTCONTEXT.getComponentContext()

uno.getComponentContext()

platform.system()

os.pathsep()