Estação ZN_ Delphi Intraweb - Gerar Dinamicamente JavaScript
-
Upload
alexandre-de-xango -
Category
Documents
-
view
64 -
download
41
description
Transcript of 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 ... :)
].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)
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
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
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
Atelier das Idéias
Helio Delmiro
Beijo Partido ‐ 10/09/2008
All The Things YouAre ‐ 03/09/2008
Inaiá ‐ 26/05/2007
Um Novo Tempo ‐Música ‐ 20/05/2007
Romã ‐ Música ‐ 17/05/2007
BlogBlogs.Com.Br