<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Olaf's Thoughts About Development &#187; sound</title>
	<atom:link href="http://www.monien.net/blog/index.php" rel="self" type="application/rss+xml" />
	<link>http://www.monien.net/blog</link>
	<description>Delphi Programming, .NET Philosophy, Web development and more ...</description>
	<lastBuildDate>Mon, 14 Mar 2011 15:59:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Advanced IntraWeb Async Event Handling</title>
		<link>http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/</link>
		<comments>http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 22:00:00 +0000</pubDate>
		<dc:creator>Olaf Monien</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[IntraWeb]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[sound]]></category>

		<guid isPermaLink="false">http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/</guid>
		<description><![CDATA[Implementing Asynchronous events with IntraWeb is plain and easy. Just hook some Pascal (or C++) code to any of the OnAsync Event handlers and you are done. The Advanced Ajax Events demo shows how to call Async events from your custom JavaScript routines and how to implement an asynchronous Key event handler. This is all [...]]]></description>
			<content:encoded><![CDATA[<p>Implementing Asynchronous events with IntraWeb is plain and easy. Just hook some Pascal (or C++) code to any of the OnAsync Event handlers and you are done. The Advanced Ajax Events demo shows how to call Async events from your custom JavaScript routines  and how to implement an asynchronous Key event handler.<span id="more-175"></span></p>
<p>This is all you need to Ajax-enable your IntraWeb application:</p>
<pre lang="delphi">procedure TIWForm2.IWButton1AsyncClick(Sender: TObject;  EventParams: TStringList);
begin
  LabelResponse.Caption := 'Hello Ajax World!'
end;</pre>
<p>Very simple, but what if you want to call async events from your own custom JavaScript? How to connect key events to some async IntraWeb handler?</p>
<p>This is the Delphi side of an async event handler, that listens to CTRL-A in the Web browser:</p>
<pre lang="delphi">procedure TIWForm2.IWAppFormCreate(Sender: TObject);
begin
  WebApplication.RegisterCallBack('OnCtrlA', OnCtrlA);
end;

procedure TIWForm2.OnCtrlA(EventParams: TStringList);
begin
  WebApplication.ShowMessage('You pressed [CTRL - A] - Edit value: '+ IWEdit1.Text);
end;</pre>
<p>The code in the Form&#8217;s JavaScript property implements the JavaScript side and shows how to call a &#8220;CallBack&#8221; (aka Delphi Async event handler) manually:</p>
<pre lang="javascript">function KeyDownHandler(event){
 //Hide for CTRL-A key from browser
 if (event.keyCode==65 &amp;&amp; event.ctrlKey)
 {
 event.returnValue = false;
 return false;  }
else {
 return true;
 }};

function KeyUpHandler(event){
 //check for CTRL-A key
 if (event.keyCode==65 &amp;&amp; event.ctrlKey) {
   processAjaxEvent(event, null,"OnCtrlA",false, null, true);
   //hide from further "external" handling
   event.returnValue = false;
   return false;
  } else {
    return true;
  } };
//connect event handlers
window.onkeyup = KeyUpHandler;
window.onkeydown = KeyDownHandler;</pre>
<p>Below is a more complex demo project. Please note that there are differences between browsers (IE, FF, Opera &#8230;). The demo takes care of that.</p>
<p><a title="Sample Source" href="http://www.monien.biz/blog/wp-content/uploads/2008/07/files/AdvancedAjaxEvents.zip">AdvancedAjaxEvents.zip</a></p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Advanced+IntraWeb+Async+Event+Handling&amp;link=http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/&amp;notes=Implementing%20Asynchronous%20events%20with%20IntraWeb%20is%20plain%20and%20easy.%20Just%20hook%20some%20Pascal%20%28or%20C%2B%2B%29%20code%20to%20any%20of%20the%20OnAsync%20Event%20handlers%20and%20you%20are%20done.%20The%20Advanced%20Ajax%20Events%20demo%20shows%20how%20to%20call%20Async%20events%20from%20your%20custom%20JavaScript%20routines%20%20and%20how%20to%20implement%20an%20asynchronous%20Key%20eve&amp;short_link=&amp;shortener=tinyurl&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=Advanced+IntraWeb+Async+Event+Handling&amp;link=http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/&amp;notes=Implementing%20Asynchronous%20events%20with%20IntraWeb%20is%20plain%20and%20easy.%20Just%20hook%20some%20Pascal%20%28or%20C%2B%2B%29%20code%20to%20any%20of%20the%20OnAsync%20Event%20handlers%20and%20you%20are%20done.%20The%20Advanced%20Ajax%20Events%20demo%20shows%20how%20to%20call%20Async%20events%20from%20your%20custom%20JavaScript%20routines%20%20and%20how%20to%20implement%20an%20asynchronous%20Key%20eve&amp;short_link=&amp;shortener=tinyurl&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=Advanced+IntraWeb+Async+Event+Handling&amp;link=http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/&amp;notes=Implementing%20Asynchronous%20events%20with%20IntraWeb%20is%20plain%20and%20easy.%20Just%20hook%20some%20Pascal%20%28or%20C%2B%2B%29%20code%20to%20any%20of%20the%20OnAsync%20Event%20handlers%20and%20you%20are%20done.%20The%20Advanced%20Ajax%20Events%20demo%20shows%20how%20to%20call%20Async%20events%20from%20your%20custom%20JavaScript%20routines%20%20and%20how%20to%20implement%20an%20asynchronous%20Key%20eve&amp;short_link=&amp;shortener=tinyurl&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=Advanced+IntraWeb+Async+Event+Handling&amp;link=http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/&amp;notes=Implementing%20Asynchronous%20events%20with%20IntraWeb%20is%20plain%20and%20easy.%20Just%20hook%20some%20Pascal%20%28or%20C%2B%2B%29%20code%20to%20any%20of%20the%20OnAsync%20Event%20handlers%20and%20you%20are%20done.%20The%20Advanced%20Ajax%20Events%20demo%20shows%20how%20to%20call%20Async%20events%20from%20your%20custom%20JavaScript%20routines%20%20and%20how%20to%20implement%20an%20asynchronous%20Key%20eve&amp;short_link=&amp;shortener=tinyurl&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Advanced+IntraWeb+Async+Event+Handling&amp;link=http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/&amp;notes=Implementing%20Asynchronous%20events%20with%20IntraWeb%20is%20plain%20and%20easy.%20Just%20hook%20some%20Pascal%20%28or%20C%2B%2B%29%20code%20to%20any%20of%20the%20OnAsync%20Event%20handlers%20and%20you%20are%20done.%20The%20Advanced%20Ajax%20Events%20demo%20shows%20how%20to%20call%20Async%20events%20from%20your%20custom%20JavaScript%20routines%20%20and%20how%20to%20implement%20an%20asynchronous%20Key%20eve&amp;short_link=&amp;shortener=tinyurl&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=Advanced+IntraWeb+Async+Event+Handling&amp;link=http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/&amp;notes=Implementing%20Asynchronous%20events%20with%20IntraWeb%20is%20plain%20and%20easy.%20Just%20hook%20some%20Pascal%20%28or%20C%2B%2B%29%20code%20to%20any%20of%20the%20OnAsync%20Event%20handlers%20and%20you%20are%20done.%20The%20Advanced%20Ajax%20Events%20demo%20shows%20how%20to%20call%20Async%20events%20from%20your%20custom%20JavaScript%20routines%20%20and%20how%20to%20implement%20an%20asynchronous%20Key%20eve&amp;short_link=&amp;shortener=tinyurl&amp;shortener_key=&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
</ul><div style="clear: both;"></div><div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.monien.net/blog/index.php/2008/04/advanced-intraweb-async-event-handling/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

