Windev Internet Abrir Navegador
Segue exemplo:
bStarted is boolean
sParameters is string = "http://www.arsistemas.com.br"
bStarted = ExeRun("""C:\Program Files\Internet Explorer\iexplore.exe"" " + sParameters, exeActive, exeDontWait, "C:\Program Files\Internet Explorer\")
IF ErrorOccurred THEN
Error()
END
--------------------
terça-feira, 13 de janeiro de 2015
Windev Estruturas
Windev Estruturas
stFILE is structure as FILENAMEprodutos
// Cria uma estrutura igual a analyse
MyFileRecord is Record of MyAnalysisFile
// use as funções hreadxxx... para localizar record no arquivo original
//pra preehcer as estruturas com os nomes dos campos
MyfileRecord = MyAnalysisFile
MyfileRecord = MyAnalysisFile
//depois é só fazer a atribuição
algumacoisa = MyFileRecord.nomedocampo
Windev Pdf para Texto
Windev Pdf para Texto
//Procedimento para Extrair texto de arquivos PDF com Windev
tmpArq is string
tmpArq = fImageSelect(EdtArqPdf,"","Selecione PDF...","PDFs"+TAB+"*.PDF")
IF tmpArq<>"" THEN
EdtArqPdf = tmpArq // mostra o nome do arquivo na tela
ImgPDF = tmpArq // mostra o PDF na tela
StaTextoDoPDF = PDFToText(tmpArq,"1") // extrai texto pg 1
END
Windev Data e Hora
Windev Data e Hora
Posix (Unix Timestamp) corresponde ao número de segundos após 01/01/1970.
Posix (Unix Timestamp) corresponde ao número de segundos após 01/01/1970.
// Summary: Converte Data/Hora para Tempo Unix (Posix) = nro. de sgundos após 01/01/1970
// Syntax:
//[ <Result> = ] ConvDtHo2UnixTime (<pDtHo> is datetime)
//
// Parameters:
// pDtHo (datetime): data e hora a converter
// Return Value:
// duration: // data Posix (timestamp Unix)
//
// For instance:
// tmpUnix is duration = ConvDtHo2UnixTime(tmpdtho)
// TempoUnix = tmpUnix..InSeconds
//
PROCEDURE ConvDtHo2UnixTime(pDtHo is DateTime)
tmpDtHo is DateTime = pDtHo
tmpDtHo..Millisecond = 0
// calcula a diferença de tempo entre 01/01/1970 e a data fornecida
tmpDif is TO string = DateTimeDifference("19700101000000",tmpDtHo)
// calcula a data Posix
tmpUnix is Duration = StringToDuration(tmpDif,durationCenti)
tmpUnix..Millisecond = 0
RESULT tmpUnix
// Summary: Converte Tempo Unix (Posix = nro. de sgundos após 01/01/1970) para Data/Hora
// Syntax:
//[ <Result> = ] ConvUnixTime2DtHo (<pUnixTime> is numeric)
//
// Parameters:
// pUnixTime (numeric): data Posix (timestamp Unix)
// Return Value:
// datetime: // data e hora
//
// For instance:
// tmpUnix is numeric = TempoUnix
// tmpDtHo is datetime = ConvUnixTime2DtHo(tmpUnix)
//
PROCEDURE ConvUnixTime2DtHo(pUnixTime is numeric)
tmpMaxInt4b is int on 4 bytes = 2147483647
tmpSegundos is int on 8 bytes
tmpUnix is Duration
IF pUnixTime <= tmpMaxInt4b THEN
tmpUnix..Second = pUnixTime
ELSE // para suportar datas após 19/01/2038 e Posix > 2147483647 (valor máximo em 4 bytes)
tmpSegundos = pUnixTime
LOOP
tmpUnix..Second += tmpMaxInt4b
tmpSegundos -= tmpMaxInt4b
IF tmpSegundos < tmpMaxInt4b THEN
tmpUnix..Second += tmpSegundos
BREAK
END
END
END
tmpDtHo is DateTime = "19700101000000"
tmpDtHo += tmpUnix
RESULT tmpDtHo
Fonte: LIFETECH
Windev Aliases
Windev Aliases
Para quem não lembra mais, permite que você trabalhe em arquivos de dados físicos diferentes, mas com a mesma descrição lógica. Para todos os arquivos de dados, por exemplo, a descrição do arquivo é realizada na Análise (ou dicionário de dados, se preferirem), e HAlias, é usado para criar uma cópia lógica desse arquivo.
A partir da versão 17 do WinDev, esta função também está disponível para aplicações Ipad e Iphone.
<Result>: Boolean
HAlias
Cria um aliás lógico para um arquivo de dados (ou consulta), ou cancela todos os aliases existentes. Um aliás também pode ser cancelado pela sentença HCancelAlias, da Wlanguage.Para quem não lembra mais, permite que você trabalhe em arquivos de dados físicos diferentes, mas com a mesma descrição lógica. Para todos os arquivos de dados, por exemplo, a descrição do arquivo é realizada na Análise (ou dicionário de dados, se preferirem), e HAlias, é usado para criar uma cópia lógica desse arquivo.
A partir da versão 17 do WinDev, esta função também está disponível para aplicações Ipad e Iphone.
Exemplo de uso
Pedidos2000 is Data Source
// Cria um alias para o arquivo “Pedidos”
IF HAlias(Pedidos, Pedidos2000) = True THEN
// Agora "Pedidos2000" pode ser usado pelo processo.
// Ele se comporta da mesma maneira que o arquivo "Pedidos" descrito na
// Análise
// Nome do arquivo físico associado: Pedidos2000.
HCreationIfNotFound(Pedidos2000)
END
// Cria um alias para o arquivo “Pedidos”
IF HAlias(Pedidos, Pedidos2000) = True THEN
// Agora "Pedidos2000" pode ser usado pelo processo.
// Ele se comporta da mesma maneira que o arquivo "Pedidos" descrito na
// Análise
// Nome do arquivo físico associado: Pedidos2000.
HCreationIfNotFound(Pedidos2000)
END
Sintaxe
<Result> = HAlias(<Nome Lógico> [, <Nome do Aliás>])- True Se o aliás foi criado,
Windev Internet conexao
Windev Internet conexao
Muitas vezes, antes de enviarmos um comando que faça acesso a Internet, é conveniente verificar se a conexão está ativa, para não exibir uma mensagem "pouco amigável" para o usuário. O código abaixo faz esta verificação:
ResConnection = InternetConnected()
IF ResConnection = True THEN
//Executa a sua rotina
ELSE
Info("Não existe conexão com a Internet. O programa não pode continuar")
END
ResConnection = InternetConnected()
IF ResConnection = True THEN
//Executa a sua rotina
ELSE
Info("Não existe conexão com a Internet. O programa não pode continuar")
END
Windev HttpRequest Consulta Completa
Windev HttpRequest Consulta Completa
Dependendo da consulta a ser executada, pode funcionar corretamente no navegador, mas retornar um resultado errado com a função HTTPRequest da WLanguage. Normalmente isso ocorre devido à uma má codificação da requisição, e o servidor WEB não tem como explorar adequadamente o recurso. Neste caso é necessário codificar adequadamente a consulta com a função URLEncode da WLanguage e em seguida passar a sequência codificada para a função HTTPRequest.
sminhaconsulta is string = "http://..."
//codifica a consulta via URLEncode
//substitui os espaços por %20, por exemplo
sminhaconsulta = URLEncode(sminhaconsulta)
//executa a consulta codificada
HTTPRequest(sminhaconsulta)
Windev Imprimir Ip/Porta
Windev Imprimir Ip/Porta
Muitas vezes precisamos enviar comandos diretamente a uma impressora (exemplo Impressoras PCL) e mais anda para um determinado endereço e porta.
Veja o exemplo abaixo:
Windev Tablea Colunas Cores
Windev Tablea Colunas Cores
Para fazer estes tratamentos, utilizamos os comandos g*.
Exemplo
TABLE_LOG_GRANDE_USUARIO.COL_CEP..Caption = gPen(LightRed) + "CEP"
//Faz com que o título CEP apareça em vermelho.
Para atribuir cores ao conteúdo de uma determinada coluna
// Fonte em azul
TABLE_LOG_GRANDE_USUARIO.COL_CEP..Color = iLightBlue
// Fundo em verde
TABLE_LOG_GRANDE_USUARIO.COL_CEP..BrushColor = iLightGreen
Windev Tabela Celulas
Windev Tabela Celulas
Considere:
VAL_soma_das_vendas
// como sendo o nome da célula
TCD_venda_cliente
// como sendo o nome da tabela dinâmica
COL_NomeCliente
// como sendo o nome do cliente
COL_Data_Ano
COL_Data_Ano
// como sendo o perído
// Claro que você deverá estar manipulando a tabela por células e não por linhas.
No evento DisplayCell desua tabela entre um código semelhante a:
IF TCD_Venda_Cliente.VAL_soma_das_vendas > 200 THEN
TCD_Venda_Cliente.VAL_soma_das_vemdas .. Color = RGB (45, 255, 0)
END
IF TCD_Venda_Cliente.VAL_soma_das_vemdas <100 THEN
TCD_Venda_Cliente.VAL_soma_das_vemdas .. Color = RGB (254, 0, 29)
END
Windev Pagina Httpgetresult
Windev Pagina Httpgetresult
Exemplo
// Retorna o código HTML da página "www.windev.com"
ResStart = HTTPRequest("http://www.windev.com")
IF ResStart = True THEN
Info("O código HTML é: " + HTTPGetResult())
END
ResStart = HTTPRequest("http://www.windev.com")
IF ResStart = True THEN
Info("O código HTML é: " + HTTPGetResult())
END
// Exemplo de processamento de um erro retornado pelo servidor web
url is string
HTTP_Res is string
HTTPError is string
Url = "http://www.amazon.fr/s/ref=nb_ss?__mk_fr_FR=AMAZON&url" + ...
"=search-alias=aps&field-keywords=2746049805"
// Envia uma solicitação para o servidor da Amazon
IF HTTPRequest(Url) THEN
// Solicitação enviada, a url é válida
HTTP_Res = HTTPGetResult()
IF Length(HTTP_Res) = 0 THEN
// Erro do servidor web,
// os detalhes do erro estão no cabeçalho da página
HTTPError = HTTPGetResult(httpHeader)
Error(HTTPError)
END
END
HTTP_Res is string
HTTPError is string
Url = "http://www.amazon.fr/s/ref=nb_ss?__mk_fr_FR=AMAZON&url" + ...
"=search-alias=aps&field-keywords=2746049805"
// Envia uma solicitação para o servidor da Amazon
IF HTTPRequest(Url) THEN
// Solicitação enviada, a url é válida
HTTP_Res = HTTPGetResult()
IF Length(HTTP_Res) = 0 THEN
// Erro do servidor web,
// os detalhes do erro estão no cabeçalho da página
HTTPError = HTTPGetResult(httpHeader)
Error(HTTPError)
END
END
Windev Moblie Celular Sms
Windev Moblie Celular Sms
// Summary : envia uma mensagem SMS e retorna o resultado TRUE/FALSE
// Syntax :
//[ <Résultat> = ] EnviarSMS (<pNúmero>, <pMensagem>)
//
// Paramètres :
// pNúmero : número do telefone celular
// pMensagem : mensagem com até 160 caractertes
// Valeur de retour :
// booléen : // TRUE=sucesso, FALSE=falha no envio
//
PROCEDURE EnviarSMS(pNúmero,pMensagem)
SMS.Number = pNúmero
SMS.Message = pMensagem
IF SMSSend() THEN
RESULT True
ELSE
Error(ErrorInfo(errMessage))
RESULT False
END
// Fonte Lifetech
Windev Moblie Cartao Sd Pasta
Windev Moblie Cartao Sd Pasta
// Summary : retorna o diretório definido no cartão SD
// Syntax :
//[ <Résultat> = ] DiretórioDoCartãoSD()
//
PROCEDURE DiretórioDoCartãoSD()
DirCartãoSD is string
StatusCartão is int = SysStatusStorageCard()
IF StatusCartão = sysCardAvailable THEN
DirCartãoSD = SysDirStorageCard() + ["/"] + "Android Analytics"
IF NOT fDirectoryExist(dirCartãoSD) THEN fMakeDir(dirCartãoSD)
END
RESULT DirCartãoSD
Windev Mobile Protecao Tela
Windev Mobile Protecao Tela
//Desativar Bloqueio de Tela, protecao de tela, hibernar
import android.app.Activity;
import android.view.Window;
import android.view.WindowManager.LayoutParams;
public static void DesativarBloqueioTela(boolean keepScreenOn) {
Activity xa = getCurrentActivity();
Window xw = xa.getWindow();
if (keepScreenOn == true) {
xw.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} else {
xw.clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
Windev Mobile Sqlite
Windev Mobile Sqlite
import android.database.sqlite.*;
import android.content.Context;
import android.util.*;
import android.database.*;
public static String AtivarDesativarIntegridadeSQLite(String sTipo){
String DB_NAME = "O NOME DO SEU ARQUIVO.db";
String alterQuery = "";
SQLiteDatabase db;
try {
db = getContexteApplication().openOrCreateDatabase(DB_NAME, 0, null);
try {
if (sTipo.toLowerCase() == "desativar"){
db.execSQL("PRAGMA synchronous = OFF;");
db.rawQuery("PRAGMA journal_mode = OFF;",null);
}
else{
db.execSQL("PRAGMA synchronous = FULL;");
db.rawQuery("PRAGMA journal_mode = DELETE;",null);
}
db.close();
return "ok";
} catch(SQLException e) {
db.close();
return e.getMessage();
}
} catch (SQLException e) {
return e.getMessage();
}
}
// USANDO NA SUA APLICAÇÃO
IF InAndroidSimulatorMode() = False THEN
sErro is string = AtivarDesativarIntegridadeSQLite("desativar")
IF sErro <> "ok" THEN
Error(sErro)
EndProgram()
END
ELSE
HExecuteSQLQuery(Query,Minhaconexao,hQueryWithoutCorrection,"PRAGMA synchronous = OFF;")
HExecuteSQLQuery(Query,Minhaconexao,hQueryWithoutCorrection,"PRAGMA journal_mode = OFF;")
END
Windev Mobile Rede
Windev Mobile Rede
A função da Wlanguage InternetConnected permite verificar se uma conexão de Internet está ativa para o dispositivo móvel. Esta função é muito útil para testar a conexão com a internet antes de realizar qualquer processo que exija uma conexão com a rede mundial de computadores.
Esta função da Wlanguage realiza um teste de acesso ao servidor de DNS do Google.
Não há nenhuma porta específica a ser aberta. A função simplesmente verifica se é possível realizar um PING no servidor.
Windev Mobile Vpn
Windev Mobile Vpn
Por exemplo, para estabelecer uma conexão remota com um PC
Para abrir uma conexão em um smartphone
O retorno desta função é um inteiro com as seguintes características:
A função NetOpenRemoteAccess permite estabelecer uma conexão remota e especialmente uma conexão VPN.
A função NetCloseRemoteAccess permite fechar a conexão.Por exemplo, para estabelecer uma conexão remota com um PC
// Inicia uma conexão de internet em um PC
// O nome da conexão usa o nome definido na conexão do Painel de controle.
Report is int = NetOpenRemoteAccess("Connection_LiveBox")
IF Report = 0 THEN
... NetCloseRemoteAccess()
ELSE Error("Error durante a conexão", NetMsgError(Report))
END
// O nome da conexão usa o nome definido na conexão do Painel de controle.
Report is int = NetOpenRemoteAccess("Connection_LiveBox")
IF Report = 0 THEN
... NetCloseRemoteAccess()
ELSE Error("Error durante a conexão", NetMsgError(Report))
END
// Abre uma conexão a partir de um Smartphone
sConnectionName is string
nCntReturn is int
// Nome da conexão é dado pelo provedor
sConnectionName = "Bouygues Internet"
// Estabiliza a conexãon
nCntReturn = NetOpenRemoteAccess(sConnectionName)
IF nCntReturn = 0 THEN// Processo requerido
// ...
NetCloseRemoteAccess(sConnectionName)
ELSEError("Erro durante a conexão:", NetMsgError(nCntReturn))
END
sConnectionName is string
nCntReturn is int
// Nome da conexão é dado pelo provedor
sConnectionName = "Bouygues Internet"
// Estabiliza a conexãon
nCntReturn = NetOpenRemoteAccess(sConnectionName)
IF nCntReturn = 0 THEN// Processo requerido
// ...
NetCloseRemoteAccess(sConnectionName)
ELSEError("Erro durante a conexão:", NetMsgError(nCntReturn))
END
- 0 (zero) se a conexão for bem sucedida;
- De outra forma, ocorre um erro que pode ser especificado pela função NetMsgError.
Windevv Moblie Sd Card
Windevv Moblie Sd Card
As aplicações Android permitem armazenar dados de forma “embarcada” em arquivos SQLite ou HyperFileSQL.
Na fase de testes, geralmente utilizamos o emulador do SDL do Android, e é interessante copiar um banco de dados SQLite do PC para o SDCard do emulador.
Para fazer isto, usamos a seguinte metodologia:
sDados is strting = SysDirStorageCard() +["/"]+ "Minhapastadedados"
Se nenhum SDCard aparece no emulador, é possível adicionar usando o programa AVD Manager.exe do SDK do Android.
Ao selecionar ou criar o SDCard no emulador, basta digitar o tamanho desejado para o SDCard e adicionar à propriedade "hardware" a propriedade " SD card support – yes".
Na fase de testes, geralmente utilizamos o emulador do SDL do Android, e é interessante copiar um banco de dados SQLite do PC para o SDCard do emulador.
Para fazer isto, usamos a seguinte metodologia:
- Executamos o programa DDMS.bat que está na pasta tools do SDK do Android.
- A aplicação “Dalvik Debug Monitor” é iniciada.
- Selecione o menu “DEvice...File Explorer”,
- Selecione o locar correspondente ao Sdcard: \mmt\scard\
- Use o botão “+” para criar uma pasta
- Utilize o botão “Push file onto device” para selecionar um banco de dados SQLite do disco do PC (normalmente um arquivo com a extensão .db) e inicar a cópia para o SDCard do emulador.
sDados is strting = SysDirStorageCard() +["/"]+ "Minhapastadedados"
Se nenhum SDCard aparece no emulador, é possível adicionar usando o programa AVD Manager.exe do SDK do Android.
Ao selecionar ou criar o SDCard no emulador, basta digitar o tamanho desejado para o SDCard e adicionar à propriedade "hardware" a propriedade " SD card support – yes".
Webdev Parametros
Webdev Parametros
Recentemente um dos nossos clientes relatou que, ao passar como parâmetro parra um formulário, uma coluna de uma tabela, na chamada do procedimento, no lado do formulário, logo após o Hreset(), o conteúdo do parâmetro era zerado, provavelmente porque, de acordo com a documentação da PCSOFT, este comando inicializa uma ou mais variáveis dos arquivos de dados, com seus valores default. Estes valores default são definidos quando o arquivo de dados é descrito na Modelagem de Dados. O comado Hreset não modifica o registro no arquivo físico (arquivo de dados), ele apenas modifica os dados em memoria. Como o parâmetro está em memória, o Hreset, modifica-o e o seu conteúdo é perdido. Para contornar esse problema, a coluna da tabela deve ser passada entre parêntesis. Desta forma, uma chamada para um form, passando como parâmetro uma coluna da tabela, seria semelhante a:
OPEN(Formulario,parametronormal,(parametro por conteúdo))
Fonte: Suporte PCSoft.
Webdev Json
Webdev Json
A função JSonExecute permite chamar uma URL que retorna um objeto JSON (JavaScript Object Notation). Esta função é executado na seção Browser do editor do Webdev. No entanto se o objeto é uma tabela de elementos, não podemos simplesmente declarar:
MeusContatos is dynamic object
Nesta caso, devemos usar a seguinte declaração:
WebDev Parametros Data
WebDev Parametros Data
Se você tiver um controle em uma janela que seja originado por um campo de data de um arquivo, este será apresentado como uma string ANSI. Desta forma se você tentar passasr este controle para um procedimento que espere uma data, o que ocasionará um erro.
Uma solução é usar o seguinte código:
Minhadata is Date = DocumentDate
INHEAD.PeriodCode = GetPeriodFromDate(Minhadata)
Isto faz com que o procedimento chamado use a data passada diretamente.
PROCEDURE GetPeriodFromDate(lcDate is Date)
MyReturnVal is int = -1
HReadFirst(Finperiods,FinperiodsID)
WHILE NOT HOut(Finperiods)
IF Finperiods.PeriodStart <= lcDate AND Finperiods.PeriodEnd >= lcDate THEN
MyReturnVal = Finperiods.PeriodCode
BREAK
END
HReadNext(Finperiods, FinperiodsID)
END
RESULT MyReturnVal
Uma solução é usar o seguinte código:
Minhadata is Date = DocumentDate
INHEAD.PeriodCode = GetPeriodFromDate(Minhadata)
Isto faz com que o procedimento chamado use a data passada diretamente.
PROCEDURE GetPeriodFromDate(lcDate is Date)
MyReturnVal is int = -1
HReadFirst(Finperiods,FinperiodsID)
WHILE NOT HOut(Finperiods)
IF Finperiods.PeriodStart <= lcDate AND Finperiods.PeriodEnd >= lcDate THEN
MyReturnVal = Finperiods.PeriodCode
BREAK
END
HReadNext(Finperiods, FinperiodsID)
END
RESULT MyReturnVal
Assinar:
Postagens (Atom)