terça-feira, 13 de janeiro de 2015

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
// 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

// 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
// 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





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


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
Para abrir uma conexão em um smartphone
// 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)
ELSE
Error("Erro durante a conexão:", NetMsgError(nCntReturn))
END
O retorno desta função é um inteiro com as seguintes características:
  • 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:

  • 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.
A pasta criada no SDCard do emulador pode ser usadas por Aplicações com um código com o exemplo :
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:
 
pclMeuscontatos is dynamic object = new "Object"
//Execucao
pclMeuscontatos:tabResultat = JSONExecute("URL")
//Percorre a tabela
FOR i = 1  TO Dimension(pclMeuscontatos:tabResultat)
ListAdd(LISTA_elementos,pclMeuscontatos:tabResultat[i]:nome + " " + pclMeuscontatos:tabResultat[i]:caracteristic)
END
 
 

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

WebDev Numeros Strings

WebDev Numeros Strings

O Windev trata todos os controles de tela como strings (inclusive as colunas de uma tabela)
por isso o comando:
Trace(NumToString(COL_HstInvHdrSysId,"012d"))
não funcionará satisfatoriamente. Nenhum erro será apresentado, mas também... nada acontecerá, isto porque isto não é um número. Então se COL_HstInvHdrSysId contém 123456 o resultado será "123456" .
Ao invés diso podemos escrever um código como:
nHstInvHdrSysId is int = COL_HstInvHdrSysId
Trace(NumToString(nHstInvHdrSysId,"012d"))
Agora o resultado será:
000000123456
Isto resolve alguns problemas com a formatação de valores em tabelas.

Webdev Enter por Tab

Webdev Enter por Tab

//Nas propriedades da página em Advanced:
<script language="javascript" type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function(e) {
 $('input').keydown( function(e) {
        var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
        if(key == 13) {
            e.preventDefault();
            var inputs = $(this).closest('form').find(':input:visible');
            inputs.eq( inputs.index(this)+ 1 ).focus();
        }
 
 

Teste

Teste
teste