Você está na página 1de 6

0

mais Prximoblog ahcsistemas@gmail.com Painel Sair

Estao ZN
Estamos estudando e o resultado disso postamos aqui. Sinceramente desejamos que o
contedo aqui semeado possa ser til para muitas pessoas.
Seja bemvindo e fique vontade para contribuir da forma que puder e quiser.
Bola pra frente ... :)

quartafeira, 25 de fevereiro de 2009

Delphi Intraweb Gerar dinamicamente JavaScript

Groove ZN by
Grooveshark

por GMotta ZN
Continuao 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 Estao ZN. Rodrigo Alencar, brother de longas datas tem
contribudo com um material de extrema qualidade, pertinncia e
originalidade.
Rodrigo, seja bem vindo ao Estao ZN, uma honra poder contar
com o sua participao!
Dando continuidade ao tema ...
Para controlarmos, atravs de JavaScript, a ao 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 seo private declarei o mtodo 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

RSS Feed

].innerHTML);' + AQuebraLinhaJs +
' var ZnChkBox = FindElem("%s");' + AQuebra
LinhaJs +
' alert(ZnChkBox.innerHTML);' + AQuebraLinh
aJs +
' ZnChkBox.checked = !ZnChkBox.checked;' +
AQuebraLinhaJs +
' ZnComboLnd.disabled = !ZnChkBox.checked;'
+ AQuebraLinhaJs +
' if (!ZnComboLnd.disabled){ ' + AQuebraLinh
aJs +
'
alert(ZnComboLnd.name + " est Habilitad
o"); ' + AQuebraLinhaJs +
'
ZnComboLnd.style.backgroundColor = "#FFF
FFF"; ' + 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(AStatemen
tFnc,
[UpperCase(IWComboBox1.Name), UpperCase(ChckBo
xBandas.Name)]);
StrStatement := Format(FunctionJsBodyStatment,
['ZnHabilitaCmbBanda()', StrStatement]);
Self.JavaScript.Add(StrStatement);
ChckBoxBandas.ScriptEvents.Add('onClick').EventC
ode.Add('ZnHabilitaCmbBanda()');
end;

Blog in English Google


Translator version
Busca no blog:

Pesquisar
Contedo
Aleatrio
Cyber Culture
Games
Multimdia
Msica
Programao
WEB

Colaboradores
ralencar
Pedro
Felipe Guero
Daniel Bezerra
Bruno Lichot
GMotta ZN

Observe que temos problemas na hora de trabalharmos com o objeto


do tipo CheckBox. Veja que, para montar a string que ser
adicionada a propriedade JavaScript do IWForm, na linha 8,
recuperamos o objeto com funo FindElem().Do contrrio,
teramos que usar o nome completo do componente (definido em
JavaScript na pgina web). Ou seja, teramos que concatenar com o
nome do controle (IWCheckBox) no Delphi como bendito sufixo
_CHECKBOX.
Na linha 9, somos obrigados a simular o comportamento Click do
objeto. Que absurdo! Do contrrio ele no efetiva o Click. Pelo
menos, essa foi a soluo que encontrei, visto que o click do
componente no rolava.
Na linha 10, somente ento, efetivamos a atribuio de valor a
propriedade disabled do objeto recuperado na linha 7 (o
IWComboBox1).

Amigos do EstaoZN
Muito obrigado!
Participardestesite
GoogleFriendConnect

Membros(41) Mais

No trecho de cdigo abaixo, podemos ver como ficou no browser a


funo 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");

Arquivo do blog
2011 (6)
2010 (2)
2009 (25)

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

Ago (2)
Mai (6)
Abr (6)
Mar (5)

Fev (2)
Delphi Intraweb Gerar
dinamicamente
JavaScript

Isso acontece especialmente no Intraweb 8 porque ele trata o


comportamento de todo CheckBox com uma tag span. Como se
no bastasse isso, para complicar ainda mais, ele agrega,
arbitrriamente, um sufixo ao nome original do componente,
_CHECKBOX. Isso certamente deve ter complicado a vida de quem
tentou trabalhar com JavaScript no Intraweb 8. Veja um trecho de
cdigo gerado no browser pelo Intraweb 8 na definio do
CHCKBOXBANDAS:

Sistema de tarifao,
HSQLDB e Java
PARTE 2.
Jan (4)
2008 (80)

<input tabindex="27" type="CHECKBOX" name="CHCKBOX


BANDAS_CHECKBOX">
<span onclick="FindElem('CHCKBOXBANDAS_CHECKBOX').
checked =
!FindElem('CHCKBOXBANDAS_CHECKBOX').checked;">H
abilitar Bandas</span>
</span>

2007 (125)

tags
.NET
ADO

No Intraweb 5 isso no acontece. Primeiro, no existe o sufixo na


definio JavaScript do componente. Segundo, embora exista a tag
span, ela presta somente para exibir o contedo do caption do
IWCheckBox, o comportamento do CheckBox no est programado
nela. Portanto, no precisaramos simular o click em cdigo
conforme eu fiz na linha 04 da function ZnHabilitaCmbBanda().
Alias, se algum tiver algo a acrescentar a minha anlise, por favor,
fique a vontade. Em outras, palavras, foi a soluo que encontrei.

AJAX

Outro ponto importante, quero destacar nesse exemplo a atribuio


dinmica da propriedade ScriptEvent do TIWCheckBox,
ChkBoxBandas. Isso est sendo feito na linha 28 do procedimento
BuildScriptControlEnabled.

Banco de Dados

Apache
Arquitetura de Software
ASP.NET
Audio
Automao OLE

BDS
C#
Componentes

Controle de Verso

tags: Delphi, Intraweb, Web

CSS
Cyber Culture
DBA

Nenhum comentrio:

Delphi

Postar um comentrio

Diversos
English
Ferramentas Case
Flash

HTML
Humor

Digiteseucomentrio...

IDE
Internet
Comentarcomo:

Publicar

Alexandre(Google)

Sair

Internet Explorer
Intraweb
Introduo a Programo

Visualizar

Notifiqueme

Introduo Harmonia
Funcional
Java
Javascript

Postagem mais recente

Pgina inicial

Assinar: Postar comentrios (Atom)

Postagem mais antiga

JCL
Json
Linq
Linux
Literatura Delphi
Mencoder
Modelagem
Mplayer
Multimidia
Multimdia
Music
MySQL
Msica
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 Excees
Tcnicas de desenvolvimento
UDF
UML
Variedades
VB6
VdeoGame
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 um
Profissional de TI
Malta on Delphi
Linguagem de Mquina
Bruno Lichot Borland

Atelier das Idias

Helio Delmiro
Beijo Partido10/09/2008
All The Things You
Are03/09/2008
Inai26/05/2007
Um Novo Tempo
Msica20/05/2007
Rom Msica17/05/2007

BlogBlogs.Com.Br