<?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/"
	>

<channel>
	<title>cyberlink.70mb.ru</title>
	<atom:link href="http://cyberlink.70mb.ru/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://cyberlink.70mb.ru</link>
	<description>Сайт для программеров и компьютерщиков</description>
	<pubDate>Mon, 22 Jun 2009 19:14:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Преврашаем TShape в мяч</title>
		<link>http://cyberlink.70mb.ru/?p=187</link>
		<comments>http://cyberlink.70mb.ru/?p=187#comments</comments>
		<pubDate>Mon, 22 Jun 2009 19:12:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://cyberlink.70mb.ru/?p=187</guid>
		<description><![CDATA[В этом уроке я покажу вам как с легкостью сделать летающий шарик у себя на форме. Ну что открываем Delphi, создаем новый проект. Нам понадобиться компонент Shape с закладки Additional и компонент Timer с закладки System. Кидаем их на форму, щелкаем по компоненту shape и меняем свойство shape на ctCircle теперь вместо квадрата компонент примет [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://cyberlink.70mb.ru/wp-content/uploads/2009/06/pic1.png" alt="" hspace="10" width="64" height="64" align="left" /><span style="color: #000000;">В этом уроке я покажу вам как с легкостью сделать летающий шарик у себя на форме. Ну что открываем Delphi, создаем новый проект. Нам понадобиться компонент Shape с закладки Additional и компонент Timer с закладки System. Кидаем их на форму, щелкаем по компоненту shape и меняем свойство shape на ctCircle теперь вместо квадрата компонент примет форму круга. Все на этом предварительные приготовления завершены начинаем кодить.<span id="more-187"></span></span></p>
<p><span style="color: #000000;"><br />
</span></p>
<p><span style="color: #000000;">После ключевого слова var обьявлем 4 глобальные переменные типа single</span></p>
<p class="delphi_code"><span style="color: #000000;">PosX, Posy, VelX, Vely: single; </span></p>
<p align="left"><span style="color: #000000;">Создаем обработчик событий на форме (OnCreate) прост щелкнув по ней 2 раза мышкой. Между <strong>begin end</strong>; пишем:</span></p>
<p class="delphi_code" align="left"><span style="color: #000000;">Posx:=3;<br />
PosY:=5;<br />
VelX:=2;<br />
VelY:=2; </span></p>
<p align="left"><span style="color: #000000;">На данном этапе мы присваиваем  ранее объявленным  переменным нужные значения.</span></p>
<p align="left"><span style="color: #000000;">Далее нам понадобиться создать одну не большую процедуру. После ключевого слова <strong>private</strong> пишем </span></p>
<p class="delphi_code" align="left"><span style="color: #000000;"><strong>procedure</strong> shar();</span></p>
<p align="left"><span style="color: #000000;">Нажимаем сочетание клавиш Ctrl+Shift+C и Delphi автоматически сгенерирует заготовку для нашей будущей процедуры. Забегая вперед открою вам не большой секрет, именно эта процедура и будет отвечать за полет шарика. Ладно немного отвлеклись, вставляем ниже приведенный код между словами begin end в нашей процедуре. </span></p>
<p class="delphi_code" align="left"><span style="color: #000000;"><span class="delphi_text">// Текущая координата шарика + скорость </span><br />
PosX:= PosX+VelX;<br />
PosY:= PosY+VelY;</span></p>
<p><span style="color: #000000;"><span class="delphi_text">// Что бы шарик не вылетал за границы поля по ширине</span><br />
<span class="delphi_text">// Если X координата шарика больше ширины формы - ширины самого //шарика то</span><br />
<strong>if</strong> PosX &gt; ClientWidth - Shape1.Width   <strong>then</strong><br />
<strong>begin</strong><br />
//<span class="delphi_text">X координата шарика</span> <span class="delphi_text">присвоит значение ширина формы - ширина //шарика</span><br />
PosX:= ClientWidth - Shape1.Width;<br />
<span class="delphi_text">// Включаем заднюю скорость) или меняем значение скорости на минус</span><br />
VelX:= - VelX;<br />
<strong>end</strong><br />
<strong>else if</strong> PosX &lt; 0 <strong>then</strong><br />
<strong>begin</strong><br />
POsX:= 0;<br />
VelX:= - VelX;<br />
<strong>end</strong>;</span></p>
<p><span style="color: #000000;"><span class="delphi_text">// Здесь  по аналогии только работаем с Y координатой</span><br />
<strong>if</strong> PosY &gt; ClientHeight - Shape1.Width <strong>then</strong><br />
<strong>begin</strong><br />
POsY:= ClientHeight - Shape1.Width;<br />
VelY:= - VelY;<br />
<strong>end</strong><br />
<strong>else</strong> <strong>if</strong> PosY &lt; 0 <strong>then</strong><br />
<strong>begin</strong><br />
POsY:= 0;<br />
VelY:= - VelY;<br />
<strong>end</strong>;<br />
<span class="delphi_text">// Перемещаем шарик в пространстве</span><br />
Shape1.Left:= Round(PosX);<br />
Shape1.Top:= Round(PosY);</span></p>
<p align="left"><span style="color: #000000;">Сейчас не стоит пугаться процедура не такая уж сложная как кажется на первый взгляд. Если кто не понял что в ней происходит читайте комментарии в коде. Кратко поясню что-же за переменные использованы в процедуре</span></p>
<p align="left"><span style="color: #000000;">Переменные PosX и PosY хранят координаты положение шарика в пространстве, VelX и VelY отвечают за скорость его перемещения. ClientWidth, ClientHeight - ширина и высота формы. Shape1.Width ширина шарика.</span></p>
<p align="left"><span style="color: #000000;">Ну что справились с процедурой ?! Ладно едим дальше свойство Interval у таймера ставим 10, а свойство Enabled = true. Кликаем по компоненту timer два раза и в обработчике событий пишем имя нашей процедуры </span></p>
<p class="delphi_code" align="left"><span style="color: #000000;">shar;</span></p>
<p align="left"><span style="color: #000000;">На этом все, запускаем проект и наслаждаемся  результатом. А вот что получилось у меня:</span></p>
<p style="text-align: center;" align="left"><span style="color: #000000;"><img class="aligncenter" src="http://www.delphiexpert.ru/img/lessons/shape/screen.png" alt="" width="232" height="199" /><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://cyberlink.70mb.ru/?feed=rss2&amp;p=187</wfw:commentRss>
		</item>
	</channel>
</rss>

