D2010 e Data Snap - Por Bruno Lichot
Sobre o D2010:
Vale apena ficar antenado, Bruno Lichot esta publicando uma série de artigos sobre DataSnap 2010 na revista Acitve Delphi.
O exemplo publicado nesta edição pode ser baixado aqui!
Estamos estudando e o resultado disso postamos aqui. Sinceramente desejamos que o conteúdo aqui semeado possa ser útil para muitas pessoas.
Seja bem-vindo e fique à vontade para contribuir da forma que puder e quiser.
Bola pra frente ... :)
Sobre o D2010:
Vale apena ficar antenado, Bruno Lichot esta publicando uma série de artigos sobre DataSnap 2010 na revista Acitve Delphi.
O exemplo publicado nesta edição pode ser baixado aqui!
unit IWUnit1;
{PUBDIST}
interface
uses
IWAppForm, IWApplication, IWTypes, IWCompButton, Classes, Controls,
IWControl, IWCompEdit, IWCompLabel;
type
TformMain = class(TIWAppForm)
IWEdit1: TIWEdit;
IWButton1: TIWButton;
IWLabel1: TIWLabel;
EdtURLZN: TIWEdit;
IWLabel2: TIWLabel;
procedure IWAppFormCreate(Sender: TObject);
procedure IWButton1Click(Sender: TObject);
public
end;
implementation
{$R *.dfm}
uses
ServerController, SysUtils, IWForm;
procedure TformMain.IWAppFormCreate(Sender: TObject);
begin
IWEdit1.Text := '';
IWButton1.Caption := 'Enviar - ZN';
IWLabel1.Caption := 'Digite o valor que será enviado';
IWLabel2.Caption := 'Digite a URL da aplicação ISAPI que será chamada' +
'e exibirá o valor digitado acima.';
EdtURLZN.Text := '';
end;
procedure TformMain.IWButton1Click(Sender: TObject);
const
AJSComando = 'window.open("%s?estacaoZnValor=%s")';
begin
AddToInitProc(Format(AJSComando, [EdtURLZN.Text, IWEdit1.Text]));
end;
end.
library AppEstacaoZNSubmit;
uses
IWInitISAPI,
ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase},
IWUnit1 in 'IWUnit1.pas' {formMain: TIWForm1};
{$R *.RES}
begin
IWRun(TFormMain, TIWServerController);
end.
unit IWUnit1;
{PUBDIST}
interface
uses
IWAppForm, IWApplication, IWTypes, Classes, Controls, IWControl,
IWCompLabel, IWCompListbox, IWCompMemo;
type
TformMain = class(TIWAppForm)
IWLabel1: TIWLabel;
procedure IWAppFormRender(Sender: TObject);
public
end;
implementation
{$R *.dfm}
uses
ServerController, IWForm, SysUtils;
procedure TformMain.IWAppFormRender(Sender: TObject);
const
ZnMsg = 'www.estacaozn.blogspot.com O Valor recebido de "%s" é: %s';
begin
IWLabel1.Caption := Format(ZnMsg,
[WebApplication.Request.RemoteAddr,
WebApplication.Request.QueryFields.Values['estacaoZnValor']]);
IWLabel1.Font.Size := 20;
end;
library AppRequestQueryFieldsEstacaoZN;
uses
IWInitISAPI,
ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase},
IWUnit1 in 'IWUnit1.pas' {formMain: TIWForm1};
{$R *.RES}
begin
IWRun(TFormMain, TIWServerController);
end.
function Initialize() {
InitSubmitter();
StaticInit();
if (document.body.leftMargin < 0 && document.body.topMargin < 0) {
document.body.leftMargin = 0;
document.body.topMargin = 0;
}
InitRects(614, 451);
InitIWCLObjects();
window.open("http://localhost/requesestacaozn/?estacaoZnValor=Landjah Estação ZN")
}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses jclStrings, Math;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
ZnDt, ZnNum: String;
ADay, AMonth, AYear: Word;
begin
DecodeDate(Date, AYear, AMonth, ADay);
ZnDt := Format('%s%s%s', [ StrPadLeft(IntToStr(ADay), 2, '0'),
StrPadLeft(IntToStr(AMonth), 2, '0'), IntToStr(AYear)]);
Self.Canvas.TextOut(12, 32, ZnDt);
Randomize;
ZnNum := IntToStr(RandomRange(0, 50000));
ZnNum := StrPadRight(ZnNum, 6, 'X');
Self.Canvas.TextOut(12, 52, ZnNum);
end;
ZnDt := Format('%s%s%s', [ StrPadLeft(IntToStr(ADay), 2, '0'),
StrPadLeft(IntToStr(AMonth), 2, '0'), IntToStr(AYear)]);
ZnDt := Format('%.2d%.2d%.4d', [ADay, AMonth, AYear]);

select * from Customers
where CompanyName like :CompanyName


uses
Math, StrUtils;
procedure TWebModule1.WebModule1ZnConsClientesAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
const
ZnTag = '%s:%s';
var
StrStatment: String;
i, CodRetorno: Integer;
begin
with ClientDataSet1 do
begin
Params[0].AsString := '%' + Request.QueryFields.Values['znNomeCli']+ '%';
try
Open;
CodRetorno := IfThen(IsEmpty, -1, 1);
StrStatment := StrStatment +
Format(ZnTag, ['codretornoZn',
IntToStr(CodRetorno)]);
if CodRetorno = 0 then Exit;
for i := 0 to Pred(FieldCount) do
begin
StrStatment := StrStatment + ','+
Format(ZnTag, [LowerCase(ClientDataSet1.Fields[i].FieldName),
IfThen((ClientDataSet1.Fields[i].AsString = ''), QuotedStr('-'),
QuotedStr(ClientDataSet1.Fields[i].AsString))]);
end;
finally
Close;
Response.Content := Format('{%s}',[StrStatment]);
end;
end;
end;

{codretornoZn:1,customerid:'CACTU',companyname:'Cactus Comidas para llevar',contactname:'Patricio Simpson',
contacttitle:'Sales Agent',address:'Cerrito 333',city:'Buenos Aires',region:'-',
postalcode:'1010',country:'Argentina',phone:'(1) 135-5555',fax:'(1) 135-4892'}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.AreaTexto {
font-family: "Comic Sans MS", "Courier New", Georgia;
width: 420px;
height:540px;
background-color:#FFFF38;
}
-->
</style>
<script type="text/javascript">
var ZnXmlAjaxHttpObj;
function ZnGetClienteWsAjx(ZnMyName) {
alert('estou na função!');
if (typeof XMLHttpRequest != "undefined"){ZnXmlAjaxHttpObj = new XMLHttpRequest();}
else{
ZnXmlAjaxHttpObj = new ActiveXObject('Msxml2.XMLHTTP');
if (!ZnXmlAjaxHttpObj){ZnXmlAjaxHttpObj = new ActiveXObject('Microsoft.XMLHTTP');}
}
alert(ZnMyName.value);
var ZnSpan = document.getElementById("IWLABEL1");
ZnSpan.innerHTML = "Estaçaõ Zn: Buscando dados do Cliente pelo nome fornecido: " + ZnMyName.value + " ....";
var url = "http://localhost/ajaxjsonzn/?znNomeCli="+ ZnMyName.value;
ZnXmlAjaxHttpObj.open("GET", url, true);
ZnXmlAjaxHttpObj.onreadystatechange = ZnDynProcessaReqBuscaCliente;
ZnXmlAjaxHttpObj.send(null);
}
function ZnDynProcessaReqBuscaCliente() {
var ZnSpan2 = document.getElementById("IWLABEL2");
var ZnElement = document.getElementById("IWEDIT1");
ZnSpan2.innerHTML = 'Processando ..................';
if (ZnSpan2.innerHTML.indexOf("buscando dados",0) >= 0){ZnSpan2.innerHTML = "Processando ...";}
else {ZnSpan2.innerHTML = "<b>buscando dados do Cliente: </b>" + ZnElement.value + " ....";}
if (ZnXmlAjaxHttpObj.readyState == 4) {
if (ZnXmlAjaxHttpObj.status == 200) {
processJsonEstacaoZn(ZnXmlAjaxHttpObj.responseText);
}
}
else return false;
}
function processJsonEstacaoZn(obj1) {
var ObjLandjah;
eval('ObjLandjah = ' + obj1);
var Aux =
" <br /> customerid: "+ ObjLandjah.customerid +
" <br /> contactname: "+ ObjLandjah.contactname +
" <br /> contacttitle: "+ ObjLandjah.contacttitle +
" <br /> companyname: "+ ObjLandjah.companyname +
" <br /> country: "+ ObjLandjah.country +
" <br /> CEP/postal code: " + ObjLandjah.postalcode +
"<br /> Região: " + ObjLandjah.region +
"<br /> Cidade: " + ObjLandjah.city +
"<br />Logradouro: " + ObjLandjah.address +
" <br /> fax: " + ObjLandjah.fax +
" <br /> phone: "+ ObjLandjah.phone;
alert(Aux);
document.getElementById("cj").innerHTML += '- <b>Ninguém vai subir #@#@%#@%#%@ ... vai ficar todo mundo quietinho ae.</b>';
document.getElementById("cj").innerHTML += Aux;
document.getElementById("IWMEMO1").innerHTML += ' \n <b>100% Quatorze? </b>';
document.getElementById("IWMEMO1").innerHTML += ' \n ************************************';
//****************************************************
var insertData = "<b> Resultado Consulta www.estacaozn.blogspot.com:</b>";
try {
//alert('Cod Retorno: ' + ObjLandjah.codretornoZn);
switch (ObjLandjah.codretornoZn * 1) {
case 1:
document.getElementById("IWMEMO1").innerHTML += ' \n - Cavera meu Capitão. ';
document.getElementById("IWMEMO1").innerHTML += ' \n ************************************';
insertData += " <br /> customerid: "+ ObjLandjah.customerid +
" <br /> contactname: "+ ObjLandjah.contactname +
" <br /> contacttitle: "+ ObjLandjah.contacttitle +
" <br /> companyname: "+ ObjLandjah.companyname +
" <br /> country: "+ ObjLandjah.country +
" <br /> CEP/postal code: " + ObjLandjah.postalcode +
"<br /> Região: " + ObjLandjah.region +
"<br /> Cidade: " + ObjLandjah.city +
"<br />Logradouro: " + ObjLandjah.address +
" <br /> fax: " + ObjLandjah.fax +
" <br /> phone: " + ObjLandjah.phone;
//alert("Case, estou aqui");
// Abaixo, veja como atribuir valor do JavaScript Object Notation ao IWMemo e aos IWEdits
document.getElementById("IWMEMO1").innerHTML += ' \n ************************************';
document.getElementById("CEP").value = ObjLandjah.postalcode;
document.getElementById("CEP").disabled = true;
document.getElementById("IWMEMO1").innerHTML += " \n CEP: " + ObjLandjah.postalcode;
document.getElementById("CONTACTNAME").value = ObjLandjah.contactname;
document.getElementById("CONTACTNAME").disabled = true;
document.getElementById("IWMEMO1").innerHTML += " \n Contato: " + ObjLandjah.contactname;
document.getElementById("CONTACTTITLE").value = ObjLandjah.contacttitle;
document.getElementById("CONTACTTITLE").disabled = true;
document.getElementById("IWMEMO1").innerHTML += " \n Contato: " + ObjLandjah.contacttitle;
document.getElementById("CIDADE").value = ObjLandjah.city;
document.getElementById("CIDADE").disabled = true;
document.getElementById("IWMEMO1").innerHTML += " \n Cidade: " + ObjLandjah.city;
document.getElementById("BAIRRO").value = "Bla!";
document.getElementById("BAIRRO").disabled = true;
document.getElementById("FAX").value = ObjLandjah.fax;
document.getElementById("FAX").disabled = true;
document.getElementById("IWMEMO1").innerHTML += "\n Fax: " + ObjLandjah.fax;
document.getElementById("LOGRADOURO").value = ObjLandjah.address;
document.getElementById("LOGRADOURO").disabled = true;
document.getElementById("IWMEMO1").innerHTML += "\n Logradouro:" + ObjLandjah.address;
document.getElementById("COMPANYNAME").value = ObjLandjah.companyname;
document.getElementById("COMPANYNAME").disabled = true;
document.getElementById("IWMEMO1").innerHTML += "\n Nome da Empresa:" + ObjLandjah.companyname;
document.getElementById("COUNTRY").value = ObjLandjah.country;
document.getElementById("COUNTRY").disabled = true;
document.getElementById("IWMEMO1").innerHTML += "\n Pais:" + ObjLandjah.country;
document.getElementById("UF").value = ObjLandjah.region;
document.getElementById("UF").disabled = true;
document.getElementById("IWMEMO1").innerHTML += " \n Região: " + ObjLandjah.region;
document.getElementById("PHONE").value = ObjLandjah.phone;
document.getElementById("PHONE").disabled = true;
document.getElementById("IWMEMO1").innerHTML += " \n Tel: " + ObjLandjah.phone;
document.getElementById("IWMEMO1").innerHTML += '\n ************************************';
break;
case -1: insertData += "Cliente não encontrado!"; break;
case -2: insertData += "Valor digitado inválido!"; break;
case -3: insertData += "Ta com nojinho 02?."; break;
case -4: insertData += "AH ESSA ALTURA DO CAMPEONATO VC TA SEM AH BANDOLEIRA ??!"; break;
default: "PEDE PRA SAIR 01. Pede pra sair.";
}
}
catch(Error) {
insertData = "<br> <font color=#FF0000> eRrO. TIRA ESSA ROUPA PRETA QUE VC NÃO É CAVEIRA. </font> As Landjhas de mirandjas!!!"
}
document.getElementById("IWLABEL2").innerHTML += insertData;
document.getElementById("IWLABEL1").innerHTML += " <br /><b> Os senhores estão bem? Os senhores estão feridos? Algum dos senhores estão baleados? " +
" Então, no próximo post vcs vão aprender a carregar corpos!!! </b>"
document.getElementById("IWMEMO1").innerHTML += ' \n ';
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<div id="PosControles" style="position: absolute; top: 32px; left: 12px; width: 887px; height: 92px; background-color: #3399CC;
font-size:16px; font-weight:400" align="justify"><br />Digite o Nome do Cliente: {%IWEdit1%} | {%IWButton1%}
<br>
{%Logradouro%}{%Bairro%}{%Cidade%} {%UF%}{%CEP%} {%CompanyName%}
{%ContactName%}
{%ContactTitle%}
{%Phone%}
{%Fax%}
{%Country%}
{%IWLink1%} <a href="http://localhost/estacaozncliente">Reload Page</a></div>
<div id="PosSpan" style="position: absolute; top: 128px; left: 12px; width: 440px; height: 580px; background-color: #99FF99;">
{%IWLabel1%} {%IWLabel2%}
<span id="cj">
</span>
</div>
<div id="PosMemo" style="position: absolute; top: 128px; left: 458px; width: 440px; height: 580px; background-color: #99FF99;"
align="center"><p>
{%IWMEMO1%}
testando!!
</div>
</form>
</body>
</html>

IWTemplateProcessorHTML1: TIWTemplateProcessorHTML;
IWLabel1: TIWLabel;
IWEdit1: TIWEdit;
IWButton1: TIWButton;
IWMemo1: TIWMemo;
CEP: TIWEdit;
UF: TIWEdit;
Bairro: TIWEdit;
Logradouro: TIWEdit;
Cidade: TIWEdit;
IWLabel2: TIWLabel;
CompanyName: TIWEdit;
ContactName: TIWEdit;
ContactTitle: TIWEdit;
Phone: TIWEdit;
Fax: TIWEdit;
Country: TIWEdit;
procedure TformMain.IWAppFormCreate(Sender: TObject);
begin
Self.TemplateProcessor := IWTemplateProcessorHTML1;
IWTemplateProcessorHTML1.Templates.default := 'ZnPageAjaxJsonIntraweb.html';
IWLabel1.Caption := ' ';
IWMemo1.Font.Enabled := False;
IWMemo1.Font.CSSStyle := 'AreaTexto';
CEP.Width := 80;
UF.Width := 40;
Cidade.Width := 120;
Logradouro.Width := 180;
Bairro.Width := 90;
IWButton1.ExtraTagParams.Add('onClick=ZnGetCLienteWsAjax(IWEDIT1)');
IWMemo1.Lines.Add(' ');
IWEdit1.Text := 'Cactus Comidas para llevar';
end;

<head>
<script language="JavaScript" src="ZnJavaScriptFile.js"></script>
</head>


unit IWUnit1;
{PUBDIST}
interface
uses
IWAppForm, IWApplication, IWTypes, IWCompMemo, IWCompButton, IWCompEdit,
Controls, IWControl, IWCompLabel, Classes, IWLayoutMgr,
IWTemplateProcessorHTML, IWHTMLControls;
type
TformMain = class(TIWAppForm)
IWTemplateProcessorHTML1: TIWTemplateProcessorHTML;
IWLabel1: TIWLabel;
IWEdit1: TIWEdit;
IWButton1: TIWButton;
IWMemo1: TIWMemo;
CEP: TIWEdit;
UF: TIWEdit;
Bairro: TIWEdit;
Logradouro: TIWEdit;
Cidade: TIWEdit;
IWLabel2: TIWLabel;
CompanyName: TIWEdit;
ContactName: TIWEdit;
ContactTitle: TIWEdit;
Phone: TIWEdit;
Fax: TIWEdit;
Country: TIWEdit;
procedure IWAppFormCreate(Sender: TObject);
public
end;
implementation
{$R *.dfm}
uses
ServerController, IWForm;
//ajaxconcorretor
procedure TformMain.IWAppFormCreate(Sender: TObject);
begin
Self.TemplateProcessor := IWTemplateProcessorHTML1;
IWLabel1.Caption := ' ';
IWMemo1.Font.Enabled := False;
IWMemo1.Font.CSSStyle := 'AreaTexto';
CEP.Width := 80;
UF.Width := 40;
Cidade.Width := 120;
Logradouro.Width := 180;
Bairro.Width := 90;
IWButton1.ExtraTagParams.Add('onClick=return ZnGetClienteWsAjx(IWEDIT1);');
IWMemo1.RawText := True;
IWMemo1.Lines.Add(' ');
IWEdit1.Text := 'Cactus Comidas para llevar';
end;
end.
unit Unit1;
interface
uses
SysUtils, Classes, HTTPApp, DBClient, Provider, DB, ADODB;
type
TWebModule1 = class(TWebModule)
ADOConnection: TADOConnection;
ADODataSet1: TADODataSet;
DataSetProvider1: TDataSetProvider;
ClientDataSet1: TClientDataSet;
ClientDataSet1CustomerID: TWideStringField;
ClientDataSet1CompanyName: TWideStringField;
ClientDataSet1ContactName: TWideStringField;
ClientDataSet1ContactTitle: TWideStringField;
ClientDataSet1Address: TWideStringField;
ClientDataSet1City: TWideStringField;
ClientDataSet1Region: TWideStringField;
ClientDataSet1PostalCode: TWideStringField;
ClientDataSet1Country: TWideStringField;
ClientDataSet1Phone: TWideStringField;
ClientDataSet1Fax: TWideStringField;
procedure WebModule1ZnConsClientesAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
WebModule1: TWebModule1;
implementation
{$R *.dfm}
uses
Math, StrUtils;
procedure TWebModule1.WebModule1ZnConsClientesAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
const
ZnTag = '%s:%s';
var
StrStatment: String;
i, CodRetorno: Integer;
begin
with ClientDataSet1 do
begin
Params[0].AsString := '%' + Request.QueryFields.Values['znNomeCli']+ '%';
try
Open;
CodRetorno := IfThen(IsEmpty, -1, 1);
StrStatment := StrStatment +
Format(ZnTag, ['codretornoZn',
IntToStr(CodRetorno)]);
if CodRetorno = 0 then Exit;
for i := 0 to Pred(FieldCount) do
begin
StrStatment := StrStatment + ','+
Format(ZnTag, [LowerCase(ClientDataSet1.Fields[i].FieldName),
IfThen((ClientDataSet1.Fields[i].AsString = ''), QuotedStr('-'),
QuotedStr(ClientDataSet1.Fields[i].AsString))]);
end;
finally
Close;
Response.Content := Format('{%s}',[StrStatment]);
end;
end;
end;
end.
implementation
uses IWBaseForm;
{$R *.dfm}
const
AQuebraLinhaJsZN = #13;
AFncCriticaCIC =
' function CriticaCIC(ZnNumCic, ZnCnpjBool, ZnCpfBool){ ' + AQuebraLinhaJsZN +
' alert("www.estacaozn.blogspot.com verifica CPF/CNPJ");' + AQuebraLinhaJsZN +
' var CicValidoZn = false; ' + AQuebraLinhaJsZN +
' ' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && !ZnCpfBool) { ' + AQuebraLinhaJsZN +
' if(!ZnVerificaCnpj(ZnNumCic)){ ' + AQuebraLinhaJsZN +
' alert("CNPJ Inválido"); ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' else if (!ZnCnpjBool && ZnCpfBool){ ' + AQuebraLinhaJsZN +
' if (!ZnVerificaCPF(ZnNumCic)){ ' + AQuebraLinhaJsZN +
' alert("CPF inválido"); ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' ;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' else { ' + AQuebraLinhaJsZN +
' CicValidoZn = ZnVerificaCnpj(ZnNumCic); ' + AQuebraLinhaJsZN +
' if(CicValidoZn){ ' + AQuebraLinhaJsZN +
' return true;} ' + AQuebraLinhaJsZN +
' else{ ' + AQuebraLinhaJsZN +
' CicValidoZn = ZnVerificaCPF(ZnNumCic); ' + AQuebraLinhaJsZN +
' if(!CicValidoZn){ ' + AQuebraLinhaJsZN +
' alert("CIC Inválido") ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' var ZnMsg = ""; ' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CPJ ou CNPJ"; }' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && !ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CNPJ"; }' + AQuebraLinhaJsZN +
' if (!ZnCnpjBool && ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CPF"; }' + AQuebraLinhaJsZN +
' alert("Valor Validado Ok, " +ZnMsg + ": " + ZnNumCic.value);' + AQuebraLinhaJsZN +
' return true;} ' + AQuebraLinhaJsZN;
AFncCriticaCPF =
' function ZnVerificaCPF (ZnCpfObj){ ' + AQuebraLinhaJsZN +
' var gmSort = new Array(ZnCpfObj.value.length); ' + AQuebraLinhaJsZN +
' for (i=0; i< ZnCpfObj.value.length; i++){gmSort[i] = ZnCpfObj.value.charAt(i);} ' + AQuebraLinhaJsZN +
' gmSort.sort(); ' + AQuebraLinhaJsZN +
' if (gmSort[0] == gmSort[gmSort.length -1]){ ' + AQuebraLinhaJsZN +
' alert("www.estacaozn.blogspot.com: Os números são iguais: " + ZnCpfObj.value); ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' ZnAuxCal = 0; ' + AQuebraLinhaJsZN +
' for (ZnCont = 0; ZnCont < 9; ZnCont ++) ' + AQuebraLinhaJsZN +
' ZnAuxCal += parseInt(ZnCpfObj.value.charAt(ZnCont)) * (10 - ZnCont); ' + AQuebraLinhaJsZN +
' DgVZn = 11 - (ZnAuxCal % 11); ' + AQuebraLinhaJsZN +
' if (DgVZn == 10 || DgVZn == 11) ' + AQuebraLinhaJsZN +
' DgVZn = 0; ' + AQuebraLinhaJsZN +
' if (DgVZn != parseInt(ZnCpfObj.value.charAt(9))) ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' ZnAuxCal = 0; ' + AQuebraLinhaJsZN +
' for (ZnCont = 0; ZnCont < 10; ZnCont ++) ' + AQuebraLinhaJsZN +
' ZnAuxCal += parseInt(ZnCpfObj.value.charAt(ZnCont)) * (11 - ZnCont); ' + AQuebraLinhaJsZN +
' DgVZn = 11 - (ZnAuxCal % 11); ' + AQuebraLinhaJsZN +
' if (DgVZn == 10 || DgVZn == 11) ' + AQuebraLinhaJsZN +
' DgVZn = 0; ' + AQuebraLinhaJsZN +
' if (DgVZn != parseInt(ZnCpfObj.value.charAt(10))){ ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' //alert("O CPF INFORMADO É VÁLIDO."); ' + AQuebraLinhaJsZN +
' return true; ' + AQuebraLinhaJsZN +
'} ' + AQuebraLinhaJsZN;
AFncCriticaCNPJ =
' function ZnVerificaCnpj(ZNObjInput){' + AQuebraLinhaJsZN +
' var ZnDigitos, ZnDg, ZnSum, ZnCount;' + AQuebraLinhaJsZN +
' var ZnResult, ZnPos, tamanho;' + AQuebraLinhaJsZN +
' var ZnAuxCNPJ = ZNObjInput.value.replace(/\D+/g, "");' + AQuebraLinhaJsZN +
'' + AQuebraLinhaJsZN +
' if (ZnAuxCNPJ.length != 14){' + AQuebraLinhaJsZN +
' ZNObjInput.focus();' + AQuebraLinhaJsZN +
' return false;' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' var gmSort = new Array(ZNObjInput.value.length); ' + AQuebraLinhaJsZN +
' for (i=0; i< ZNObjInput.value.length; i++){gmSort[i] = ZNObjInput.value.charAt(i);} ' + AQuebraLinhaJsZN +
' gmSort.sort(); ' + AQuebraLinhaJsZN +
' if (gmSort[0] == gmSort[gmSort.length -1]){ ' + AQuebraLinhaJsZN +
' alert("www.estacaozn.blogspot.com: Os números são iguais: " + ZNObjInput.value); ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
'' + AQuebraLinhaJsZN +
' ZnAuxTamanho = ZnAuxCNPJ.length - 2' + AQuebraLinhaJsZN +
' ZnDigitos = ZnAuxCNPJ.substring(0,ZnAuxTamanho);' + AQuebraLinhaJsZN +
' ZnDg = ZnAuxCNPJ.substring(ZnAuxTamanho);' + AQuebraLinhaJsZN +
' ZnSum = 0;' + AQuebraLinhaJsZN +
' ZnPos = ZnAuxTamanho - 7;' + AQuebraLinhaJsZN +
' for (ZnCount = ZnAuxTamanho; ZnCount >= 1; ZnCount--){' + AQuebraLinhaJsZN +
' ZnSum += ZnDigitos.charAt(ZnAuxTamanho - ZnCount) * ZnPos--;' + AQuebraLinhaJsZN +
' if (ZnPos < 2)' + AQuebraLinhaJsZN +
' ZnPos = 9;' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' ZnResult = ZnSum % 11 < 2 ? 0 : 11 - ZnSum % 11;' + AQuebraLinhaJsZN +
' if (ZnResult != ZnDg.charAt(0)){' + AQuebraLinhaJsZN +
' ZNObjInput.focus();' + AQuebraLinhaJsZN +
' return false;' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
'' + AQuebraLinhaJsZN +
' ZnAuxTamanho = ZnAuxTamanho + 1;' + AQuebraLinhaJsZN +
' ZnDigitos = ZnAuxCNPJ.substring(0,ZnAuxTamanho);' + AQuebraLinhaJsZN +
' ZnSum = 0;' + AQuebraLinhaJsZN +
' ZnPos = ZnAuxTamanho - 7;' + AQuebraLinhaJsZN +
' for (ZnCount = ZnAuxTamanho; ZnCount >= 1; ZnCount--){' + AQuebraLinhaJsZN +
' ZnSum += ZnDigitos.charAt(ZnAuxTamanho - ZnCount) * ZnPos--;' + AQuebraLinhaJsZN +
' if (ZnPos < 2)' + AQuebraLinhaJsZN +
' ZnPos = 9;}' + AQuebraLinhaJsZN +
'' + AQuebraLinhaJsZN +
' ZnResult = ZnSum % 11 < 2 ? 0 : 11 - ZnSum % 11;' + AQuebraLinhaJsZN +
' if (ZnResult != ZnDg.charAt(1)){' + AQuebraLinhaJsZN +
' ZNObjInput.focus();' + AQuebraLinhaJsZN +
' return false;}' + AQuebraLinhaJsZN +
' else {' + AQuebraLinhaJsZN +
' return true;' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN;
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
(* Atribuindo a propriedade "JavaScript" do IWForm1 as
funções que serão processadas pelo browser*)
Self.JavaScript.Add('');
Self.JavaScript.Add(AFncCriticaCPF);
Self.JavaScript.Add('');
Self.JavaScript.Add(AFncCriticaCNPJ);
Self.JavaScript.Add('');
Self.JavaScript.Add(AFncCriticaCIC);
Self.JavaScript.Add('');
// O IWButton1 vai validar as duas opções CPF e CNPJ
IWButton1.Caption := 'Valida CPF e CNPJ';
IWButton1.Width := 200;
IWButton1.ExtraTagParams.Add(
Format('onClick=CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'true', 'true']));
//O IWButton2 vai validar apenas CPF
IWButton2.Caption := 'Valida CPF';
IWButton2.Width := 200;
IWButton2.ExtraTagParams.Add(
Format('onClick=CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'false', 'true']));
//O IWButton3 vai validar apenas CNPJ
IWButton3.Caption := 'Valida CNPJ';
IWButton3.Width := 200;
IWButton3.ExtraTagParams.Add(
Format('onClick=CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'true', 'false']));
end;
AFncValorRequerido =
' function ValorRequerido(){ ' + AQuebraLinhaJsZN +
' var ObjInput = document.getElementById("%s); ' + AQuebraLinhaJsZN +
' var AFriendlyName = "%s"; ' + AQuebraLinhaJsZN +
' if (ObjInput.value == ""){ ' + AQuebraLinhaJsZN +
' alert("É obrigatório o valor para o campo: " + AFriendlyName); ' + AQuebraLinhaJsZN +
' ObjInput.style.backgroundColor = "#FD88AA"; ' + AQuebraLinhaJsZN +
' ObjInput.focus(); ' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' else { ' + AQuebraLinhaJsZN +
' ObjInput.style.backgroundColor = "#FFFFFF"; ' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN;
AFncCriticaCIC2 =
' function CriticaCIC2(ZnCnpjBool, ZnCpfBool){ ' + AQuebraLinhaJsZN +
' var ZnNumCic = document.getElementById("%s); ' + AQuebraLinhaJsZN +
' alert("www.estacaozn.blogspot.com verifica CPF/CNPJ");' + AQuebraLinhaJsZN +
' var CicValidoZn = false; ' + AQuebraLinhaJsZN +
' ' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && !ZnCpfBool) { ' + AQuebraLinhaJsZN +
' if(!ZnVerificaCnpj(ZnNumCic)){ ' + AQuebraLinhaJsZN +
' alert("CNPJ Inválido"); ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' else if (!ZnCnpjBool && ZnCpfBool){ ' + AQuebraLinhaJsZN +
' if (!ZnVerificaCPF(ZnNumCic)){ ' + AQuebraLinhaJsZN +
' alert("CPF inválido"); ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' ;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' else { ' + AQuebraLinhaJsZN +
' CicValidoZn = ZnVerificaCnpj(ZnNumCic); ' + AQuebraLinhaJsZN +
' if(CicValidoZn){ ' + AQuebraLinhaJsZN +
' return true;} ' + AQuebraLinhaJsZN +
' else{ ' + AQuebraLinhaJsZN +
' CicValidoZn = ZnVerificaCPF(ZnNumCic); ' + AQuebraLinhaJsZN +
' if(!CicValidoZn){ ' + AQuebraLinhaJsZN +
' alert("CIC Inválido") ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' var ZnMsg = ""; ' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CPJ ou CNPJ"; }' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && !ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CNPJ"; }' + AQuebraLinhaJsZN +
' if (!ZnCnpjBool && ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CPF"; }' + AQuebraLinhaJsZN +
' alert("Valor Validado Ok, " +ZnMsg + ": " + ZnNumCic.value);' + AQuebraLinhaJsZN +
' return true;} ' + AQuebraLinhaJsZN;
(* segunda parte do artigo:
OnClick do IWButton chamar mais de uma função Javascript *)
IWEdit1.FriendlyName := 'CIC: "CNPJ" ou "CPF"';
Self.JavaScript.Add('//**************************************');
Self.JavaScript.Add('//segunda parte do artigo:' + #13 +
'// OnClick do IWButton chamar mais de uma função Javascript');
Self.JavaScript.Add(Format(AFncCriticaCIC2, [UpperCase(IWEdit1.Name)]));
Self.JavaScript.Add('');
Self.JavaScript.Add('');
Self.JavaScript.Add(Format(AFncValorRequerido, [UpperCase(IWEdit1.Name),
IWEdit1.FriendlyName]));
Self.JavaScript.Add('//*******www.estacaozn.blogspot.com**********');
IWButton4.Caption := 'Valor Obrigatório & Valida CIC';
IWButton4.Width := 360;
IWButton4.ScriptEvents.Add('onClick').EventCode.Add(
'ValorRequerido() && CriticaCIC(true, true)');
procedure TIWForm1.IWButton4Click(Sender: TObject);
begin
IWLabel1.Font.Size := 16;
IWLabel1.Caption := Format('Valor digitado válido: %s', [IWEdit1.Text]); ;
end;
var IWLABEL1IWCL = null;
var IWBUTTON1IWCL = null;
var IWEDIT1IWCL = null;
var IWBUTTON2IWCL = null;
var IWBUTTON3IWCL = null;
var IWBUTTON4IWCL = null;
function IWBUTTON4_onclick(event) {
return ValorRequerido() && CriticaCIC2(true, true)
}
function IWBUTTON4_onclick0(event) {
return SubmitClickConfirm('IWBUTTON4','', true, '');
}
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
Self.JavaScript.Add('');
Self.JavaScript.Add(AFncCriticaCPF);
Self.JavaScript.Add('');
Self.JavaScript.Add(AFncCriticaCNPJ);
Self.JavaScript.Add('');
Self.JavaScript.Add(AFncCriticaCIC);
Self.JavaScript.Add('');
// O IWButton1 vai validar as duas opções CPF e CNPJ
IWButton1.Caption := 'Valida CPF e CNPJ';
IWButton1.Width := 200;
IWButton1.ExtraTagParams.Add(
Format('onClick=CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'true', 'true']));
//O IWButton2 vai validar apenas CPF
IWButton2.Caption := 'Valida CPF';
IWButton2.Width := 200;
IWButton2.ExtraTagParams.Add(
Format('onClick=CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'false', 'true']));
//O IWButton3 vai validar apenas CNPJ
IWButton3.Caption := 'Valida CNPJ';
IWButton3.Width := 200;
IWButton3.ExtraTagParams.Add(
Format('onClick=CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'true', 'false']));
(* segunda parte do artigo:
OnClick do IWButton chamar mais de uma função Javascript *)
IWEdit1.FriendlyName := 'CIC: CNPJ ou CPF';
Self.JavaScript.Add('//**************************************');
Self.JavaScript.Add('//segunda parte do artigo:' + #13 +
'// OnClick do IWButton chamar mais de uma função Javascript');
Self.JavaScript.Add(Format(AFncCriticaCIC2, [UpperCase(IWEdit1.Name)]));
Self.JavaScript.Add('');
Self.JavaScript.Add('');
Self.JavaScript.Add(Format(AFncValorRequerido, [UpperCase(IWEdit1.Name),
IWEdit1.FriendlyName]));
Self.JavaScript.Add('//*******www.estacaozn.blogspot.com**********');
IWButton4.Caption := 'Valor Obrigatório & Valida CIC';
IWButton4.Width := 360;
IWButton4.ScriptEvents.Add('onClick').EventCode.Add(
'return ValorRequerido() && CriticaCIC2(true, true)');
(* testando chamar duas funções Javascript na propriedade ExtraTagParams *)
IWButton5.ExtraTagParams.Add(
Format('onClick=return ValorRequerido() && CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'true', 'true']));
end;
IWButton5.ExtraTagParams.Add(
Format('onClick=return ValorRequerido() && CriticaCIC2(true, true)',
[UpperCase(IWEdit1.Name)]));
procedure TIWForm1.IWButton5Click(Sender: TObject);
begin
IWLabel1.Caption := IWEdit1.Text;
WebApplication.ShowMessage('Se você esta codificando esse exemplo corretamente, '+
'essa mensagem nunca não vai ser exibida. Jamais será! Garanto (heheh ..).');
end;
unit Unit1;
interface
uses
Classes, SysUtils, IWAppForm, IWApplication, IWColor, IWTypes, IWCompEdit,
Controls, IWVCLBaseControl, IWBaseControl, IWBaseHTMLControl, IWControl,
IWCompButton, IWCompLabel;
type
TIWForm1 = class(TIWAppForm)
IWButton1: TIWButton;
IWEdit1: TIWEdit;
IWButton2: TIWButton;
IWButton3: TIWButton;
IWButton4: TIWButton;
IWLabel1: TIWLabel;
IWButton5: TIWButton;
procedure IWButton5Click(Sender: TObject);
procedure IWButton4Click(Sender: TObject);
procedure IWAppFormCreate(Sender: TObject);
public
end;
implementation
{$R *.dfm}
const
AQuebraLinhaJsZN = #13;
AFncCriticaCIC =
' function CriticaCIC(ZnNumCic, ZnCnpjBool, ZnCpfBool){ ' + AQuebraLinhaJsZN +
' alert("www.estacaozn.blogspot.com verifica CPF/CNPJ");' + AQuebraLinhaJsZN +
' var CicValidoZn = false; ' + AQuebraLinhaJsZN +
' ' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && !ZnCpfBool) { ' + AQuebraLinhaJsZN +
' if(!ZnVerificaCnpj(ZnNumCic)){ ' + AQuebraLinhaJsZN +
' alert("CNPJ Inválido"); ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' else if (!ZnCnpjBool && ZnCpfBool){ ' + AQuebraLinhaJsZN +
' if (!ZnVerificaCPF(ZnNumCic)){ ' + AQuebraLinhaJsZN +
' alert("CPF inválido"); ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' ;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' else { ' + AQuebraLinhaJsZN +
' CicValidoZn = ZnVerificaCnpj(ZnNumCic); ' + AQuebraLinhaJsZN +
' if(CicValidoZn){ ' + AQuebraLinhaJsZN +
' return true;} ' + AQuebraLinhaJsZN +
' else{ ' + AQuebraLinhaJsZN +
' CicValidoZn = ZnVerificaCPF(ZnNumCic); ' + AQuebraLinhaJsZN +
' if(!CicValidoZn){ ' + AQuebraLinhaJsZN +
' alert("CIC Inválido") ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' var ZnMsg = ""; ' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CPJ ou CNPJ"; }' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && !ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CNPJ"; }' + AQuebraLinhaJsZN +
' if (!ZnCnpjBool && ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CPF"; }' + AQuebraLinhaJsZN +
' alert("Valor Validado Ok, " +ZnMsg + ": " + ZnNumCic.value);' + AQuebraLinhaJsZN +
' return true;} ' + AQuebraLinhaJsZN;
AFncCriticaCPF =
' function ZnVerificaCPF (ZnCpfObj){ ' + AQuebraLinhaJsZN +
' var gmSort = new Array(ZnCpfObj.value.length); ' + AQuebraLinhaJsZN +
' for (i=0; i< ZnCpfObj.value.length; i++){gmSort[i] = ZnCpfObj.value.charAt(i);} ' + AQuebraLinhaJsZN +
' gmSort.sort(); ' + AQuebraLinhaJsZN +
' if (gmSort[0] == gmSort[gmSort.length -1]){ ' + AQuebraLinhaJsZN +
' alert("www.estacaozn.blogspot.com: Os números são iguais: " + ZnCpfObj.value); ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' ZnAuxCal = 0; ' + AQuebraLinhaJsZN +
' for (ZnCont = 0; ZnCont < 9; ZnCont ++) ' + AQuebraLinhaJsZN +
' ZnAuxCal += parseInt(ZnCpfObj.value.charAt(ZnCont)) * (10 - ZnCont); ' + AQuebraLinhaJsZN +
' DgVZn = 11 - (ZnAuxCal % 11); ' + AQuebraLinhaJsZN +
' if (DgVZn == 10 || DgVZn == 11) ' + AQuebraLinhaJsZN +
' DgVZn = 0; ' + AQuebraLinhaJsZN +
' if (DgVZn != parseInt(ZnCpfObj.value.charAt(9))) ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' ZnAuxCal = 0; ' + AQuebraLinhaJsZN +
' for (ZnCont = 0; ZnCont < 10; ZnCont ++) ' + AQuebraLinhaJsZN +
' ZnAuxCal += parseInt(ZnCpfObj.value.charAt(ZnCont)) * (11 - ZnCont); ' + AQuebraLinhaJsZN +
' DgVZn = 11 - (ZnAuxCal % 11); ' + AQuebraLinhaJsZN +
' if (DgVZn == 10 || DgVZn == 11) ' + AQuebraLinhaJsZN +
' DgVZn = 0; ' + AQuebraLinhaJsZN +
' if (DgVZn != parseInt(ZnCpfObj.value.charAt(10))){ ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' //alert("O CPF INFORMADO É VÁLIDO."); ' + AQuebraLinhaJsZN +
' return true; ' + AQuebraLinhaJsZN +
'} ' + AQuebraLinhaJsZN;
AFncCriticaCNPJ =
' function ZnVerificaCnpj(ZNObjInput){' + AQuebraLinhaJsZN +
' var ZnDigitos, ZnDg, ZnSum, ZnCount;' + AQuebraLinhaJsZN +
' var ZnResult, ZnPos, tamanho;' + AQuebraLinhaJsZN +
' var ZnAuxCNPJ = ZNObjInput.value.replace(/\D+/g, "");' + AQuebraLinhaJsZN +
'' + AQuebraLinhaJsZN +
' if (ZnAuxCNPJ.length != 14){' + AQuebraLinhaJsZN +
' ZNObjInput.focus();' + AQuebraLinhaJsZN +
' return false;' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' var gmSort = new Array(ZNObjInput.value.length); ' + AQuebraLinhaJsZN +
' for (i=0; i< ZNObjInput.value.length; i++){gmSort[i] = ZNObjInput.value.charAt(i);} ' + AQuebraLinhaJsZN +
' gmSort.sort(); ' + AQuebraLinhaJsZN +
' if (gmSort[0] == gmSort[gmSort.length -1]){ ' + AQuebraLinhaJsZN +
' alert("www.estacaozn.blogspot.com: Os números são iguais: " + ZNObjInput.value); ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
'' + AQuebraLinhaJsZN +
' ZnAuxTamanho = ZnAuxCNPJ.length - 2' + AQuebraLinhaJsZN +
' ZnDigitos = ZnAuxCNPJ.substring(0,ZnAuxTamanho);' + AQuebraLinhaJsZN +
' ZnDg = ZnAuxCNPJ.substring(ZnAuxTamanho);' + AQuebraLinhaJsZN +
' ZnSum = 0;' + AQuebraLinhaJsZN +
' ZnPos = ZnAuxTamanho - 7;' + AQuebraLinhaJsZN +
' for (ZnCount = ZnAuxTamanho; ZnCount >= 1; ZnCount--){' + AQuebraLinhaJsZN +
' ZnSum += ZnDigitos.charAt(ZnAuxTamanho - ZnCount) * ZnPos--;' + AQuebraLinhaJsZN +
' if (ZnPos < 2)' + AQuebraLinhaJsZN +
' ZnPos = 9;' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' ZnResult = ZnSum % 11 < 2 ? 0 : 11 - ZnSum % 11;' + AQuebraLinhaJsZN +
' if (ZnResult != ZnDg.charAt(0)){' + AQuebraLinhaJsZN +
' ZNObjInput.focus();' + AQuebraLinhaJsZN +
' return false;' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
'' + AQuebraLinhaJsZN +
' ZnAuxTamanho = ZnAuxTamanho + 1;' + AQuebraLinhaJsZN +
' ZnDigitos = ZnAuxCNPJ.substring(0,ZnAuxTamanho);' + AQuebraLinhaJsZN +
' ZnSum = 0;' + AQuebraLinhaJsZN +
' ZnPos = ZnAuxTamanho - 7;' + AQuebraLinhaJsZN +
' for (ZnCount = ZnAuxTamanho; ZnCount >= 1; ZnCount--){' + AQuebraLinhaJsZN +
' ZnSum += ZnDigitos.charAt(ZnAuxTamanho - ZnCount) * ZnPos--;' + AQuebraLinhaJsZN +
' if (ZnPos < 2)' + AQuebraLinhaJsZN +
' ZnPos = 9;}' + AQuebraLinhaJsZN +
'' + AQuebraLinhaJsZN +
' ZnResult = ZnSum % 11 < 2 ? 0 : 11 - ZnSum % 11;' + AQuebraLinhaJsZN +
' if (ZnResult != ZnDg.charAt(1)){' + AQuebraLinhaJsZN +
' ZNObjInput.focus();' + AQuebraLinhaJsZN +
' return false;}' + AQuebraLinhaJsZN +
' else {' + AQuebraLinhaJsZN +
' return true;' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN;
AFncValorRequerido =
' function ValorRequerido(){ ' + AQuebraLinhaJsZN +
' var ObjInput = document.getElementById("%s"); ' + AQuebraLinhaJsZN +
' var AFriendlyName = "%s"; ' + AQuebraLinhaJsZN +
' if (ObjInput.value == ""){ ' + AQuebraLinhaJsZN +
' alert("É obrigatório o valor para o campo: " + AFriendlyName); ' + AQuebraLinhaJsZN +
' ObjInput.style.backgroundColor = "#FD88AA"; ' + AQuebraLinhaJsZN +
' ObjInput.focus(); ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' else { ' + AQuebraLinhaJsZN +
' ObjInput.style.backgroundColor = "#FFFFFF"; ' + AQuebraLinhaJsZN +
' }' + AQuebraLinhaJsZN +
' return true;}' + AQuebraLinhaJsZN;
AFncCriticaCIC2 =
' function CriticaCIC2(ZnCnpjBool, ZnCpfBool){ ' + AQuebraLinhaJsZN +
' var ZnNumCic = document.getElementById("%s"); ' + AQuebraLinhaJsZN +
' alert("www.estacaozn.blogspot.com verifica CPF/CNPJ");' + AQuebraLinhaJsZN +
' var CicValidoZn = false; ' + AQuebraLinhaJsZN +
' ' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && !ZnCpfBool) { ' + AQuebraLinhaJsZN +
' if(!ZnVerificaCnpj(ZnNumCic)){ ' + AQuebraLinhaJsZN +
' alert("CNPJ Inválido"); ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' else if (!ZnCnpjBool && ZnCpfBool){ ' + AQuebraLinhaJsZN +
' if (!ZnVerificaCPF(ZnNumCic)){ ' + AQuebraLinhaJsZN +
' alert("CPF inválido"); ' + AQuebraLinhaJsZN +
' return false; ' + AQuebraLinhaJsZN +
' ;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' else { ' + AQuebraLinhaJsZN +
' CicValidoZn = ZnVerificaCnpj(ZnNumCic); ' + AQuebraLinhaJsZN +
' if(CicValidoZn){ ' + AQuebraLinhaJsZN +
' return true;} ' + AQuebraLinhaJsZN +
' else{ ' + AQuebraLinhaJsZN +
' CicValidoZn = ZnVerificaCPF(ZnNumCic); ' + AQuebraLinhaJsZN +
' if(!CicValidoZn){ ' + AQuebraLinhaJsZN +
' alert("CIC Inválido") ' + AQuebraLinhaJsZN +
' return false;} ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' } ' + AQuebraLinhaJsZN +
' var ZnMsg = ""; ' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CPJ ou CNPJ"; }' + AQuebraLinhaJsZN +
' if (ZnCnpjBool && !ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CNPJ"; }' + AQuebraLinhaJsZN +
' if (!ZnCnpjBool && ZnCpfBool) { ' + AQuebraLinhaJsZN +
' ZnMsg = "CPF"; }' + AQuebraLinhaJsZN +
' alert("Valor Validado Ok, " +ZnMsg + ": " + ZnNumCic.value);' + AQuebraLinhaJsZN +
' return true;} ' + AQuebraLinhaJsZN;
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
Self.JavaScript.Add('');
Self.JavaScript.Add(AFncCriticaCPF);
Self.JavaScript.Add('');
Self.JavaScript.Add(AFncCriticaCNPJ);
Self.JavaScript.Add('');
Self.JavaScript.Add(AFncCriticaCIC);
Self.JavaScript.Add('');
// O IWButton1 vai validar as duas opções CPF e CNPJ
IWButton1.Caption := 'Valida CPF e CNPJ';
IWButton1.Width := 200;
IWButton1.ExtraTagParams.Add(
Format('onClick=CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'true', 'true']));
//O IWButton2 vai validar apenas CPF
IWButton2.Caption := 'Valida CPF';
IWButton2.Width := 200;
IWButton2.ExtraTagParams.Add(
Format('onClick=CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'false', 'true']));
//O IWButton3 vai validar apenas CNPJ
IWButton3.Caption := 'Valida CNPJ';
IWButton3.Width := 200;
IWButton3.ExtraTagParams.Add(
Format('onClick=CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'true', 'false']));
(* segunda parte do artigo:
OnClick do IWButton chamar mais de uma função Javascript *)
IWEdit1.FriendlyName := 'CIC: CNPJ ou CPF';
Self.JavaScript.Add('//**************************************');
Self.JavaScript.Add('//segunda parte do artigo:' + #13 +
'// OnClick do IWButton chamar mais de uma função Javascript');
Self.JavaScript.Add(Format(AFncCriticaCIC2, [UpperCase(IWEdit1.Name)]));
Self.JavaScript.Add('');
Self.JavaScript.Add('');
Self.JavaScript.Add(Format(AFncValorRequerido, [UpperCase(IWEdit1.Name),
IWEdit1.FriendlyName]));
Self.JavaScript.Add('//*******www.estacaozn.blogspot.com**********');
IWButton4.Caption := 'Valor Obrigatório & Valida CIC';
IWButton4.Width := 360;
IWButton4.ScriptEvents.Add('onClick').EventCode.Add(
'return ValorRequerido() && CriticaCIC2(true, true)');
(* testando chamar duas funções Javascript na propriedade ExtraTagParams *)
(* IWButton5.ExtraTagParams.Add(
Format('onClick=return ValorRequerido() && CriticaCIC(%s, %s, %s)', [UpperCase(IWEdit1.Name),
'true', 'true'])); *)
IWButton5.ExtraTagParams.Add(
Format('onClick=return ValorRequerido() && CriticaCIC2(true, true)',
[UpperCase(IWEdit1.Name)]));
end;
procedure TIWForm1.IWButton4Click(Sender: TObject);
begin
IWLabel1.Font.Size := 16;
IWLabel1.Caption := Format('Valor digitado válido: %s', [IWEdit1.Text]); ;
end;
procedure TIWForm1.IWButton5Click(Sender: TObject);
begin
IWLabel1.Caption := IWEdit1.Text;
WebApplication.ShowMessage('Se você esta codificando esse exemplo corretamente, '+
'essa mensagem nunca não vai ser exibida. Jamais será! Garanto (heheh ..).');
end;
(* esse trecho para Intrweb 8*)
initialization
TIWForm1.SetAsMainForm;
function ZnVerificaCPF (ZnCpfObj){
var gmSort = new Array(ZnCpfObj.value.length);
for (i=0; i< ZnCpfObj.value.length; i++){gmSort[i] = ZnCpfObj.value.charAt(i);}
gmSort.sort();
if (gmSort[0] == gmSort[gmSort.length -1]){
alert("www.estacaozn.blogspot.com: Os números são iguais: " + ZnCpfObj.value);
return false;
}
ZnAuxCal = 0;
for (ZnCont = 0; ZnCont < 9; ZnCont ++)
ZnAuxCal += parseInt(ZnCpfObj.value.charAt(ZnCont)) * (10 - ZnCont);
DgVZn = 11 - (ZnAuxCal % 11);
if (DgVZn == 10 || DgVZn == 11)
DgVZn = 0;
if (DgVZn != parseInt(ZnCpfObj.value.charAt(9)))
return false;
ZnAuxCal = 0;
for (ZnCont = 0; ZnCont < 10; ZnCont ++)
ZnAuxCal += parseInt(ZnCpfObj.value.charAt(ZnCont)) * (11 - ZnCont);
DgVZn = 11 - (ZnAuxCal % 11);
if (DgVZn == 10 || DgVZn == 11)
DgVZn = 0;
if (DgVZn != parseInt(ZnCpfObj.value.charAt(10))){
return false;}
//alert("O CPF INFORMADO É VÁLIDO.");
return true;
}
function ZnVerificaCnpj(ZNObjInput){
var ZnDigitos, ZnDg, ZnSum, ZnCount;
var ZnResult, ZnPos, tamanho;
var ZnAuxCNPJ = ZNObjInput.value.replace(/\D+/g, "");
if (ZnAuxCNPJ.length != 14){
ZNObjInput.focus();
return false;
}
var gmSort = new Array(ZNObjInput.value.length);
for (i=0; i< ZNObjInput.value.length; i++){gmSort[i] = ZNObjInput.value.charAt(i);}
gmSort.sort();
if (gmSort[0] == gmSort[gmSort.length -1]){
alert("www.estacaozn.blogspot.com: Os números são iguais: " + ZNObjInput.value);
return false;
}
ZnAuxTamanho = ZnAuxCNPJ.length - 2
ZnDigitos = ZnAuxCNPJ.substring(0,ZnAuxTamanho);
ZnDg = ZnAuxCNPJ.substring(ZnAuxTamanho);
ZnSum = 0;
ZnPos = ZnAuxTamanho - 7;
for (ZnCount = ZnAuxTamanho; ZnCount >= 1; ZnCount--){
ZnSum += ZnDigitos.charAt(ZnAuxTamanho - ZnCount) * ZnPos--;
if (ZnPos < 2)
ZnPos = 9;
}
ZnResult = ZnSum % 11 < 2 ? 0 : 11 - ZnSum % 11;
if (ZnResult != ZnDg.charAt(0)){
ZNObjInput.focus();
return false;
}
ZnAuxTamanho = ZnAuxTamanho + 1;
ZnDigitos = ZnAuxCNPJ.substring(0,ZnAuxTamanho);
ZnSum = 0;
ZnPos = ZnAuxTamanho - 7;
for (ZnCount = ZnAuxTamanho; ZnCount >= 1; ZnCount--){
ZnSum += ZnDigitos.charAt(ZnAuxTamanho - ZnCount) * ZnPos--;
if (ZnPos < 2)
ZnPos = 9;}
ZnResult = ZnSum % 11 < 2 ? 0 : 11 - ZnSum % 11;
if (ZnResult != ZnDg.charAt(1)){
ZNObjInput.focus();
return false;}
else {
return true;
}
}
function CriticaCIC(ZnNumCic, ZnCnpjBool, ZnCpfBool){
alert("www.estacaozn.blogspot.com verifica CPF/CNPJ");
var CicValidoZn = false;
if (ZnCnpjBool && !ZnCpfBool) {
if(!ZnVerificaCnpj(ZnNumCic)){
alert("CNPJ Inválido");
return false;}
}
else if (!ZnCnpjBool && ZnCpfBool){
if (!ZnVerificaCPF(ZnNumCic)){
alert("CPF inválido");
return false;
;}
}
else {
CicValidoZn = ZnVerificaCnpj(ZnNumCic);
if(CicValidoZn){
return true;}
else{
CicValidoZn = ZnVerificaCPF(ZnNumCic);
if(!CicValidoZn){
alert("CIC Inválido")
return false;}
}
}
var ZnMsg = "";
if (ZnCnpjBool && ZnCpfBool) {
ZnMsg = "CPJ ou CNPJ"; }
if (ZnCnpjBool && !ZnCpfBool) {
ZnMsg = "CNPJ"; }
if (!ZnCnpjBool && ZnCpfBool) {
ZnMsg = "CPF"; }
alert("Valor Validado Ok, " +ZnMsg + ": " + ZnNumCic.value);
return true;}
//**************************************
//segunda parte do artigo:
// OnClick do IWButton chamar mais de uma função Javascript
function CriticaCIC2(ZnCnpjBool, ZnCpfBool){
var ZnNumCic = document.getElementById("IWEDIT1");
alert("www.estacaozn.blogspot.com verifica CPF/CNPJ");
var CicValidoZn = false;
if (ZnCnpjBool && !ZnCpfBool) {
if(!ZnVerificaCnpj(ZnNumCic)){
alert("CNPJ Inválido");
return false;}
}
else if (!ZnCnpjBool && ZnCpfBool){
if (!ZnVerificaCPF(ZnNumCic)){
alert("CPF inválido");
return false;
;}
}
else {
CicValidoZn = ZnVerificaCnpj(ZnNumCic);
if(CicValidoZn){
return true;}
else{
CicValidoZn = ZnVerificaCPF(ZnNumCic);
if(!CicValidoZn){
alert("CIC Inválido")
return false;}
}
}
var ZnMsg = "";
if (ZnCnpjBool && ZnCpfBool) {
ZnMsg = "CPJ ou CNPJ"; }
if (ZnCnpjBool && !ZnCpfBool) {
ZnMsg = "CNPJ"; }
if (!ZnCnpjBool && ZnCpfBool) {
ZnMsg = "CPF"; }
alert("Valor Validado Ok, " +ZnMsg + ": " + ZnNumCic.value);
return true;}
function ValorRequerido(){
var ObjInput = document.getElementById("IWEDIT1");
var AFriendlyName = "CIC: CNPJ ou CPF";
if (ObjInput.value == ""){
alert("É obrigatório o valor para o campo: " + AFriendlyName);
ObjInput.style.backgroundColor = "#FD88AA";
ObjInput.focus();
return false;
}
else {
ObjInput.style.backgroundColor = "#FFFFFF";
}
return true;}
//*******www.estacaozn.blogspot.com**********
function Validate() {
return true;
}