6
quarta‐feira, 25 de fevereiro de 2009 Delphi Intraweb ‐ Gerar dinamicamente JavaScript por GMotta ZN Continuação do artigo Delphi Intraweb – JavaScript II (Continua) Antes de qualquer coisa, preciso registrar a alegria de podermos contar com mais um colaborador no nosso blog. Prezados leitores, em nome de todos os colaboradores, quero manifestar a alegria em poder contar com mais um grande amigo no time do Estação ZN. Rodrigo Alencar , brother de longas datas tem contribuído com um material de extrema qualidade , pertinência e originalidade . Rodrigão, seja bem vindo ao Estação ZN, é uma honra poder contar com o sua participação! Dando continuidade ao tema ... Para controlarmos, através de JavaScript, a ação de habilitar e desabilitar o IWCombo1 (O que carregamos com os nomes das bandas) vamos gerar dinamicamente o script que vai no browser fazer esse gerenciamento. Adicione no IWForm mais um IWCheckBox, e codifique conforme ilustrado abaixo: private procedure LoadComboBandas; procedure DesabilitaControles; procedure BuildScriptControlEnabled; public Na seção “private” declarei o método que vai construir dinamicamente o JavaScript, “BuildScriptControlEnabled”. procedure TZnIWForm.BuildScriptControlEnabled; const FunctionJsBodyStatment = 'function %s{%s}'; AQuebraLinhaJs = #13; AStatementFnc = ' var ZnComboLnd = FindElem("%s");' + AQueb raLinhaJs + ' alert(ZnComboLnd[ZnComboLnd.selectedIndex Groove ZN ‐ by Grooveshark RSS Feed 0 mais Próximo blog» [email protected] Painel Sair Estação ZN 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 ... :)

Estação ZN_ Delphi Intraweb - Gerar Dinamicamente JavaScript

Embed Size (px)

DESCRIPTION

121321321

Citation preview

Page 1: Estação ZN_ Delphi Intraweb - Gerar Dinamicamente JavaScript

quarta‐feira, 25 de fevereiro de 2009

Delphi Intraweb ‐ Gerar dinamicamente JavaScript

por GMotta ZN

Continuação do artigo Delphi Intraweb – JavaScript II (Continua)

Antes de qualquer coisa, preciso registrar a alegria de podermoscontar com mais um colaborador no nosso blog.Prezados leitores, em nome de todos os colaboradores, queromanifestar a alegria em poder contar com mais um grande amigo notime do Estação ZN. Rodrigo Alencar, brother de longas datas temcontribuído com um material de extrema qualidade, pertinência eoriginalidade.Rodrigão, seja bem vindo ao Estação ZN, é uma honra poder contarcom o sua participação!

Dando continuidade ao tema ...

Para controlarmos, através de JavaScript, a ação de habilitar edesabilitar o IWCombo1 (O que carregamos com os nomes das bandas)vamos gerar dinamicamente o script que vai no browser fazer essegerenciamento. Adicione no IWForm mais um IWCheckBox, e codifique conformeilustrado abaixo:

private procedure LoadComboBandas; procedure DesabilitaControles; procedure BuildScriptControlEnabled; public

Na seção “private” declarei o método que vai construirdinamicamente o JavaScript, “BuildScriptControlEnabled”.

procedure TZnIWForm.BuildScriptControlEnabled;const FunctionJsBodyStatment = 'function %s{%s}'; AQuebraLinhaJs = #13; AStatementFnc = ' var ZnComboLnd = FindElem("%s");' + AQuebraLinhaJs + ' alert(ZnComboLnd[ZnComboLnd.selectedIndex

Groove ZN ‐ byGrooveshark

RSS Feed

0   mais    Próximo blog» [email protected]   Painel   Sair

Estação ZNEstamos estudando e o resultado disso postamos aqui. Sinceramente desejamos que oconteú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 ... :)

Page 2: Estação ZN_ Delphi Intraweb - Gerar Dinamicamente JavaScript

].innerHTML);' + AQuebraLinhaJs + ' var ZnChkBox = FindElem("%s");' + AQuebraLinhaJs + ' alert(ZnChkBox.innerHTML);' + AQuebraLinhaJs + ' ZnChkBox.checked = !ZnChkBox.checked;' + AQuebraLinhaJs + ' ZnComboLnd.disabled = !ZnChkBox.checked;' + AQuebraLinhaJs + ' if (!ZnComboLnd.disabled){ ' + AQuebraLinhaJs + ' alert(ZnComboLnd.name + " está Habilitado"); ' + AQuebraLinhaJs + ' ZnComboLnd.style.backgroundColor = "#FFFFFF"; ' + AQuebraLinhaJs + ' ZnComboLnd.focus(); ' + AQuebraLinhaJs + ' return true; ' + AQuebraLinhaJs + ' } ' + AQuebraLinhaJs + ' else{ '+ AQuebraLinhaJs + ' ZnComboLnd.style.backgroundColor ="#E7E7E7"; '+ AQuebraLinhaJs + ' return false; ' + AQuebraLinhaJs + ' };'+ AQuebraLinhaJs;var StrStatement: String;begin StrStatement := AQuebraLinhaJs; StrStatement := StrStatement + Format(AStatementFnc, [UpperCase(IWComboBox1.Name), UpperCase(ChckBoxBandas.Name)]);

StrStatement := Format(FunctionJsBodyStatment, ['ZnHabilitaCmbBanda()', StrStatement]); Self.JavaScript.Add(StrStatement); ChckBoxBandas.ScriptEvents.Add('onClick').EventCode.Add('ZnHabilitaCmbBanda()');end;

Observe que temos problemas na hora de trabalharmos com o objetodo tipo “CheckBox”. Veja que, para montar a string que seráadicionada a propriedade “JavaScript” do IWForm, na linha 8,recuperamos o objeto com função “FindElem()”.Do contrário,teríamos que usar o nome completo do componente (definido emJavaScript na página web). Ou seja, teríamos que concatenar com onome do controle (IWCheckBox) no Delphi como bendito sufixo“_CHECKBOX”. Na linha 9, somos obrigados a simular o comportamento “Click” doobjeto. Que absurdo! Do contrário ele não efetiva o “Click”. Pelomenos, essa foi a solução que encontrei, visto que o click docomponente não rolava. Na linha 10, somente então, efetivamos a atribuição de valor apropriedade “disabled” do objeto recuperado na linha 7 (o“IWComboBox1”).

No trecho de código abaixo, podemos ver como ficou no browser afunção que dinamicamente montamos no Delphi:

function ZnHabilitaCmbBanda(){ var ZnCombo = document.forms[0].IWCOMBOBOX1; var ZnChkBox = FindElem("CHCKBOXBANDAS"); ZnChkBox.checked = !ZnChkBox.checked; ZnCombo.disabled = !ZnChkBox.checked; if (!ZnCombo.disabled){ alert(ZnCombo.name + " está Habilitado");

Blog in English ‐ GoogleTranslator version

Busca no blog:Pesquisar  

Conteúdo

Aleatório

Cyber Culture

Games

Multimídia

Música

Programação

WEB

Colaboradores

ralencar

Pedro

Felipe Guerço

Daniel Bezerra

Bruno Lichot

GMotta ZN

Amigos do EstaçãoZN ‐Muito obrigado!

Participar deste siteGoogle Friend Connect

Membros (41)  Mais »

Arquivo do blog

►  2011 (6)

►  2010 (2)

▼  2009 (25)

Page 3: Estação ZN_ Delphi Intraweb - Gerar Dinamicamente JavaScript

ZnCombo.style.backgroundColor = "#FFFFFF"; ZnCombo.focus(); return true; }; else{ ZnCombo.style.backgroundColor ="#E7E7E7"; };}

Isso acontece especialmente no Intraweb 8 porque ele trata ocomportamento de todo “CheckBox” com uma tag “span”. Como senão bastasse isso, para complicar ainda mais, ele agrega,arbitráriamente, um sufixo ao nome original do componente,“_CHECKBOX”. Isso certamente deve ter complicado a vida de quemtentou trabalhar com JavaScript no Intraweb 8. Veja um trecho decódigo gerado no browser pelo Intraweb 8 na definição do“CHCKBOXBANDAS”:

<input tabindex="27" type="CHECKBOX" name="CHCKBOXBANDAS_CHECKBOX"><span onclick="FindElem('CHCKBOXBANDAS_CHECKBOX').checked = !FindElem('CHCKBOXBANDAS_CHECKBOX').checked;">Habilitar Bandas</span></span>

No Intraweb 5 isso não acontece. Primeiro, não existe o sufixo nadefinição JavaScript do componente. Segundo, embora exista a tagspan, ela presta somente para exibir o conteúdo do caption doIWCheckBox, o comportamento do CheckBox não está programadonela. Portanto, não precisaríamos simular o click em códigoconforme eu fiz na linha 04 da “function ZnHabilitaCmbBanda()”.Alias, se alguém tiver algo a acrescentar a minha análise, por favor,fique a vontade. Em outras, palavras, foi a solução que encontrei.

Outro ponto importante, quero destacar nesse exemplo a atribuiçãodinâmica da propriedade “ScriptEvent” do TIWCheckBox,“ChkBoxBandas”. Isso está sendo feito na linha 28 do procedimento“BuildScriptControlEnabled”.

 

tags: Delphi, Intraweb, Web

Nenhum comentário:

Postar um comentário

►  Ago (2)

►  Mai (6)

►  Abr (6)

►  Mar (5)

▼  Fev (2)

Delphi Intraweb ‐ GerardinamicamenteJavaScript

Sistema de tarifação,HSQLDB e Java ‐PARTE 2.

►  Jan (4)

►  2008 (80)

►  2007 (125)

tags

.NET

ADO

AJAX

Apache

Arquitetura de Software

ASP.NET

Audio

Automação OLE

Banco de Dados

BDS

C#

Componentes

Controle de Versão

CSS

Cyber Culture

DBA

Delphi

Diversos

English

Ferramentas Case

Flash

Page 4: Estação ZN_ Delphi Intraweb - Gerar Dinamicamente JavaScript

Postagem mais recente Postagem mais antiga

Sair

  Notifiqueme

Digite seu comentário...

Comentar como:  Alexandre (Google)

Publicar   Visualizar

Página inicial

Assinar: Postar comentários (Atom)

HTML

Humor

IDE

Internet

Internet Explorer

Intraweb

Introdução a Programção

Introdução HarmoniaFuncional

Java

Javascript

JCL

Json

Linq

Linux

Literatura Delphi

Mencoder

Modelagem

Mplayer

Multimidia

Multimídia

Music

MySQL

Música

Navegadores

NetBeans

Novidades

OLE DB

Oracle

Partituras

PHP

PL/SQL

POO

RPC

RSS

Script

Shell Script

Sibelius

Page 5: Estação ZN_ Delphi Intraweb - Gerar Dinamicamente JavaScript

Slackware

SQL

Subversion

Suporte

SVN

Tableless

Tortoise

Tratamento de Exceções

Técnicas de desenvolvimento

UDF

UML

Variedades

VB6

Vídeo‐Game

WAP

Web

Web 2.0

Web 3.0

Webservice

Windowhttp://www.blogger.com/img/blank.gifs

Windows

Windows API

WML

XML

XSL

Zn Ringtones

ZN Media Player

Links

Willian Rodrigues

Web 4

Shimatai

Pensamentos de umProfissional de TI

Malta on Delphi

Linguagem de Máquina

Bruno Lichot ‐ Borland