<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Уроки C++ Builder сборник рецептов</title><description>Программируем на C++ Builder 2010 (возможно некоторые заметки устарели)</description><managingEditor>noreply@blogger.com (Unknown)</managingEditor><pubDate>Mon, 7 Oct 2024 08:10:55 +0300</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">24</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://codup.blogspot.com/</link><language>en-us</language><itunes:explicit>yes</itunes:explicit><copyright>©TigerWiki</copyright><itunes:keywords>уроки,tutorials,C,Builder,games,игры,интернет,программирование,обучение,с,нуля,для,чайников</itunes:keywords><itunes:summary>Научимся разрабатывать программы с помощью C++ Builder. В&#13;
наших уроках вы научитесь создавать игры и приложения для интернета.</itunes:summary><itunes:subtitle>Уроки C++ Builder с нуля</itunes:subtitle><itunes:category text="Technology"><itunes:category text="Gadgets"/></itunes:category><itunes:category text="Science &amp; Medicine"><itunes:category text="Medicine"/></itunes:category><itunes:category text="Games &amp; Hobbies"><itunes:category text="Automotive"/></itunes:category><itunes:category text="Government &amp; Organizations"><itunes:category text="Local"/></itunes:category><itunes:author>TigerWiki</itunes:author><itunes:owner><itunes:email>noreply@blogger.com</itunes:email><itunes:name>TigerWiki</itunes:name></itunes:owner><item><title>Как скачать файл из интернета?</title><link>http://codup.blogspot.com/2011/05/blog-post.html</link><category>WeB</category><category>Компоненты</category><pubDate>Fri, 6 May 2011 15:42:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-974011642912127003</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD3zVHVPdFPqJg5rstqoHOvPTnfdVYgma3jDvHvtDeNGgmXsuXTKS56mjk41mg0TEDF6JJbP_7EZKlWr3LwzW71-bCkBq7g7yte4QxREtyTapRx0-l5Dm3Tsk4w4ItQUxF8DqQw02NRvz3/s1600/download+from+web.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD3zVHVPdFPqJg5rstqoHOvPTnfdVYgma3jDvHvtDeNGgmXsuXTKS56mjk41mg0TEDF6JJbP_7EZKlWr3LwzW71-bCkBq7g7yte4QxREtyTapRx0-l5Dm3Tsk4w4ItQUxF8DqQw02NRvz3/s1600/download+from+web.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
Загружать файлы с помощью &lt;b&gt;C++ Builder&lt;/b&gt; очень просто, мы рассмотрим один из способов загрузки файлов из интернета. Все, что нам понадобиться, новый проект компонент &lt;b&gt;&lt;i&gt;IdHTTP&lt;/i&gt;&lt;/b&gt; (вкладка &lt;b&gt;Indy Clients&lt;/b&gt;) и любой обработчик событий, например &lt;b&gt;&lt;i&gt;Button&lt;/i&gt;&lt;/b&gt;. Так же я покажу как&amp;nbsp;отображать процесс загрузки файла, с помощью &lt;b&gt;&lt;i&gt;ProgressBar&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Создаем пустой проект, добавляем на форму компонент &lt;b&gt;&lt;i&gt;IdHTTP&lt;/i&gt;&lt;/b&gt; (вкладка &lt;b&gt;Indy Clients&lt;/b&gt;), &lt;b&gt;&lt;i&gt;Button&lt;/i&gt;&lt;/b&gt; и в обработчик события &lt;b&gt;OnClick&lt;/b&gt; пишем:&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;// Указываем URL адрес файла в интернете
UnicodeString URL_DOWNLOAD ="";

// Под каким названием сохраниться загруженный файл
UnicodeString FILE_NAME = ""; 

// Создаем указатель на поток для работы файлами
// Ключ fmCreate - означает, что будет создан новый (пустой) файл, если файл с указанным названием уже существует, он будет открыть в режиме чтения. А ключ fmOpenWrite - откроет файл для записи.
TFileStream* FILE_STREAM = new TFileStream(FILE_NAME, fmCreate | fmOpenWrite); 

// Отправляем запрос GET на указанный URL с файлом, если сервер нам вернет ответ
// Пустой файл будет занимать столько же места, сколько и загружаемый файл, но в процессе загрузки он будет постепенно дописываться
IdHTTP1-&amp;gt;Get(URL_DOWNLOAD, FILE_STREAM);

// После завершения загрузки, освобождаем память
delete FILE_STREAM;
&lt;/pre&gt;
Теперь можно попробовать загрузить файл из интернета, укажем в&lt;br /&gt;
&lt;i&gt;URL_DOWNLOAD&lt;/i&gt; = " http://ardownload.adobe.com/pub/adobe/reader/win/10.x/10.0.1/en_US/AdbeRdr1001_en_US.exe";&lt;br /&gt;
&lt;i&gt;FILE_NAME&lt;/i&gt; = "AdbeRdr1001_en_US.exe";&lt;br /&gt;
&amp;nbsp;Так же можно создать функцию для автоматического определения названия файла ...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Запускаем программу, нажимаем на кнопку, если все заработало, программа повиснет. И будет висеть до завершения загрузки. Но есть способ обойти зависание и в этом нам поможет компонент &lt;b&gt;&lt;i&gt;IdAntiFreeze&lt;/i&gt;&lt;/b&gt; (вкладка &lt;b&gt;Indy Misc&lt;/b&gt;), добавляем компонент на форму и тестируем нашу программу.

Если все заработало, отобразим процесс загрузки. Добавим компонент &lt;b&gt;&lt;i&gt;ProgressBar&lt;/i&gt;&lt;/b&gt; (вкладка &lt;b&gt;Win32&lt;/b&gt;).
Теперь создадим два обработчика событий для компонента &lt;b&gt;&lt;i&gt;IdHTTP&lt;/i&gt;&lt;/b&gt;, первый - &lt;b&gt;OnWorkBegin
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;void __fastcall TForm1::IdHTTP1WorkBegin(TObject *ASender, TWorkMode AWorkMode,__int64 AWorkCountMax){
    ProgressBar1-&amp;gt;Max = AWorkCountMax;
}
&lt;/pre&gt;
во второй обработчик - &lt;b&gt;OnWork
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;void __fastcall TForm1::IdHTTP1Work(TObject *ASender, TWorkMode AWorkMode,__int64 AWorkCount){
    ProgressBar1-&amp;gt;Position = AWorkCount;
}
&lt;/pre&gt;
Как видим, все просто!&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD3zVHVPdFPqJg5rstqoHOvPTnfdVYgma3jDvHvtDeNGgmXsuXTKS56mjk41mg0TEDF6JJbP_7EZKlWr3LwzW71-bCkBq7g7yte4QxREtyTapRx0-l5Dm3Tsk4w4ItQUxF8DqQw02NRvz3/s72-c/download+from+web.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Как правильно компилировать программу</title><link>http://codup.blogspot.com/2011/01/blog-post.html</link><category>Builder</category><pubDate>Mon, 3 Jan 2011 17:22:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-7757531701991593263</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://s002.radikal.ru/i199/1101/c2/0bb996dcb079.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://s002.radikal.ru/i199/1101/c2/0bb996dcb079.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Как же сделать что б программы запускались не только на наших компьютерах?&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Создаем любую программу например:&amp;nbsp;&lt;a href="http://codup.blogspot.com/2010/05/blog-post_4670.html"&gt;Программу калькулятор&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Не забываем &lt;b&gt;&lt;i&gt;сохранять &lt;/i&gt;&lt;/b&gt;программы в отдельные папки, выбираем &lt;b&gt;File &lt;/b&gt;- &lt;b&gt;Save Project As...&lt;/b&gt;&lt;br /&gt;
Теперь подготовим наш проект к релизу, настройки проекта&amp;nbsp;находятся&amp;nbsp;в пункте меню &lt;b&gt;Project &lt;/b&gt;- &lt;b&gt;Options...&lt;/b&gt; и сейчас мы рассмотрим некоторые из них.&lt;br /&gt;
&lt;b&gt;Directories and Conditionals&lt;/b&gt; -&amp;gt; &lt;b&gt;Final output direcory&lt;/b&gt; &amp;nbsp;- Здесь можно задать место хранения нашего&amp;nbsp;откомпилированного&amp;nbsp;проекта.&lt;br /&gt;
&lt;br /&gt;
Иконку исполняемого файла можно установить во вкладке &lt;b&gt;Application&lt;/b&gt;.&lt;br /&gt;
Версию и описания проекта в &lt;b&gt;Version Info&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Что бы программа запускалась на других компьютерах где не установлен &lt;b&gt;Builder &lt;/b&gt;достаточно убрать галочку из &lt;b&gt;Packages&lt;/b&gt; -&amp;gt;&amp;nbsp; &lt;b&gt;Build with runtimes packages&lt;/b&gt; и установить &lt;b&gt;C++ Linker&lt;/b&gt; -&amp;gt; &lt;b&gt;Dynamic RTL&lt;/b&gt; в &lt;b&gt;False&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Когда все&amp;nbsp;настроено компилируем проект &lt;b&gt;Project&lt;/b&gt; - &lt;b&gt;Make&amp;nbsp;Project&lt;/b&gt; и&amp;nbsp;&lt;b&gt;Project &lt;/b&gt;- &lt;b&gt;Builde Project&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Все, готово, можно рассылать свою программу друзьям!</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>С Новым 2011 Годом!</title><link>http://codup.blogspot.com/2010/12/2011.html</link><category>Holiday</category><pubDate>Sat, 1 Jan 2011 00:00:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-8810808785504159888</guid><description>&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfra4_TztKxiSh9UeU5iah_FXWJS1g0VIgF0npcFJWYSQvc3SAkYfujTC3srorT6rgT-JtXlfWBkUzjQg7kmcVS9zBE53yJI-1ZNZrZR5M3GnbveqkjpeSa5peBXwImpTRzYDdcwzOXa9a/s1600/rabbit.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="143" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfra4_TztKxiSh9UeU5iah_FXWJS1g0VIgF0npcFJWYSQvc3SAkYfujTC3srorT6rgT-JtXlfWBkUzjQg7kmcVS9zBE53yJI-1ZNZrZR5M3GnbveqkjpeSa5peBXwImpTRzYDdcwzOXa9a/s200/rabbit.png" width="200" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans', arial, sans-serif; font-size: 16px; font-weight: bold;"&gt;С Новым 2011 Годом!&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="hP" id=":l4" style="padding-right: 10px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans', arial, sans-serif; font-size: 13px;"&gt;&amp;nbsp;Мы благодарим Вас за поддержку в уходящем году!&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans', arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans', arial, sans-serif; font-size: 13px;"&gt;&amp;nbsp;Желаем Вам в 2011 году успешного достижения всех поставленных целей,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans', arial, sans-serif; font-size: 13px;"&gt;крепкого здоровья, устойчивого финансового достатка, жизненного&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans', arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans', arial, sans-serif; font-size: 13px;"&gt;везения и удачи.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfra4_TztKxiSh9UeU5iah_FXWJS1g0VIgF0npcFJWYSQvc3SAkYfujTC3srorT6rgT-JtXlfWBkUzjQg7kmcVS9zBE53yJI-1ZNZrZR5M3GnbveqkjpeSa5peBXwImpTRzYDdcwzOXa9a/s72-c/rabbit.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Как отправить письмо</title><link>http://codup.blogspot.com/2010/12/blog-post.html</link><category>Builder</category><category>WeB</category><category>Компоненты</category><pubDate>Sat, 4 Dec 2010 19:03:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-173083521904811242</guid><description>&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSciNEZB5K5UiY8L4LgWLgO42YQGeVeF1tSNssjaGENl02iCb3QwuRbp4NEoLqJMfT1ElO8hLkCdIh3Sxi-twwp3XEzpSus_WfCd4xYaAg7HCo4vb-bmPeDHyuWaTHRm0z8tGu-P4anXIQ/s1600/mail_replied.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSciNEZB5K5UiY8L4LgWLgO42YQGeVeF1tSNssjaGENl02iCb3QwuRbp4NEoLqJMfT1ElO8hLkCdIh3Sxi-twwp3XEzpSus_WfCd4xYaAg7HCo4vb-bmPeDHyuWaTHRm0z8tGu-P4anXIQ/s1600/mail_replied.png" /&gt;&lt;/a&gt;Самый простой способ отправить письмо при помощи &lt;b&gt;С++ Builder&lt;/b&gt; - воспользоваться стандартными компонентами &lt;i&gt;&lt;b&gt;idSMTP &lt;/b&gt;&lt;/i&gt;(&lt;b&gt;Indy Clients&lt;/b&gt;), &lt;i&gt;&lt;b&gt;IdMessage &lt;/b&gt;&lt;/i&gt;(На вкладке &lt;b&gt;Indy Misc&lt;/b&gt;).&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
Создадим новый проект &lt;u&gt;VCL Forms Apllication&lt;/u&gt;, на форму добавим несколько компонентов как показано на рисунку, три &lt;i&gt;&lt;b&gt;Edit'a&lt;/b&gt;&lt;/i&gt;, &lt;i&gt;&lt;b&gt;idSMTP &lt;/b&gt;&lt;/i&gt;(На вкладке &lt;b&gt;Indy Clients&lt;/b&gt;), &lt;i&gt;&lt;b&gt;IdMessage &lt;/b&gt;&lt;/i&gt;(&lt;b&gt;Indy Misc&lt;/b&gt;), &lt;b&gt;Memo&lt;i&gt;&lt;/i&gt;&lt;/b&gt; и &lt;i&gt;Button&lt;b&gt;&lt;/b&gt;&lt;/i&gt;.
Создим событие для &lt;b&gt;Form1&lt;/b&gt; - &lt;b&gt;OnCreate&lt;/b&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;void __fastcall TForm1::FormCreate(TObject *Sender) {
/*
Yandex.ru - smtp.yandex.ru - работает
Mail.ru - smtp.mail.ru - не проверял
Google.com - smtp.gmail.com - уже не работает
*/
 IdSMTP1-&amp;gt;Host = "smtp.yandex.ru"; // Адрес почтового сервера
/*
Yandex.ru -25
Mail.ru - 25
Google.com - 465
*/
 IdSMTP1-&amp;gt;Port = 25; //Используемый порт
 IdSMTP1-&amp;gt;Username = "test"; // Пишем  логин от почты
 IdSMTP1-&amp;gt;Password = "123321"; // и пароль к нему
}
&lt;/pre&gt;
Создаем событие для &lt;b&gt;Button1 - OnClick&lt;/b&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;void __fastcall TForm1::Button1Click(TObject *Sender) {
 IdMessage1-&amp;gt;From-&amp;gt;Text = Edit1-&amp;gt;Text;
 IdMessage1-&amp;gt;Recipients-&amp;gt;EMailAddresses = Edit2-&amp;gt;Text;
 IdMessage1-&amp;gt;Subject = Edit3-&amp;gt;Text;
 IdMessage1-&amp;gt;Body-&amp;gt;Text = Memo1-&amp;gt;Text;

 IdSMTP1-&gt;Connect();
 if (IdSMTP1-&gt;Connected())
  IdSMTP1-&amp;gt;Send(IdMessage1);
 else
  IdSMTP1-&amp;gt;Disconnect();
}
&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMXKUqk5hv7URFMNVypIodLaNPM4Xnz5t3tSJi8gQqz_CHyAMe4M7kG1nFJazkPErVYpJmd4KF5vC5_CP95uu6UHj8ZH0i392yj9rcM-MjuFlDQ-UKskyefc7pCvo8Bs9Tz66xvScX2VXO/s1600/sendmail1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMXKUqk5hv7URFMNVypIodLaNPM4Xnz5t3tSJi8gQqz_CHyAMe4M7kG1nFJazkPErVYpJmd4KF5vC5_CP95uu6UHj8ZH0i392yj9rcM-MjuFlDQ-UKskyefc7pCvo8Bs9Tz66xvScX2VXO/s320/sendmail1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вот так просто можно отправлять письма используя &lt;b&gt;Builder C++&lt;/b&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSciNEZB5K5UiY8L4LgWLgO42YQGeVeF1tSNssjaGENl02iCb3QwuRbp4NEoLqJMfT1ElO8hLkCdIh3Sxi-twwp3XEzpSus_WfCd4xYaAg7HCo4vb-bmPeDHyuWaTHRm0z8tGu-P4anXIQ/s72-c/mail_replied.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">28</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Создаем программу калькулятор</title><link>http://codup.blogspot.com/2010/05/blog-post_4670.html</link><category>Компоненты</category><category>Синтаксис</category><pubDate>Thu, 25 Nov 2010 00:33:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-2439539446069267101</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqEBAObFJSjOycUyemVRhilDNoKu4k_H4msByiXCkLwrhcmkt1GSAsrxiyxyjvIeoQLNRDOVHk-j_tHeiNJzq6tQ-a9lQaxRcLKWCOHS3OPzIbrfoc4JdLSzux_B2uDiNqoSjQFlCKcrXZ/s1600/calculator.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqEBAObFJSjOycUyemVRhilDNoKu4k_H4msByiXCkLwrhcmkt1GSAsrxiyxyjvIeoQLNRDOVHk-j_tHeiNJzq6tQ-a9lQaxRcLKWCOHS3OPzIbrfoc4JdLSzux_B2uDiNqoSjQFlCKcrXZ/s320/calculator.png" /&gt;&lt;/a&gt;&lt;/div&gt;
С помощью этого калькулятора мы научимся:
&lt;br /&gt;
Использовать функции &lt;b&gt;ввода-вывода&lt;/b&gt; числовых данных.
&lt;br /&gt;
Немного поработаем с объектами &lt;b&gt;&lt;i&gt;Label&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;Edit&lt;/i&gt;&lt;/b&gt;.
&lt;br /&gt;
И самое главное, выполнять математические вычисления в программе!! 
(представим что мы этого не умели).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;Ввод и вывод числовых данных&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;Когда мы в программе ссылаемся на свойство определенного объекта, то эта ссылка должна состоять из двух частей: имени объекта (&lt;b&gt;&lt;i&gt;Label1&lt;/i&gt;&lt;/b&gt;) и названия свойства (&lt;b&gt;&lt;i&gt;Caption&lt;/i&gt;&lt;/b&gt;). Между этими двумя названиями ставится "-&amp;gt;". Изменение свойства происходит путем присваивания ему нового значение. Для этого используют оператор присваивания. Если присваивается текст, то берем его в двойные кавычки.&lt;br /&gt;
&amp;nbsp;В &lt;b&gt;C++ Builder&lt;/b&gt; мы все данные будем вводить в текстовое поле, поэтому все данные интерпретируются системой, как текст, даже когда они являются числами. Поэтому мы будем использовать функции для перевода текста в числовые данные.&lt;br /&gt;
Например:&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;X = StrToInt(t); //Превращает текстовую величину t в числовую
X = StrToInt(Edit1-&amp;gt;Text); //В программе аргументом выступает свойство объекта, например свойство текста объекта Edit1.
&lt;/pre&gt;
&amp;nbsp;Когда введенные пользователем данные будут преобразованы в числовые и над ними будут выполнены все операции, возникает проблема вывода результата, то есть обратная задача перевести числовую информацию в текстовую для последующего вывода ее на экран. Для этого используются вторая стандартная функция IntToStr.
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Label1-&amp;gt;Caption = IntToStr(t); //Выводить результат в текстовое поле Caption
Edit1-&amp;gt;Text = IntToStr(t); // Выводить результат в текстовое поле Edit
&lt;/pre&gt;
&lt;b&gt;Переходим к написанию программы&lt;/b&gt;&lt;br /&gt;
Открываем нами полюбивший C++ Builder и приступаем к написанию нашего калькулятора.&lt;br /&gt;
1. Сначала набросаем на нашу форму несколько компонентов, 3 - &lt;b&gt;&lt;i&gt;Label'a&lt;/i&gt;&lt;/b&gt;, 3 - &lt;b&gt;&lt;i&gt;Edit'a&lt;/i&gt;&lt;/b&gt;, и аж 10 - &lt;i&gt;&lt;b&gt;Button's&lt;/b&gt;&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJZYwu48PY0X1nF1UosdMbPkqAcJ5H3Wps8IKGJjOOV_6GpsSOojc73hrCpGvePHZxzDTML0K3QjlA2spzOEhC2degxguFTMWXD74f_ypb5X1bCYQt3MG2fi01HZ49X13HS5roZaaPID1K/s1600/calc10.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJZYwu48PY0X1nF1UosdMbPkqAcJ5H3Wps8IKGJjOOV_6GpsSOojc73hrCpGvePHZxzDTML0K3QjlA2spzOEhC2degxguFTMWXD74f_ypb5X1bCYQt3MG2fi01HZ49X13HS5roZaaPID1K/s320/calc10.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Красиво разместим наши компоненты и переименуем их (в свойстве &lt;i&gt;&lt;b&gt;Caption&lt;/b&gt;&lt;/i&gt; в &lt;b&gt;инспекторе объектов&lt;/b&gt;).&lt;br /&gt;
Когда все оформлено, научим наш калькулятор считать.&lt;br /&gt;
В первые два &lt;i&gt;&lt;b&gt;Edit'a&lt;/b&gt;&lt;/i&gt; мы будем вводить &lt;b&gt;числа&lt;/b&gt;.&lt;br /&gt;
Хочу заметить что когда мы будем выводить: корень, квадрат, sin, cos. Нам второе &lt;i&gt;&lt;b&gt;Edit&lt;/b&gt;&lt;/i&gt; вообще не понадобиться.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Выбираем кнопку "+" и в событие OnClick прописываем такой код:
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Edit3-&amp;gt;Text = IntToStr(StrToInt(Edit1-&amp;gt;Text) + StrToInt(Edit2-&amp;gt;Text));
&lt;/pre&gt;
Где мы с начало преобразовываем введенные данные в поля Edit1-&amp;gt;Text и Edit2-&amp;gt;Text из текстового в числовой тип данных (Функцыей StrToInt). Когда данные находятся в числовом типе, над ними можно выполнять математические действия (В данном случае мы их суммируем). После суммирования полученные данные переводим в текстовый тип (Функцыей IntToStr).&lt;br /&gt;
4. Для остальных кнопок создаем такие же события:&lt;br /&gt;
&lt;b&gt;Отнимаем:
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Edit3-&amp;gt;Text = IntToStr(StrToInt(Edit1-&amp;gt;Text) - StrToInt(Edit2-&amp;gt;Text));
&lt;/pre&gt;
&lt;b&gt;Умножаем:
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Edit3-&amp;gt;Text = IntToStr(StrToInt(Edit1-&amp;gt;Text) * StrToInt(Edit2-&amp;gt;Text));
&lt;/pre&gt;
&lt;b&gt;Делим:
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Edit3-&amp;gt;Text = IntToStr(StrToInt(Edit1-&amp;gt;Text) / StrToInt(Edit2-&amp;gt;Text));
&lt;/pre&gt;
Остальные операции выполняются только над первым числом.&lt;br /&gt;
&lt;b&gt;Корень:
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Edit3-&amp;gt;Text = IntToStr(sqrt(StrToInt(Edit1-&amp;gt;Text)));
&lt;/pre&gt;
&lt;b&gt;Квадрат:
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Edit3-&amp;gt;Text = IntToStr(StrToInt(Edit1-&amp;gt;Text) * StrToInt(Edit1-&amp;gt;Text));
&lt;/pre&gt;
&lt;b&gt;Косинус:&lt;/b&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Edit3-&amp;gt;Text = IntToStr(cos(StrToInt(Edit1-&amp;gt;Text)));
&lt;/pre&gt;
&lt;b&gt;Синус:
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Edit3-&amp;gt;Text = IntToStr(sin(StrToInt(Edit1-&amp;gt;Text)));
&lt;/pre&gt;
А также запрограммируем вспомогательные кнопки:&lt;br /&gt;
&lt;b&gt;Очистить:
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Edit1-&amp;gt;Text = "0";
Edit2-&amp;gt;Text = IntToStr(0); //Желательно такого не делать 
&lt;/pre&gt;
&lt;b&gt;Закрыть:
&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;Form1-&amp;gt;Close();
&lt;/pre&gt;
И так мы завершили копипастить и получили на самом деле работающий калькулятор! Даже больше, плюс к этому калькулятору и его ограниченному набору функций прилагается огромное количество багов!! Таких как:&lt;br /&gt;
При вводе слишком большое число - ошибка.&lt;br /&gt;
Когда ввели вместо числа другой символа и выполним какое то действие (умножим) - ошибка.&lt;br /&gt;
К тому же наш калькулятор не умеет работать с числами с плавающей точкой.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Но все же это наш калькулятор!&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt; И со временем мы избавимся от багов.&lt;/span&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqEBAObFJSjOycUyemVRhilDNoKu4k_H4msByiXCkLwrhcmkt1GSAsrxiyxyjvIeoQLNRDOVHk-j_tHeiNJzq6tQ-a9lQaxRcLKWCOHS3OPzIbrfoc4JdLSzux_B2uDiNqoSjQFlCKcrXZ/s72-c/calculator.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">13</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Знакомство с реестром</title><link>http://codup.blogspot.com/2010/11/windows.html</link><category>Windows</category><pubDate>Tue, 9 Nov 2010 08:39:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-8727033942195916096</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 10px; margin-left: 10px; margin-right: 10px; margin-top: 10px;"&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://dn1.tune-up.com/images/products/tuneup-utilities/features/registry_defrag_128x128.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://dn1.tune-up.com/images/products/tuneup-utilities/features/registry_defrag_128x128.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Всем знаком реестр&amp;nbsp;&lt;b&gt;Windows&lt;/b&gt;. Этакая общая база для операционки и ее приложений. В принципе большинство программистов копались с реестром, у некоторых нормально обошлось, у других не очень. Но это неважно. Главное, всегда делать резервную копию. Вот о них мы и поговорим.&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
В общем случае пользователь редактирует реестр с помощью утилиты&amp;nbsp;&lt;b&gt;regedit&lt;/b&gt;. Она запускается легче всего через Пуск-Выполнить..., где в окне впечатывается regedit. После этого Вашему взору должно предстать что-то вроде этого:&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKz9w0akkeuggkXqu8RfhLADWCTINfTSMi-tx9papmm76QaOkk0KVrPA8KfmJyIfQNebWWCXxlyMG6PYbYepud9WcMfwtaLRVkCBEQHTBQheuC3MUXnR6akVBRNyX9SqgfJfN1iKZvVEcZ/s1600/regedit1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKz9w0akkeuggkXqu8RfhLADWCTINfTSMi-tx9papmm76QaOkk0KVrPA8KfmJyIfQNebWWCXxlyMG6PYbYepud9WcMfwtaLRVkCBEQHTBQheuC3MUXnR6akVBRNyX9SqgfJfN1iKZvVEcZ/s400/regedit1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
В левой части иерархическая структура реестра - разделы, подразделы. Как видно, он имеет иерархическую структуру. В принципе это похоже на окно проводника. В левой части окна видны параметры. У каждого раздела есть параметр по имени "По умолчанию" или в английской версии "Default". Я, когда в первый раз это услышал, удивился - как же программы смогут считывать его значение, если в разноязычных версиях у него разные имена? Однако выяснилось, что это регедит как бы облегчает пользователям жизнь - настоящее имя параметра "". На самом деле интернационально ;).&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
В реестре есть шесть главных разделов - HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOACAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG, HKEY_DYN_DATA. Я их юуду называть сокращенно, например HKLM означает HKEY_LOCAL_MACHINE. HKCR содержит информацию в основном о файлах, документах OLE и прочем. В нем хранятся такие полезные вещи, как информация о файле по расширению - иконка по умолчанию, контекстное меню, команда выполнения по двойному щелчку.&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
HKCU хранит информацию о текущем пользователе. Если не ошибаюсь, этот раздел строится динамически по загрузке Windows. В нем, как и в HKLM и HKU, есть раздел Software/CLASSES, содержащий практически ту же информацию, что и HKCR. Раздел HKLM, как и положено по названию, хранит информацию об установленных программах и его настройках.&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
HKU - информация, относящаяся ко всем пользователям. Несмотря на, казалось бы, ответственную функцию, в его раздел .Default обычно кидают программы всякую дрянь, которую в другие места бросить стыдно.&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
HKCC содержит, как понятно, информацию и текущей конфигурации. Правда, у обычных пользователей эта конфигурация обычно одна, но неважно. Вообще в этом разделе ничего интересного практически нет, поскольку если с другими разделами копаться более-менее безопасно, то здесь я делать это не рекомендую.&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
HKDD - раздел, который строится динамически по мере загрузки Windows. В NT 2000 через него можно было что-то поменять, а в 9x в нем хранятся в основном PnP настройки и все в таком роде. Этот раздел частично создается из других.&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
В общем-то это и есть иерархия знаменитого реестра. В C++Builder довольно унифицированная система управления реестром, через специальный класс TRegistry. Работа с реестром в основном заключается в считывании определеннных параметров и их записи и создания и удаления разделов. Этот класс все это позволяет. Нужно сказать, что значения параметров в реестре могут быть строкового, двоичного и типа double word. Последний эквивадентен int.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKz9w0akkeuggkXqu8RfhLADWCTINfTSMi-tx9papmm76QaOkk0KVrPA8KfmJyIfQNebWWCXxlyMG6PYbYepud9WcMfwtaLRVkCBEQHTBQheuC3MUXnR6akVBRNyX9SqgfJfN1iKZvVEcZ/s72-c/regedit1.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>На старт, внимание</title><link>http://codup.blogspot.com/2010/04/hello-world.html</link><category>Builder</category><category>Компоненты</category><pubDate>Fri, 5 Nov 2010 21:28:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-2742003630089110053</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM1jKOxUcaABhjTFHJzYVrGT0C0FHf9TCAxwXnbB-k2vr0QVHTszGN59Is-hvfoxrKqDZRXvHF_kqPjRSAEn2AhlTSQO4z7U-Ico65FZuAUEw5TyDoyGDOLZF561zizbPEEz4xDJ6_C1iT/s1600/Start.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM1jKOxUcaABhjTFHJzYVrGT0C0FHf9TCAxwXnbB-k2vr0QVHTszGN59Is-hvfoxrKqDZRXvHF_kqPjRSAEn2AhlTSQO4z7U-Ico65FZuAUEw5TyDoyGDOLZF561zizbPEEz4xDJ6_C1iT/s320/Start.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;b&gt;Создаем первую программу в C++ Builder.&lt;/b&gt; &lt;br /&gt;
По традиции каждое знакомство с языком программирования начинаться с создания программы, выводящие на экран &lt;b&gt;"Hello World"&lt;/b&gt;. Я хотел сделать что то другое, но традиция есть традицией.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;Учимся работать с компонентами.&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;Если вам не терпится поскорее создать собственную программу, скоро мы
этим займемся.&lt;br /&gt;
&lt;b&gt;Компонент &lt;/b&gt;— это кусочек вашей программы, выполняющий некоторую задачу, например, отображение текста, окно редактирование с ними вы познакомились в прошлых статьях. Компоненты могут быть &lt;b&gt;визуальными &lt;/b&gt;и &lt;b&gt;не визуальными&lt;/b&gt;. &lt;br /&gt;
&amp;nbsp;&lt;b&gt;Визуальный компонент&lt;/b&gt; — это элемент управления, например: &lt;i&gt;кнопка &lt;/i&gt;или &lt;i&gt;список&lt;/i&gt;, с которым пользователь нашей программы будет взаимодействовать.&lt;br /&gt;
&amp;nbsp;С &lt;b&gt;не визуальными компонентами&lt;/b&gt; во время работы программы пользователь взаимодействовать не может. Они предназначены для программирования вещей, не относящихся к видимому на экране интерфейсу, например для управления встроенными часами программы (обычно называемыми &lt;i&gt;таймером&lt;/i&gt;), для подключения к Интернету и т. д. Кроме того, не визуальные компоненты иногда служат для создания сложных элементов управления, например &lt;i&gt;меню&lt;/i&gt;, структуру которого удобнее готовить с помощью специального Мастера, содержащегося в компоненте &lt;i&gt;Меню&lt;/i&gt;.&lt;br /&gt;
&lt;b&gt;Делаем нашу первую программу.&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;Сейчас у вас должен быть запущен C++ Builder, создаем новый проект &lt;b&gt;File-New-VCL Forms Application&lt;/b&gt;. На экране должна появиться пустая форма. По умолчанию ей присваивается имя &lt;i&gt;Form1&lt;/i&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6vbd0D92iG7urP2aTp47UOV-7YGV3MOcFbJgjHfaX4SzYUnaXPStvHIYZgImdIS0l-uW4d5T1DnYqS3CDFvYs9wzOAyQavJvCtHLBR-sg-rPw7dbOweckLmIldPdbhO0t0UUK10uAyDf_/s1600/7.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6vbd0D92iG7urP2aTp47UOV-7YGV3MOcFbJgjHfaX4SzYUnaXPStvHIYZgImdIS0l-uW4d5T1DnYqS3CDFvYs9wzOAyQavJvCtHLBR-sg-rPw7dbOweckLmIldPdbhO0t0UUK10uAyDf_/s400/7.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;Расположенный слева инспектор объектов показывает свойства формы. Щелкните на своейство &lt;b&gt;Caption&lt;/b&gt; (Заголовок) если свойство отсутствует, прокрутите список в окне инспектора объектов, свойства расположены в алфавитном порядке.&lt;br /&gt;
1. Введите &lt;i&gt;"Hello World"&lt;/i&gt;, что бы изменить заголовок формы. Теперь щелкните по кнопке &lt;b&gt;Run&lt;/b&gt; (Запуск) на панели инструментов (кнопка с зеленой стрелкой). Вы так же можете нажать &lt;b&gt;F9&lt;/b&gt; или выбрать в меню &lt;b&gt;Run - Run&lt;/b&gt;.&lt;br /&gt;
&amp;nbsp;На экране появиться окно состояния компилятора, в котором вы сможете наблюдать, как С++ Builder обрабатывает необходимые файлы. Спустя не кторое время окно состояния компилятора исчезнет и на экране появиться наша форма с заголовком Hello World.&lt;br /&gt;
&amp;nbsp;Поздравляю вы только что написали вашу первую программу на C++ Builder. Ну хорошо, возможно, что написать Hello World в заголовке было слижком легко для нас. Давайте слегка исправим дел. Если на экране все еще запущена ваша программа, закройте ее. Чтобы сделать программу более реалистичной, мы разместим на ней несколько компонентов.&lt;br /&gt;
&amp;nbsp;Начнем с &lt;b&gt;Label &lt;/b&gt;(Текстовая метка), находиться она на &lt;b&gt;Палитре компонентов&lt;/b&gt; вкладке &lt;b&gt;Standart&lt;/b&gt;, если навести на неё курсор мыши появиться подсказка TLabel.&lt;br /&gt;
2. Щелкните на кнопку &lt;b&gt;Label&lt;/b&gt;, а затем в любом месте формы. Обратите внимание на инспектор объектов, он теперь показывает свойства объекта &lt;i&gt;Label1&lt;/i&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7-_gEGXj1vspF3BlnXeNYfwWxOUVIE-H_7g9GvnEiieWr2Iq7cKNfEHeKh2oLweiRWOY8y08zIW9waNiMus3jjnA3ZlbzYKkE4r9t9QamEMNpipO7AD1Lo2M2uC4RZEDKh0k9el92fQAI/s1600/8.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7-_gEGXj1vspF3BlnXeNYfwWxOUVIE-H_7g9GvnEiieWr2Iq7cKNfEHeKh2oLweiRWOY8y08zIW9waNiMus3jjnA3ZlbzYKkE4r9t9QamEMNpipO7AD1Lo2M2uC4RZEDKh0k9el92fQAI/s320/8.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
3. В свойства &lt;b&gt;Caption&lt;/b&gt; пропишем &lt;i&gt;"Привет"&lt;/i&gt;.&lt;br /&gt;
4. Создадим еще один &lt;b&gt;Label &lt;/b&gt;на форме и в &lt;b&gt;Caption &lt;/b&gt;пропишем &lt;i&gt;"Bonjour"&lt;/i&gt;, изменим размер текста.&lt;br /&gt;
5. Чуть ниже найдем свойство &lt;b&gt;Font&lt;/b&gt;, щелкните дважды на свойстве, появиться знакомое диалоговое окно в котором происходит форматирования текста, выставить размер, цвет, стиль шрифта на свое усмотрение, я поставил:&lt;br /&gt;
&lt;b&gt;Цвет &lt;/b&gt;- &lt;i&gt;красный&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;Размер &lt;/b&gt;- &lt;i&gt;28&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;Шрифт &lt;/b&gt;- &lt;i&gt;Tekton Pro Cond&lt;/i&gt;&lt;br /&gt;
Если хотите можете наставить еще несколько текстовых меток и немного поэкспериментировать как это сделал я.&lt;br /&gt;
&amp;nbsp;На этом просто примере вы могли убедиться что писать программы с помощью C++ Builder легко и просто.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Пока все 
выглядит достаточно легко, не так ли?&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM1jKOxUcaABhjTFHJzYVrGT0C0FHf9TCAxwXnbB-k2vr0QVHTszGN59Is-hvfoxrKqDZRXvHF_kqPjRSAEn2AhlTSQO4z7U-Ico65FZuAUEw5TyDoyGDOLZF561zizbPEEz4xDJ6_C1iT/s72-c/Start.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Создание дочерней формы</title><link>http://codup.blogspot.com/2010/11/blog-post_09.html</link><category>Builder</category><pubDate>Thu, 28 Oct 2010 10:14:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-4972194901100640136</guid><description>&lt;br /&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
Во многих приложениях существует многооконный интерфейс. Все формы, визуально разрабатываемые в среде, являются потомками класса&amp;nbsp;&lt;b&gt;TForm&lt;/b&gt;. Команда для создания новой формы -&amp;nbsp;&lt;b&gt;File-&amp;gt;New Form&lt;/b&gt;.&lt;/div&gt;
&lt;div style="font-family: arial; font-size: 12px; margin-left: 1em; margin-right: 1em; text-align: justify;"&gt;
В приложении существует главная форма, автоматически создаваемая при запуске и закрывающая приложение при своем закрытии, и дочерние формы, которые могут статически существовать в приложении или динамически создаваться во время работы программы. Эти установки задаются по команде&amp;nbsp;&lt;b&gt;Project-&amp;gt;Options&lt;/b&gt;&amp;nbsp;на вкладке&amp;nbsp;&lt;b&gt;Forms&lt;/b&gt;.&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Маленький текстовый редактор</title><link>http://codup.blogspot.com/2010/11/blog-post.html</link><category>Builder</category><category>Синтаксис</category><pubDate>Fri, 15 Oct 2010 15:37:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-312089311908043966</guid><description>&lt;br /&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp0F9-NmtTViMb9CMsV7d4UTkFeFnzaUInIy_DQLhfGukA7m1txhEQWGSzKwuHYnaz8vbJD1fmKXsxALW5vZpZUdF9ne944OuvvkJrcJXLgJhBFk5biMDLHfqqxsXOug-n588JyIawGlxK/s1600/text-editor_128x128.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp0F9-NmtTViMb9CMsV7d4UTkFeFnzaUInIy_DQLhfGukA7m1txhEQWGSzKwuHYnaz8vbJD1fmKXsxALW5vZpZUdF9ne944OuvvkJrcJXLgJhBFk5biMDLHfqqxsXOug-n588JyIawGlxK/s1600/text-editor_128x128.png" /&gt;&lt;/a&gt;Теперь мы для примера попробуем сделать простой текстовой редактор, с меню Файл и ... без ничего! Минимализм.
Сначала пустую форму, как обычно. &lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Затем&amp;nbsp;перетащите компоненты &lt;i&gt;&lt;b&gt;TMainMenu&lt;/b&gt;&lt;/i&gt;  и &lt;b&gt;&lt;i&gt;TMemo&lt;/i&gt;&lt;/b&gt;  на форму.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Также с вкладки Dialogs возьмите компоненты &lt;b&gt;&lt;i&gt;TOpenDialog &lt;/i&gt;&lt;/b&gt; и &lt;b&gt;&lt;i&gt;TSaveDialog &lt;/i&gt;&lt;/b&gt;.


Отредактируем меню. Для этого нужно два раза щелкнуть по &lt;b&gt;&lt;i&gt;TMainMenu&lt;/i&gt;&lt;/b&gt;.
Откроется Дизайнер меню. Введите названия пунктов в свойство &lt;b&gt;&lt;i&gt;Caption&lt;/i&gt;&lt;/b&gt;. Жмите &lt;b&gt;Enter &lt;/b&gt;для создания нового пункта. Чтобы создать горячую клавишу, в &lt;b&gt;Caption &lt;/b&gt;перед ней поставьте символ &lt;b&gt;"&amp;amp;"&lt;/b&gt;.
Чтобы создать подменю, жмите &lt;b&gt;Ctrl+Right&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Для задания обработчиков событий нужно, как обычно, два раза щелкнуть по пункту меню.
Лучше задать понятные имена - &lt;i&gt;&lt;u&gt;Open&lt;/u&gt;&lt;/i&gt;, &lt;i&gt;&lt;u&gt;Save &lt;/u&gt;&lt;/i&gt;и &lt;u&gt;&lt;i&gt;Exit&lt;/i&gt;&lt;/u&gt;. Для &lt;b&gt;&lt;i&gt;TMemo &lt;/i&gt;&lt;/b&gt;установите свойство &lt;i&gt;Align&lt;/i&gt; в &lt;i&gt;alClient&lt;/i&gt;, а &lt;i&gt;ScrollBars &lt;/i&gt;в &lt;i&gt;ssBoth&lt;/i&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;#include &amp;lt;iostream.h&amp;gt;
void __fastcall TForm1::ExitClick(TObject *Sender){
 Close();
}
//-----------------------------------------------------------------

void __fastcall TForm1::OpenClick(TObject *Sender){
 if (OpenDialog1-&amp;gt;Execute())
  Memo1-&amp;gt;Lines-&amp;gt;LoadFromFile(OpenDialog1-&amp;gt;FileName);
}
//-----------------------------------------------------------------

void __fastcall TForm1::SaveClick(TObject *Sender){
 if (SaveDialog1-&amp;gt;Execute())
  Memo1-&amp;gt;Lines-&amp;gt;SaveToFile(SaveDialog1-&amp;gt;FileName);
}&lt;/pre&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp0F9-NmtTViMb9CMsV7d4UTkFeFnzaUInIy_DQLhfGukA7m1txhEQWGSzKwuHYnaz8vbJD1fmKXsxALW5vZpZUdF9ne944OuvvkJrcJXLgJhBFk5biMDLHfqqxsXOug-n588JyIawGlxK/s72-c/text-editor_128x128.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Использование Spliter и Panel</title><link>http://codup.blogspot.com/2010/06/spliter-panel.html</link><category>Builder</category><category>Компоненты</category><pubDate>Mon, 21 Jun 2010 13:26:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-9130859045771966591</guid><description>Если использовать только сплиттеры, то некоторые способы разбиения 
формы на части осуществить невозможно. Например, только сплиттерами 
невозможно добиться, чтобы у нас была одна область слева (по всей высоте
 формы) и 2 области друг над другом справа:&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;img alt="Форма с тремя областями" border="1" height="165" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/030_01.gif" width="329" /&gt;
Но это можно сделать с помщью сплиттеров и панелей.&lt;br /&gt;
Например, вот так:&lt;br /&gt;
Размещаем на форме панель, устанавливаем ее свойство Align в alLeft. 
Затем щелкаем на свободном месте формы и затем размещаем в нем сплиттер.
 Его свойство Align также устанавливаем в alLeft. Опять щелкаем на 
свободном месте формы и размещаем в нем вторйю панель. Для нее 
устанавливаем свойство Align в alClient. Таким образом мы получили две 
панели (слева и справа), разделенные сплиттером.&lt;br /&gt;
Теперь на левой панели размещаем memo, его свойство Align 
устанавливаем в alClient. На правой же панели сначала размещаем верхний 
memo (для него свойство Align устанавливаем в alTop), затем размещаем на
 этой же правой панели сплиттер (устанавливаем для него свойство Align в
 alTop) и, наконец, нижний memo - для него свойство Align устанавливаем в
 alClient.&lt;br /&gt;
После запуска программы получаем желаемое разбиение нашей формы.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент RadioButton</title><link>http://codup.blogspot.com/2010/06/radiobutton.html</link><category>Builder</category><category>Компоненты</category><pubDate>Sun, 20 Jun 2010 17:18:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-2681777308027111397</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Компонент &lt;b&gt;&lt;i&gt;RadioButton &lt;/i&gt;&lt;/b&gt;расположен на вкладке &lt;b&gt;Standard &lt;/b&gt;Палитры компонентов:&lt;br /&gt;
&lt;img src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/017_01.gif" /&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;div&gt;
Этот компонент предназначен для выбора между несколькими взаимоисключающими вариантами. Давайте для примера создадим форму с двумя группами&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;&amp;nbsp;на ней. В первой группе будет две&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;. &lt;br /&gt;
Эта группа будет отвечать за выбор противника в некотрой воображаемой компьютерной игре (человек или компьютер). Во второй группе будет три&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;. Она будет отвечать за уровень сложности игры (легкий, нормальный и сложный).&lt;br /&gt;
Сначала расположите на форме 2&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;. Свойство &lt;u style="font-weight: bold;"&gt;Caption&lt;/u&gt; для них установите в "человек" и "компьютер". Для создания второй группы расположите на форме компонет &lt;b&gt;&lt;i&gt;GroupBox &lt;/i&gt;&lt;/b&gt;с вкладки &lt;b&gt;Standard &lt;/b&gt;Палитры компонентов:&lt;br /&gt;
&lt;div&gt;
&lt;img src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/017_02.gif" /&gt;&lt;br /&gt;
Для свойства &lt;b&gt;&lt;u&gt;Caption&lt;/u&gt;&lt;/b&gt; компонета &lt;b&gt;&lt;i&gt;GroupBox &lt;/i&gt;&lt;/b&gt;установите значение "Уровень". Внутри этого компонента расположите три&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;. Измените их свойство &lt;u&gt;&lt;b&gt;Caption&lt;/b&gt;&lt;/u&gt; на "легкий", "нормальный" и "сложный" соответственно. Расположите их именно на компоненте &lt;i&gt;&lt;b&gt;GroupBox&lt;/b&gt;&lt;/i&gt;. То, что вы их расположили правильно, можно заметить по окну &lt;u&gt;Object TreeView&lt;/u&gt;:&lt;br /&gt;
&lt;img src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/017_03.gif" /&gt;&lt;br /&gt;
Если вы их расположили неправильно, то просто перетащите их мышкой в нужное место окна &lt;u&gt;Object TreeView&lt;/u&gt;.&lt;br /&gt;
&lt;div style="cursor: default;"&gt;
Теперь добавим код, который будет менять заголовок окна в зависимости от выбранных&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;. Для этого ледаем двойной щелчок на первой&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;&amp;nbsp;и в полученной заготовке пишем следующиий код&lt;span class="Apple-style-span" style="font-family: Verdana;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;TForm1::RadioButton1Click(TObject *Sender)
{
String s1, s2;
  if(RadioButton1-&amp;gt;Checked){
    s1="Человек";
  }
  if(RadioButton2-&amp;gt;Checked){
    s1="Компьютер";
  }
  if(RadioButton3-&amp;gt;Checked){
    s2="легкий";
  }
  if(RadioButton4-&amp;gt;Checked){
    s2="нормальный";
  }
  if(RadioButton5-&amp;gt;Checked){
    s2="сложный";
  }
  Form1-&amp;gt;Caption=s1+" | "+s2;
}&lt;/pre&gt;
Смысл кода понятен - в две переменные &lt;i&gt;s1&lt;/i&gt; и &lt;i&gt;s2&lt;/i&gt; мы записываем строки в зависимости от того, какая&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;&amp;nbsp;выбрана, после чего записываем &lt;i&gt;s1&lt;/i&gt; и &lt;i&gt;s2&lt;/i&gt; в &lt;i&gt;заголовок формы&lt;/i&gt;.&lt;br /&gt;
Этот код без изменений надо внести в обработчики щелчка каждой&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;&amp;nbsp;(вообще говоря правильнее было поступать не так, а сделать отдельную функцию и вызывать ее в обработчике щелчка каждой&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;).&lt;br /&gt;
Теперь при запуске программы форма будет получать соответствующий заголовок после выбора той или иной&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;:&lt;br /&gt;
&lt;img src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/017_04.gif" /&gt;&lt;br /&gt;
Вот еще несколько свойство компонента&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;:&lt;br /&gt;
Свойство &lt;b&gt;&lt;u&gt;Checked&lt;/u&gt;&lt;/b&gt;. Определяет, выбрана ли соответствующая радиокнопка (т. е. есть точка рядом с ней). Это свойство может быть установлено в &lt;i&gt;true &lt;/i&gt;только для одной&amp;nbsp;&lt;b&gt;&lt;i&gt;RadioButton&lt;/i&gt;&lt;/b&gt;&amp;nbsp;в группе.&lt;br /&gt;
Свойство &lt;b&gt;&lt;u&gt;Alignment&lt;/u&gt;&lt;/b&gt;. Определяет, где появляется надпись относительно радиокнопки - слева (&lt;i&gt;taLeftJustify&lt;/i&gt;), справа (&lt;i&gt;taRightJustify&lt;/i&gt;)&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент ImageList</title><link>http://codup.blogspot.com/2010/06/imagelist.html</link><category>Builder</category><category>Компоненты</category><pubDate>Sat, 19 Jun 2010 21:45:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-7356756363804696087</guid><description>&lt;a href="http://progs.biz/cppbuilder/cppbuilder/lessons/images/022_01.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="Компонент ImageList" border="0" height="76" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/022_01.gif" width="78" /&gt;&lt;/a&gt;Компонент ImageList предназначен для хранения набора однотипных 
изображений. Конечно, изображения можно хранить и по отдельности - но в 
наборе удобнее. ImageList можно рассматривать как массив изображений - в
 частности, к элементам такого набора вы можете обращаться по индексу.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Компонент ImageList расположен на вкладке Win32 Палитры компонентов:&lt;br /&gt;
Перенесите его на форму. Сейчас в нашем ImageList изображений нет. 
Давайте добавим несколько изображений. Для этого сделайте двойной щелчок
 на расположенном на форме компоненте ImageList1. Появится диалоговое 
окно для работы с изображениями. Естественно, что для добавления 
изображения используется кнопка Add. При нажатии на нее появляется 
стандартное окно для выбора файла. Выберите какой-нибудь bmp-файл с 
изображением размера 32 на 16. Естественно, что такой файл надо 
предварительно создать. В файле должно быть 2 изображения 16 на 16. 
Нажмите на кнопку Open. Так как у нас 2 изображения, то должно появится 
окно с вопросом, предлагающим разделить нашу картинку на две (на две, 
так как картинки должны быть квадратные). Отвечаем, естественно, да:&lt;br /&gt;
&lt;img alt="Окно с вопросом" border="1" height="129" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/022_02.gif" width="573" /&gt;
Теперь в нашем диалоговом окне появилось 2 изображения:&lt;br /&gt;
&lt;img alt="Диалоговое окно для работы с изображениями" border="1" height="277" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/022_03.gif" width="328" /&gt;
Назначение остальных кнопок понятно. Отметим все же, что удалять 
можно и отдельные изображения из загруженного файла - т. е. фактически 
из графического файла можно взять только нужные картинки.&lt;br /&gt;
Также отметьте себе, что изображения в диалоговом окне можно менять местами (перетаскиванием мышью).&lt;br /&gt;
Закройте диалоговое окно. Давайте теперь используем наш ImageList. 
Добавьте на форму компонент Image с вкладки Additional Палитры 
компонентов и обычную кнопку. В обработчик для щелчка по кнопке внесите 
следующий код:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cppbuilder"&gt;&lt;u&gt;void&lt;/u&gt; &lt;u&gt;__fastcall&lt;/u&gt; TForm1::Button2Click(TObject *Sender)
{
  &lt;u&gt;static&lt;/u&gt; &lt;u&gt;int&lt;/u&gt; index=0;
  &lt;em&gt;//Выводим очередное изображение в Image1.&lt;/em&gt;
  ImageList1-&amp;gt;GetBitmap(index, Image1-&amp;gt;Picture-&amp;gt;Bitmap);
  index++; &lt;em&gt;//Берем индекс следующей картинки.&lt;/em&gt;
  Invalidate(); &lt;em&gt;//Перерисовываем.&lt;/em&gt;
}&lt;/pre&gt;
Теперь если вы запустите программу и будете щелкать на кнопке, то в 
Image1 будут последовательно появляться изображения из ImageList1 - 
сначала с индексом 0, потом с индексом 1 и т. д. В приведенном фрагменте
 используется метод GetBitmap класса TImageList. Первым параметром он 
берет номер картинки из ImageList (нумерация идет с нуля), вторым - куда
 эта картинка пишется. У нас она пишется в Image1.&lt;br /&gt;
Вообще говоря довольно-таки много компонентов имеют свойство Images. 
Это свойство как раз и имеет тип ImageList. Например, если вы разместите
 на форме компонент MainMenu, то для этого свойства вы сможете выбрать 
все ImageList'ы:&lt;br /&gt;
&lt;img alt="Свойство Images" border="1" height="72" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/022_04.gif" width="182" /&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент Panel</title><link>http://codup.blogspot.com/2010/06/panel.html</link><category>Builder</category><category>Компоненты</category><pubDate>Fri, 18 Jun 2010 14:33:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-944212237317711883</guid><description>&lt;a href="http://progs.biz/cppbuilder/cppbuilder/lessons/images/029_01.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="Компонент Panel" border="0" height="56" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/029_01.gif" width="64" /&gt;&lt;/a&gt;Компонент Panel расположен на вкладке Standard Палитры компонентов:&lt;br /&gt;
Он предназначен для компоновки объектов в окне. Рассмотрим его основные свойства.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Основное его свойство - это Align. Оно отвечает, естественно, за то, 
как наша панель расположена в окне - прилеплена ли она, например, к 
верхнему или левому краю или же занимает всю клиентскую область окна. 
При этом при изменении размеров окна панель остается в определяемым этим
 свойством положении - т. е., например, если мы задали значение этого 
свойства в alRight, то при растягивании нашего окна по горизонтали 
панель все равно будет располагаться в правой части окна. Обратите 
внимание, что одно из значений этого свойства - это alClient. При 
задании этого значения панель будет занимать все оставшиеся место на 
форме. Например, если вы расположили на форме две панели и задали для 
них значения этого свойства в alLeft и alClient соотвественно, то первая
 панель будет располагаться в левой части формы (от верхнего края до 
нижнего), а вторая - занимать всю оставшуюся область. Причем при 
изменении размера окна такое расположение будет сохраняться.&lt;br /&gt;
Еще несколько полезных свойств панели отвечают за ее внешний вид. 
Например, свойства BevelInner и BevelOuter отвечают, как будет выглядеть
 граница нашей панели относительно своей внутренной и своей внешних 
частей. Например, если хотите, чтобы граница панели представляла из себя
 приподнятую границу, то эти два свойства надо установить в bvLowered и 
bvRaised соответственно. Если же мы хотим, чтобы панель выглядела как 
традиционная панель - безо всякой вдавленной внутренней части, то эти 
свойства устанавливаем в bvRaised и bvNone соответсвенно.&lt;br /&gt;
Еще одно свойство панели - это AutoSize. Оно если установить его в 
True, то панель будет стремится установить минимально возможный для себя
 размер. Так, например, если на панели ничего не расположено, то она 
примет нулевую ширину.&lt;br /&gt;
На панели могут располагаться другие компоненты. Все они будут 
храниться в коллекции Controls. Получить число элементов на панели можно
 через свойство ControlCount.&lt;br /&gt;
Вот пример кода, который делает все элементы на панели Panel1 невидимыми:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cppbuilder"&gt;&lt;u&gt;void&lt;/u&gt; &lt;u&gt;__fastcall&lt;/u&gt; TForm1::Button2Click(TObject *Sender)
{
  TControl *child;
  &lt;u&gt;int&lt;/u&gt; n = Panel1-&amp;gt;ControlCount;
  &lt;u&gt;for&lt;/u&gt;(&lt;u&gt;int&lt;/u&gt; i = 0; i &amp;lt; n; i++)
  {
    ((TControl*)Panel1-&amp;gt;Controls[i])-&amp;gt;Visible = &lt;u&gt;false&lt;/u&gt; ;
  }
}&lt;/pre&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент CheckBox</title><link>http://codup.blogspot.com/2010/06/checkbox.html</link><category>Builder</category><category>Компоненты</category><pubDate>Thu, 17 Jun 2010 15:11:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-2588698016793907056</guid><description>&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Компонент CheckBox распологается на вкладке Standard Палитры компонентов:&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;img alt="Компонент TCheckBox" border="1" height="55" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/016_01.gif" width="64" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Этот компонет предназначен для включения/выключения некоторого параметра. Например, на форме можно расположить CheckBox для отметки того, получены деньги за некоторый заказ или нет, или, например, для включения/выключения звуков в настройках некоторой программы.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Расположите этот компонент на форме. Для него основное свойство - это&amp;nbsp;&lt;strong&gt;State&lt;/strong&gt;. &lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Именно оно и отвечает за внешний вид нашего CheckBox'а. Это свойство может принимать одно из трех значений: cbChecked (галочка стоит), cbUnchecked (галочка не стоит) и cbGrayed (CheckBox находится в неопределенном состоянии). Обратите внимение, что у CheckBox'а может быть именно три состояния. Третье состояние CheckBox может иметь, например, при показе стиля выделенного текста в некотором текстовом редакторе - если часть текста, например, подчеркнута, а часть нет, то логично, чтобы CheckBox имел стиль cbGrayed. Вот так будет выглядеть CheckBox с состоянием cbGrayed:&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;img alt="Компонент TCheckBox " border="1" height="35" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/016_02.gif" width="94" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Если щелкать на компоненте, то он будет менять два своих состояния (с галочкой и без). Если же мы хотим, чтобы при щелчке он циклически менял три своих состояния, то необходимо установить его свойство&amp;nbsp;&lt;strong&gt;AllowGrayed&lt;/strong&gt;&amp;nbsp;в true.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Состояние компонента можно получить через его свойство&amp;nbsp;&lt;strong&gt;Checked&lt;/strong&gt;&amp;nbsp;логического типа. Если оно равно true, то TCheckBox отмечен, если false - то не отмечен.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
За надпись, расположенную рядом с квадратиком, отвечает свойство&amp;nbsp;&lt;strong&gt;Caption&lt;/strong&gt;.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Основное событие для компонента CheckBox - это&amp;nbsp;&lt;strong&gt;OnClick&lt;/strong&gt;. Оно, естественно, возникает при щелчке. Для добавления заготовки обработчика для этого события достаточно просто сделать на CheckBox'е двойной щелчок. Вот так, например, можно в заголовок формы вывести информацию о состоянии CheckBox'а:&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="cppbuilder" style="background-color: #eeeeee; cursor: default; font-family: Courier; font-size: 12px;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;u style="font-weight: bold; text-decoration: none;"&gt;void&lt;/u&gt; &lt;u style="font-weight: bold; text-decoration: none;"&gt;__fastcall&lt;/u&gt; TForm1::CheckBox1Click(TObject *Sender)
{
&lt;strong style="background-color: #cccccc; font-weight: bold;"&gt;  &lt;u style="font-weight: bold; text-decoration: none;"&gt;if&lt;/u&gt;(CheckBox1-&amp;gt;Checked)
  {
    Form1-&amp;gt;Caption="cheched";
  }
  &lt;u style="font-weight: bold; text-decoration: none;"&gt;else&lt;/u&gt;
  {
    Form1-&amp;gt;Caption="uncheched";
  }&lt;/strong&gt;
}&lt;/span&gt;&lt;/pre&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент HotKey</title><link>http://codup.blogspot.com/2010/06/hotkey.html</link><category>Builder</category><category>Компоненты</category><pubDate>Wed, 16 Jun 2010 12:38:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-8834495479723742309</guid><description>Компонент HotKey предназначен для назначения пользователем различных 
комбинация клавиш для выполнения той или иной команды (как правило, 
команды меню). Он расположен на вкладке Win32 Палитры компонентов:&lt;br /&gt;
&lt;img alt="Компонент HotKey" border="1" height="55" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/031_01.gif" width="101" /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Перенесите его на форму (оставьте его имя HotKey1 по умолчанию). 
Также добавьте на форму главное меню с подменю, в обработчике щелчка по 
подменю вставьте, например, показ messagebox'а:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cppbuilder"&gt;&lt;u&gt;void&lt;/u&gt; &lt;u&gt;__fastcall&lt;/u&gt; TForm1::MenuItem1Click(TObject *Sender)
{
    ShowMessage("!!!");
}&lt;/pre&gt;
Сейчас единственный способ выполнить действие для нашего пункта меню -
 это кликнуть на нем. Никаких комбинаций клавиш просто нет. А вот с 
помощью добавленного на форму компонента HotKey мы и предоставим 
пользователю такую возможность. Для этого добавьте еще на форму кнопку, в
 обработчике щелчка по ней напишите следующий код:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cppbuilder"&gt;&lt;u&gt;void&lt;/u&gt; &lt;u&gt;__fastcall&lt;/u&gt; TForm1::Button1Click(TObject *Sender)
{
  MenuItem1-&amp;gt;ShortCut = HotKey1-&amp;gt;HotKey;
}&lt;/pre&gt;
Тут мы просто присваиваем свойству ShortCut нашего пункта меню 
значенение свойства HotKey нашего элемента HotKey1. Потому что именно в 
свойство HotKey и запишется заданная пользователем на этапе работы 
программы некоторая комбинация клавиш.&lt;br /&gt;
Запускаем программу. Введем некоторую комбинацию клавиш в наш HotKey и
 нажмем на кнопку. Теперь при нажатии заданной пользователем комбинации 
клавиш и будет выполнятся команда пункта меню:&lt;br /&gt;
&lt;img alt="HotKey в работе" border="1" height="209" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/031_02.gif" width="163" /&gt;
Обратите внимание, что компонент HotKey можно использовать только для тех компонентов, у которых есть свойство ShortCut.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Разные MessageBox'ы</title><link>http://codup.blogspot.com/2010/06/messagebox.html</link><category>Builder</category><category>Компоненты</category><pubDate>Tue, 15 Jun 2010 17:07:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-8526219562776808217</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
На этом занятии мы рассмотрим два пособа вывода на экран окна сообщения - ShowMessage и MessageDlg. Первая из них позволяет вывести на экран простое окно сообщения, вторая - окно с дополнительными параметрами (несколько кнопок, иконка и др.)&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Обе эти функции выводят модальное окно.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Начнем с ShowMessage.&lt;br /&gt;
Вот сразу пример:&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="cppbuilder" style="background-color: #eeeeee; cursor: default; font-family: Courier; font-size: 12px;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;...
&lt;strong style="background-color: #cccccc; font-weight: bold;"&gt;ShowMessage("Ошибка!");&lt;/strong&gt;
...&lt;/span&gt;&lt;/pre&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Этот пример выведет, естественно, сообщение "Ошибка!". Никаких дополнительных параметров у функции ShowMessage нет - только текст вообщения.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
А вот функция MessageDlg позволяет задавать для выводимого окна сообщения ряд дополнительных параметров. Вот пример использования этой функции:&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="cppbuilder" style="background-color: #eeeeee; cursor: default; font-family: Courier; font-size: 12px;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;...
MessageDlg("Внимание!", mtInformation, TMsgDlgButtons() &amp;lt;&amp;lt; mbNo &amp;lt;&amp;lt; mbYes, 0);
...&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент StatusBar</title><link>http://codup.blogspot.com/2010/06/statusbar.html</link><category>Builder</category><category>Компоненты</category><pubDate>Mon, 14 Jun 2010 13:42:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-1315040236574211875</guid><description>Компонент StatusBar расположен на вкладке Win32 Палитры компонентов:&lt;br /&gt;
&lt;img alt="Компонент StatusBar" border="1" height="78" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/032_01.gif" width="76" /&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Разместите его на форме. Обычно на строке состояния располагаются 
несколько панелей. Наш пример не будет исключением из этого правила. 
Панели мы можем добавлять как динамически - по нажатию на кнопку, 
например, так и при разработке программы.&lt;br /&gt;
Для добавлении панели на этапе разработки программы выберите меню 
AddItem в контекстном меню панели состояния в окне Object TreeView:&lt;br /&gt;
&lt;img alt="Добавление панелей" border="1" height="183" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/032_02.gif" width="155" /&gt;
Другой способ добавления панелей к строке состояния - это нажатие на 
кнопку с многоточием для свойства Panels окна Object Inspector.&lt;br /&gt;
Для добавленной панели можно потом настраивать ее немногочисленные 
свойства в окне Object Inspector (например, такие, как текст (Text) или 
выравнивание (Alignment)).&lt;br /&gt;
Теперь посмотрим, как можно добавлять панели динамически. Добавьте на
 форму кнопку, в обработчике которой напишите следующий код:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cppbuilder"&gt;&lt;u&gt;void&lt;/u&gt; &lt;u&gt;__fastcall&lt;/u&gt; TForm1::Button1Click(TObject *Sender)
{
    &lt;em&gt;// Добавляем панель.&lt;/em&gt;
    StatusBar1-&amp;gt;Panels-&amp;gt;Add();
    &lt;em&gt;// Подсчитываем число панелей.&lt;/em&gt;
    &lt;u&gt;int&lt;/u&gt; count = StatusBar1-&amp;gt;Panels-&amp;gt;Count;
    &lt;em&gt;// Изменяем текст у последней панели.&lt;/em&gt;
    StatusBar1-&amp;gt;Panels-&amp;gt;Items[count - 1]-&amp;gt;Text = "Panel " + IntToStr(count - 1);
}&lt;/pre&gt;
Смысл должен быть понятен из комментариев. Результат будет приблизительно таким:&lt;br /&gt;
&lt;img alt="Окно с панелями" border="1" height="34" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/032_03.gif" width="229" /&gt;
Иногда нет необходимости разбивать строку состояния на панели. В этом
 случае мы не используем коллекцию Panels. Вот так, например, можно 
вывести некоторый текст в строку состояния:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="cppbuilder"&gt;&lt;u&gt;void&lt;/u&gt; &lt;u&gt;__fastcall&lt;/u&gt; TForm1::Button1Click(TObject *Sender)
{
    StatusBar1-&amp;gt;SimpleText = "Some Text";
}&lt;/pre&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент ComboBox</title><link>http://codup.blogspot.com/2010/06/combobox.html</link><category>Builder</category><category>Компоненты</category><pubDate>Sun, 13 Jun 2010 13:27:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-2461832923409159964</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Компонент &lt;b&gt;&lt;i&gt;ComboBox&lt;/i&gt;&lt;/b&gt; (комбинированный список) расположен на вкладке &lt;b&gt;Standard&lt;/b&gt; Палитры Компонентов.&amp;nbsp;Этот компонент по своим свойствам очень похож на компонент &lt;i&gt;ListBox&lt;b&gt;&lt;/b&gt;&lt;/i&gt;. &lt;br /&gt;
Методы и свойства он имеет почти те же самые. Самое важное из них - это, пожалуй, свойство &lt;b&gt;&lt;u&gt;Items&lt;/u&gt;&lt;/b&gt;. Именно в нем и хранятся все строки &lt;b&gt;ComboBox'а&lt;i&gt;&lt;/i&gt;&lt;/b&gt;. В отличных от &lt;b&gt;&lt;i&gt;ListBox'а&lt;/i&gt;&lt;/b&gt; компонент имеет свойство &lt;b&gt;&lt;u&gt;Text&lt;/u&gt;&lt;/b&gt;. Оно позволяет заглавный текст в &lt;b&gt;&lt;i&gt;ComboBox'е&lt;/i&gt;&lt;/b&gt; (т.е. то, что пользователь непосредственно видит).  Вот так, например, можно добавить напечатанный пользователем текст в &lt;b&gt;&lt;i&gt;ComboBox&lt;/i&gt;&lt;/b&gt;, добавим на форму &lt;b&gt;&lt;i&gt;ComboBox&lt;/i&gt;&lt;/b&gt; и &lt;b&gt;&lt;i&gt;Button&lt;/i&gt;&lt;/b&gt; в обработчике &lt;b&gt;OnClick&lt;/b&gt; напишем: &lt;br /&gt;
&lt;pre class="brush: cpp"&gt;void __fastcall TForm1::Button1Click(TObject *Sender) {
    ComboBox1-&amp;gt;Items-&amp;gt;Add(ComboBox1-&amp;gt;Text);
}
&lt;/pre&gt;Из полезных свойств отметим еще свойство &lt;b&gt;&lt;u&gt;style&lt;/u&gt;&lt;/b&gt;.  Возможные значения для него:&lt;br /&gt;
&lt;i&gt;csDropDown &lt;/i&gt;- &lt;b&gt;&lt;i&gt;ComboBox &lt;/i&gt;&lt;/b&gt;с возможностью редактирования&lt;br /&gt;
&lt;i&gt;csDropDownList &lt;/i&gt;- &lt;b&gt;&lt;i&gt;ComboBox &lt;/i&gt;&lt;/b&gt;без возможности редактирования, т. е. пользователь может выбирать только из существующих элементов&lt;br /&gt;
&lt;i&gt;csSimple &lt;/i&gt;и &lt;i&gt;другие&lt;/i&gt;.&lt;br /&gt;
При значении &lt;b&gt;&lt;u&gt;style&lt;/u&gt;&amp;nbsp;&lt;/b&gt;равным &lt;i&gt;csSimple &lt;b&gt;ComboBox&lt;/b&gt;&lt;/i&gt; будет выглядеть как компонент &lt;b&gt;&lt;i&gt;Edit&lt;/i&gt;&lt;/b&gt; и будет так же как и другие стили, иметь возможность авто дополнение введенного текста. Например наш &lt;b&gt;&lt;i&gt;ComboBox&lt;/i&gt;&lt;/b&gt; будет выглядеть так:&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ComboBox1-&amp;gt;Text = "Введите марку машины...";
    ComboBox1-&amp;gt;Items-&amp;gt;Add("Ford");
    ComboBox1-&amp;gt;Items-&amp;gt;Add("FIAT");
    ComboBox1-&amp;gt;Items-&amp;gt;Add("Dodge");
    ComboBox1-&amp;gt;Items-&amp;gt;Add("Mazda");
}
&lt;/pre&gt;После ввода в &lt;b&gt;&lt;i&gt;ComboBox&lt;/i&gt;&lt;/b&gt; буквы '&lt;i&gt;F&lt;/i&gt;', текст автоматически подставит '&lt;i&gt;ord&lt;/i&gt;', если же продолжить ввод и дописать букву '&lt;i&gt;I&lt;/i&gt;', к тексту будет добавляться '&lt;i&gt;AT&lt;/i&gt;', вот таким способом можно облегчать ввод данных пользователям ваших программ. &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">12</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Работаем с меню</title><link>http://codup.blogspot.com/2010/11/blog-post_8285.html</link><category>Builder</category><category>Компоненты</category><pubDate>Sat, 12 Jun 2010 18:37:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-3569817266539309995</guid><description>&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
&lt;a href="http://progs.biz/cppbuilder/cppbuilder/lessons/images/007_01.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="Компонент MainMenu" border="0" height="56" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/007_01.gif" width="61" /&gt;&lt;/a&gt;Два ближайших занятия будут посвящены работе с меню. На этом занятии мы посмотрим, как можно применять компонент MainMenu, на следующем - PopupMen. Первый из них представляет главное меню формы, второй - контекстное меню.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Компонент MainMenu расположен на вкладке Standard Палитры компонентов.&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Сделайте на нем двойной щелчок для переноса его на форму. Где он будет на форме располагаться - неважно, при запуске программы наше меню все равно будет там, где ему и положено быть - наверху нашей формы.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Посмотрим сейчас, как мы можем добавлять в наше меню пункты разных видов. Для этого сделайте двойной щелчок на расположенном на форме компоненте MainMenu1. Откроется форма, в которой вы сможете создать пункты нашего меню визуальным образом. Для этого надо просто напечатать заголовок в пустом прямоугольнике. Заголовок - это свойство Caption для нашего пункта меню (это видно в окне Инспектора объектов). Если щелкнуть мышкой на прямоугольнике с пунктом меню, то появятся два новых пустых прямоугольника - снизу и справа:&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;img alt="Редактор меню" border="1" height="80" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/007_02.gif" width="154" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
В эти прямоугольники можно напечатать очередные пункты нашего меню.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Часто у подпунктов меню есть свои подпункты. Для создания такого подпункта щелкните правой кнопкой мыши на нужном пункте меню и в контектном меню выберите Create Submenu:&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;img alt="Создание подменю" border="1" height="191" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/007_03.gif" width="239" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
При необходимости у созданных подменю можно создавать собственные подменю и т. д. Но особенно этим увлекаться не следует - слишком большая вложенность обычно не нужна.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Для создания заготовки обработчика для пункта меню достаточно на нем сделать двойной щелчок мышкой.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
У меню может быть картинка (за это отвечает свойство Bitmap), оно может быть активным и неактивным (свойство Enabled). Правильнее картинки задавать не отдельно для каждого пункта меню, а с помощью компонента ImageList, представляющего из себя набор картинок. В этом случае в свойство Images для всего меню записываем имя компонента ImageList (по умолчанию это будет ImageList1), и затем для каждого пункта меню задаем свойство ImageIndex, которое и будет задавать номер картинки из ImageList. А еще правильнее делать все это через компонент ActionList.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Кроме того несколько пунктов меню могут объединяться в группу. Для такого объединения вы должны, во-первых, задать для всех этих пунктов меню одинаковое значение свойства GroupIndex. Во-вторых, необходимо установить у каждого из них свойство RadioItem в true. И в-третьих, надо написать код, который будет устанавливать отметку рядом с выбранным пунктом меню. За это отвечает свойство Checked. Код, например, может быть таким:&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class="cppbuilder" style="background-color: #eeeeee; cursor: default; font-family: Courier; font-size: 12px;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;u style="font-weight: bold; text-decoration: none;"&gt;void&lt;/u&gt; &lt;u style="font-weight: bold; text-decoration: none;"&gt;__fastcall&lt;/u&gt; TForm1::Subitem1Click(TObject *Sender)
{
&lt;strong style="background-color: #cccccc; font-weight: bold;"&gt;  Subitem1-&amp;gt;Checked=&lt;u style="font-weight: bold; text-decoration: none;"&gt;true&lt;/u&gt;;&lt;/strong&gt;
  &lt;em style="color: #663399;"&gt;//Действия при выборе первого пункта меню&lt;/em&gt;
  ...
}
...
&lt;u style="font-weight: bold; text-decoration: none;"&gt;void&lt;/u&gt; &lt;u style="font-weight: bold; text-decoration: none;"&gt;__fastcall&lt;/u&gt; TForm1::Subitem2Click(TObject *Sender)
{
&lt;strong style="background-color: #cccccc; font-weight: bold;"&gt;  Subitem2-&amp;gt;Checked=&lt;u style="font-weight: bold; text-decoration: none;"&gt;true&lt;/u&gt;;&lt;/strong&gt;
  &lt;em style="color: #663399;"&gt;//Действия при выборе первого пункта меню&lt;/em&gt;
  ...
}&lt;/span&gt;&lt;/pre&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Обратите внимание, что если некоторому пункту меню установиь свойство Checked в true, то у остальных пунктов из этой же группы оно автоматически установится в false. Теперь при выборе пункта меню из группы рядом с ним появится точка:&lt;/div&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;img alt="Группа меню" border="1" height="80" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/007_04.gif" width="189" /&gt;&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент ListBox</title><link>http://codup.blogspot.com/2010/06/listbox.html</link><category>Builder</category><category>Компоненты</category><pubDate>Sat, 12 Jun 2010 17:49:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-3424161217389546838</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Компонент ListBox (список) расположен на вкладке Standard Палитры Компонентов.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Сейчас мы с вами рассмотрим стандартные операции, которые можно делать с ListBox'ом - добавление новых пунктов, их удаление, поиск нужного пункта, очистка всего ListBox'а и др.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Пункты для нашего ListBox'а хранятся в его свойстве Items. Для задания этого свойства на этапе разработки щелкните на многоточии рядом с ним в Инспекторе объектов:&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Появится диалоговое окно String List Editor, в котором вы и добавляете нужные вам элементы списка.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Если же вам надо добавить новый пункт на этапе работы программы, то надо воспользоваться методом Add упомянутого свойства Items:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;ListBox1-&amp;gt;Items-&amp;gt;Add("New String");
&lt;/pre&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Этот метод добавит новый элемент в конец списка. Если же нам надо добавить новый элемент куда-нибудь в середину, то используем метод Insert:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;ListBox1-&amp;gt;Items-&amp;gt;Insert(1,"Alex");
&lt;/pre&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Для очистки всего списка вызываем метод Clear:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;ListBox1-&amp;gt;Items-&amp;gt;Clear();
&lt;/pre&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Если нам надо удалить i-й элемент ListBox'а, то мы используем метод delete:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;ListBox1-&amp;gt;Items-&amp;gt;Delete(1);
&lt;/pre&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Нумерация элементов списка идет с нуля, так что указанный пример удалит второй сверху элемент (номер у которого будет равен одному).&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Определить выделенный элемент списка позволяет свойство ItemIndex. Оно представляет из себя номер выделенного элемента (нумерация идет с нуля). Если ни один элеимент не выделен, то это свойство равно -1. Вот так, например, будет выглядеть код, который при шелчке на ListBox'е покажет в MessageBox'е номер элемента, на ктором был произведен щелчок:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
  ShowMessage(IntToStr(ListBox1-&amp;gt;ItemIndex));
}
&lt;/pre&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Если вам надо, чтобы в ListBox'е пользователь имел возможность выделить сразу несколько элментов, то установите свойство MultiSelect в true (по умолчанию оно равно false).&lt;/div&gt;
&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент Edit</title><link>http://codup.blogspot.com/2010/11/edit.html</link><category>Builder</category><category>Компоненты</category><pubDate>Fri, 11 Jun 2010 17:46:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-867765089760615317</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
&lt;a href="http://progs.biz/cppbuilder/cppbuilder/lessons/images/009_01.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="Компонент Edit" border="0" height="56" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/009_01.gif" width="41" /&gt;&lt;/a&gt;Компонент &lt;b&gt;&lt;i&gt;Edit&lt;/i&gt;&lt;/b&gt; предназначен для ввода текста. Расположен он на вкладке &lt;b&gt;Standard&lt;/b&gt; Палитры компонентов:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Основное его свойство - это &lt;b&gt;&lt;u&gt;Text&lt;/u&gt;&lt;/b&gt;. Оно позволяет читать и записывать некоторый текст в &lt;b&gt;Edit&lt;/b&gt;. Обратите внимание, что это свойство имеет строковый тип (вернее тип &lt;b&gt;&lt;i&gt;AnsiString&lt;/i&gt;&lt;/b&gt;, но сейчас это уточнение не столь важно). Это означает, что если пользователь вводит в edit некоторое число, то необходимо дополнительное преобразование. Делается это приблизитетльно так:&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;pre class="brush: cpp"&gt;int z= StrToInt(Edit1-&amp;gt;Text);&lt;/pre&gt;
&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Кроме функции &lt;b&gt;&lt;i&gt;StrToInt &lt;/i&gt;&lt;/b&gt;есть обратная к ней &lt;b&gt;&lt;i&gt;IntToStr&lt;/i&gt;&lt;/b&gt;. Они переводят строку в целое число и целое число в строку соответственно. Кроме этой пары функций имеется пара &lt;i&gt;&lt;b&gt;StrToFloat &lt;/b&gt;&lt;/i&gt;и &lt;b&gt;&lt;i&gt;FloatToStr&lt;/i&gt;&lt;/b&gt;, котрые работают с вещественными числами.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Основное событие для &lt;b&gt;edit'а&lt;/b&gt; - это &lt;b&gt;&lt;u&gt;Change&lt;/u&gt;&lt;/b&gt;. Возникает при изменении свойства &lt;b&gt;&lt;u&gt;Text&lt;/u&gt;&lt;/b&gt;.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Кроме того, часто используются такие события как &lt;b style="text-decoration: underline;"&gt;KeyPress&lt;/b&gt; (возникает при вводе каждого символа), &lt;b style="text-decoration: underline;"&gt;KeyDown&lt;/b&gt; и &lt;b style="text-decoration: underline;"&gt;KeyUp&lt;/b&gt; (возникают при нажатии и отпускании клавиши). Вот так, например, можно ограничить пользовательский ввод только символами из некоторого набора:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;amp;Key)
{
  if (Key!='a' &amp;amp;&amp;amp; Key!='b' &amp;amp;&amp;amp; Key!='c')
  {
    Key=0x0; //Обнуляем символ
    MessageBeep(-1); //Звуковой сигнал
  }
}
&lt;/pre&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
В этом примере пользователь сможет ввести только символы &lt;i&gt;a&lt;/i&gt;, &lt;i&gt;b&lt;/i&gt; и &lt;i&gt;c&lt;/i&gt;. При любом другом символе раздастся звуковой сигнал. Параметр &lt;b style="font-style: italic; text-decoration: underline;"&gt;Key&lt;/b&gt; тут передается по ссылке, что и позволяет нам изменить его. Событие &lt;b style="text-decoration: underline;"&gt;KeyPress&lt;/b&gt; возникает принажатии алфавитно-цифровых клавиш. Если же вам надо отследить нажатие других клавиш (например, &lt;b&gt;F1 &lt;/b&gt;или клавиш со стрелочками), то используйте события &lt;b style="text-decoration: underline;"&gt;KeyDown&lt;/b&gt; и &lt;b&gt;&lt;u&gt;KeyUp&lt;/u&gt;&lt;/b&gt;. Они, крроме того, позволяют определить нажатие клавиш-модификаторов (&lt;b&gt;Atl&lt;/b&gt;, &lt;b&gt;Ctrl &lt;/b&gt;и &lt;b&gt;Shift&lt;/b&gt;).&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Из полезных свойств отметим еще некоторые.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Свойство &lt;b&gt;&lt;u&gt;CharCase&lt;/u&gt;&lt;/b&gt;.&lt;br /&gt;
Возможные значения для него - &lt;b&gt;&lt;i&gt;&lt;u&gt;ecNormal &lt;/u&gt;&lt;/i&gt;&lt;/b&gt;(вводимый текст автоматически не преобразуется), &lt;b&gt;&lt;i&gt;&lt;u&gt;ecLowerCase &lt;/u&gt;&lt;/i&gt;&lt;/b&gt;(текст преобразуется к нижнему регистру) и &lt;b&gt;&lt;i&gt;&lt;u&gt;ecUpperCase &lt;/u&gt;&lt;/i&gt;&lt;/b&gt;(текст преобразуется к верхнему регистру).&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Свойство &lt;b&gt;&lt;u&gt;MaxLenght&lt;/u&gt;&lt;/b&gt;.&lt;br /&gt;
Задает максимально возможное число символов в &lt;b&gt;edit'е&lt;/b&gt;. По умолчанию равно &lt;b&gt;&lt;i&gt;&lt;u&gt;нулю&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;, что означает, что количество вводимых символов &lt;u&gt;&lt;i&gt;&lt;b&gt;не ограничено&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Свойство &lt;b&gt;&lt;u&gt;ParentFont&lt;/u&gt;&lt;/b&gt;.&lt;br /&gt;
Может принимать значение &lt;b style="font-style: italic; text-decoration: underline;"&gt;true&lt;/b&gt; (в &lt;b&gt;edit'е&lt;/b&gt; будет использоваться шрифт формы) и &lt;u style="font-style: italic; font-weight: bold;"&gt;false&lt;/u&gt; (&lt;b&gt;edit&lt;/b&gt; будет использоваться собственный шрифт).&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Свойство &lt;b&gt;&lt;u&gt;PasswordChar&lt;/u&gt;&lt;/b&gt;.&lt;br /&gt;
Позволяет задать символ-заменитель для ввода пароля. Чаще всего для этих целей используют звездочку. Свойство &lt;b&gt;&lt;i&gt;text &lt;/i&gt;&lt;/b&gt;при этом все равно будет содержать вводимый пользователем пароль.&lt;/div&gt;
&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Компонент ActionList</title><link>http://codup.blogspot.com/2010/11/actionlist.html</link><category>Builder</category><category>Компоненты</category><pubDate>Thu, 10 Jun 2010 18:36:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-3431873240238373216</guid><description>&lt;a href="http://progs.biz/cppbuilder/cppbuilder/lessons/images/006_01.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="Компонент ActionList" border="0" height="59" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/006_01.gif" width="70" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 12px;"&gt;Основное его предназначение - это хранение в одном месте некоторых действий, которые должны выполняться тем или иным способом.&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Компонент ActionList расположен на вкладке Standard Палитры компонентов:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
&amp;nbsp;Как правило, одно и тоже вы можете сделать разными способами - через пункт меню, нажатием на кнопку и тому подобное.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
При этом ваше действие может быть, скажем, временно недоступно - и в этом случае вы хотите, чтобы соответствующий пункт меню и соответствующая кнопка были недоступны. Так вот, если действие одно, а способов его выполнения много, то и надо использовать компонент ActionList. В этом случае обработчик пишется только в одном месте, и если вам, скажем, надо отключить возможность выполнения этого действия во всех местах или во всех местах изменить его название (например, со Start на Stop), то вам не придется изменять много мест в вашем коде - достаточно только внести изменения в соответствующее действие для ActionList'а.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Посмотрим на примере, как это делается. Разместите на форме компонент MainMenu, обычную кнопку и компонет ActionList. Свойство name оставьте для всех компонентов без изменений. Для меню создайте одно меню верхнего уровня с заголовком Actions и в нем одно подменю (для этого просто щелкните на компоненте MainMenu1 на нашей форме).&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Теперь добавим для компонента ActionList1 действие. Для этого сделайте на нем двойной щелчок. Появится окно Editing Form1-&amp;gt;ActionList1 специального редактора. Нажмите в нем на кнопку New Action. В правой части появится новое действие Action1:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;img alt="Добавление действия" border="1" height="115" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/006_02.gif" width="200" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Сделайте двойной щелчок на Action1 для перехлда в окно кода. В полученной заготовке добавьте следующую строку:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;
void __fastcall TForm1::Action1Execute(TObject *Sender)
{
  ShowMessage("Некоторое действие");
}
}
&lt;/pre&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Таким образом нашим действием просто будет появление MessageBox'а.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Теперь припишем наше действие к подпункту меню и кнопке. Для этого надо просто задать для них свойство Action (т. е. выбрать из ниспадающего списка Action1 - оно там будет одно):&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;img alt="Добавление действия к компонентам" border="1" height="63" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/006_03.gif" width="167" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Это надо сделать как для кнопки, так и для пункта меню.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Можно запустить программу и проверить - при выборе нашего пункта меню и нажатии на кнопке должен появиться MessageBox с надписью "Некоторое действие".&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Теперь посмотрим, как мы можем вносить одновременные изменения во все компоненты, связанные с нашим действием Action1. Для этого снова переходим в редактор для ActionList1 (для чего сделайте на расположенном на форме компонете ActionList1 двойной щелчок), выделяем наше действие Action1 и в Инспекторе объектов на вкладке Events делаем двойной щелчок на OnUpdate:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;img alt="Инспектор объектов" border="1" height="130" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/006_04.gif" width="189" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
В появившуюся заготовку для кода внесите следующие строки:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;
void __fastcall TForm1::Action1Update(TObject *Sender)
{
  if(b){
    ((TAction *)Sender)-&amp;gt;Caption = "New caption";
    ((TAction *)Sender)-&amp;gt;Enabled=false;
  }
}
&lt;/pre&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Что мы тут делаем? В зависимости от значения некоторой переменной b (которую мы еще добавим) мы меняем у нашего действия заголовок на "New caption" и делаем его отключенным.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Объявление переменной b добавьте в заголовочный файл нашей формы:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;
class TForm1 : public TForm
{
...
public:
  bool b;      
  ...
&lt;/pre&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Осталось еще где-то вызывать обновление нашего Action1. Например, это можно сделать при нажатии на вторую кнопку. Добавьте на форму вторую кнопку и в ее обработчик внесите следующий код:&lt;/div&gt;
&lt;pre class="brush: cpp"&gt;
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  b=true;
  //Обновляем Action1
  ActionList1-&amp;gt;Actions[0]-&amp;gt;Update();
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
После запуска программы и нажатии на вторую кнопку и у пункта меню, и у первой кнопки одновременно поменяется заголовок и они станут недоступны:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;img alt="Обновление меню и кнопки" border="1" height="112" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/006_05.gif" width="113" /&gt;&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>Работа с кнопками</title><link>http://codup.blogspot.com/2010/11/blog-post_11.html</link><category>Builder</category><category>Компоненты</category><pubDate>Tue, 25 May 2010 18:31:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-3873475268516076379</guid><description>&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Кнопка, наверное, является самым распространенным элементом пользовательского интерфейса. В C++ Builder'е существует несколько видов кнопок, которые мы сейчас и рассмотрим.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Самая простая кнопка - это, естественно, компонент Button:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;img alt="Button" border="1" height="58" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/005_01.gif" width="64" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
С ней, вобщем-то, ничего интересного нет. Кнопка как кнопка, и мы, скорей всего, рассматриваем ее здесь для полноты. На этом уроке давайте посмотрим, как сделать, чтобы кнопка оставалась всегда с правого края формы при изменении расмеров последней. Для этого нам надо у свойства Anchors поменять два подсвойства - подсвойство akLeft установить в false, а akRight - в true:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;img alt="Свойство Anchors" border="1" height="124" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/005_02.gif" width="164" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Все, теперь при изменении размеров формы кнопка останется прилепленной у правого края.&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Следующий вид кнопки - это BitBtn. Этот компонент расположен на вкладке Additional Палитры компонентов:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;img alt="Button" border="1" height="79" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/005_03.gif" width="72" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Эта кпопка представляет из себя кнопку с картинками, причем картинку вы можете использовать как свою, так и предопределенную (для значений OK, Cancel, No и других).&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Для использования одной из стандартных картикок вы должны задать свойство Kind. Примеры возможных значений для этого свойства - bkCancel, bkNo, bkAbort. Вот так, например, будет выглядеть наша кнопка со свойством Kind равным bkAbort:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;img alt="Кнопка Abort" border="1" height="43" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/005_04.gif" width="95" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Обратите внимание, что надпись на кнопке (свойство Caption) при этом автоматически установилось в Abort (но его, разумеется, можно поменять).&lt;/div&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
Если же мы хотим задать нашу картинку для кнопки, то свойство Kind мы устанавливаем в bkCustom (значение по умолчанию), а нуждую картинку загружаем в свойстве Glyph. После этого наша кнопка может выглядеть так:&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;img alt="Кнопка с картинкой" border="1" height="43" src="http://progs.biz/cppbuilder/cppbuilder/lessons/images/005_05.gif" width="98" /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; cursor: default; font-family: Verdana; font-size: 12px;"&gt;
За то, как наша картинка расположена относительно надписи на кнопке, отвечает свойсто Layout. Возможные значения для него - blGlyphLeft (по умолчанию), blGlyphRight, blGlyphBottom и blGlyphTop.&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TigerWiki)</author></item><item><title>ICQ через Google Talk</title><link>http://codup.blogspot.com/2010/04/icq-google-talk.html</link><category>ICQ</category><category>Jabber</category><category>WeB</category><pubDate>Sat, 15 May 2010 02:24:00 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7713188759670570564.post-5219764412309773058</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho2WfVEw51nCWpyUUwzP_7GnoHTG1u22RS7PzAtu_MY1rbw5yjiLXrls9v4E3XLdeEUnXAhyphenhyphen6OrUf_meOL3CVl6W-WeSkTvZnP3rcBUSPwNErxkDolso4ZQkclHudBwxH_yVw7Ck8Hk8rB/s1600/s3.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho2WfVEw51nCWpyUUwzP_7GnoHTG1u22RS7PzAtu_MY1rbw5yjiLXrls9v4E3XLdeEUnXAhyphenhyphen6OrUf_meOL3CVl6W-WeSkTvZnP3rcBUSPwNErxkDolso4ZQkclHudBwxH_yVw7Ck8Hk8rB/s200/s3.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
На самом деле вы можете создать другие комбинации, как &lt;b&gt;ICQ &lt;/b&gt;через &lt;b&gt;Jabber &lt;/b&gt;или &lt;b&gt;AIM, MSN &lt;/b&gt;через &lt;b&gt;GTalk&lt;/b&gt;, или&amp;nbsp; каких-либо услуг, которые работают через &lt;b&gt;Jabber - транспорты&lt;/b&gt;.&lt;br /&gt;
Но в этой статье я объясню как настроить &lt;b&gt;ICQ&lt;/b&gt; через &lt;b&gt;GTalk&lt;/b&gt;.&lt;br /&gt;
&lt;b&gt;Что мы получим?&lt;/b&gt;&lt;br /&gt;
В Google Talk перенесутся все контакты с ICQ.&lt;br /&gt;
История переписки будет сохраняться в почтовом ящике &lt;b&gt;Gmail&lt;/b&gt;, теперь не важно с чего вы общаетесь с мобильного с персонального компьютера, вся история будет находиться в одном месте.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;GTalk &lt;/b&gt; также поддерживает возможность осуществлять звонки с одного компьютера на другой.&lt;br /&gt;
Бесплатно звонить на телефоны SIP-операторов (с помощзью Gtalk2VoIP)&lt;br /&gt;
Возможность принимать входящие звонки с домашнего и мобильного телефона&lt;br /&gt;
&amp;nbsp;Нам понадобиться любой клиент поддерживающий регистрацию Jabber транспорта. Я покажу как импортировать контакты с &lt;b&gt;ICQ &lt;/b&gt;в &lt;b&gt;GTalk &lt;/b&gt;с помощью &lt;b&gt;QIP Infium&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Запускаем наш &lt;b&gt;QIP &lt;/b&gt;добавляем &lt;b&gt;Учётную запись Google Talk&lt;/b&gt;, вводим &lt;i&gt;логин &lt;/i&gt;и &lt;i&gt;пароль&lt;/i&gt;, жмем &lt;b&gt;ОК&lt;/b&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhxm4xDy5rCpb4SFp_AFXf2bZJha-e65iXXyvkKAa57-ny9tuEMZnNkAn6RR0lKlHpNaWI_mTwq9Uj58LqcodpOR0stiy7aw89nEnM7yTm1gwDQORT-q2iSdkrkezxHBXauvp-N36jdrsk/s1600/9.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhxm4xDy5rCpb4SFp_AFXf2bZJha-e65iXXyvkKAa57-ny9tuEMZnNkAn6RR0lKlHpNaWI_mTwq9Uj58LqcodpOR0stiy7aw89nEnM7yTm1gwDQORT-q2iSdkrkezxHBXauvp-N36jdrsk/s200/9.PNG" width="145" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; В &lt;b&gt;QIP'e&lt;/b&gt; появиться иконка &lt;b&gt;GTAlk&lt;/b&gt;.&lt;br /&gt;
Нажмем на нее и в контекстном меню выберем &lt;b&gt;Сервисы ... &lt;/b&gt;&lt;br /&gt;
Теперь приступим к поиску &lt;b&gt;Публичным Jabber транспорта&lt;/b&gt;, но сначала поговорим о их видах:&lt;br /&gt;
&lt;b&gt;JIT&lt;/b&gt; (Jabber ICQ transport)- не требует много ресурсов и работает стабильно, по этой причине его 
выбирают на многих серверах.&lt;br /&gt;
&lt;b&gt;PyICQ - &lt;/b&gt;умеет автоматически добавлять контакты из учетной записи ICQ в ростер, 
передавать аватары и статусные сообщения, в новой версии работает с X-статусами.&lt;br /&gt;
&lt;b&gt;Openfire ICQ plugin &lt;/b&gt;- В отличие от PyICQ и JIT она автоматически добавляет контакты, переименовывает их (даже если клиент не умеет это делать) и сортирует по группам. &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOHwC1rpAlNzs4m6ykiOtDikzweADwaARbT77e7JVCkXkhyglec9q0A5xow4gFl5EPRwhskjn28BE5QgYykqXsbyzaZMLzud1np3L3X8wYBss0Q9ErzrqjBg7LgkjRgdY7_5qTbTiA53fQ/s1600/10.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOHwC1rpAlNzs4m6ykiOtDikzweADwaARbT77e7JVCkXkhyglec9q0A5xow4gFl5EPRwhskjn28BE5QgYykqXsbyzaZMLzud1np3L3X8wYBss0Q9ErzrqjBg7LgkjRgdY7_5qTbTiA53fQ/s320/10.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;Вернемся в &lt;b&gt;QIP&lt;/b&gt; в окне сервисы в поле &lt;b&gt;JID&lt;/b&gt; введем наш ICQ транспорт - &lt;i&gt;icq.legion.ru&lt;/i&gt;&lt;br /&gt;
&amp;nbsp;Вызовем контекстное меню как на рисунке и выберем пункт &lt;b&gt;Регистрация&lt;/b&gt;.&lt;br /&gt;
Введем наш &lt;b&gt;UIN &lt;/b&gt;и &lt;b&gt;пароль&lt;/b&gt;.&lt;br /&gt;
После подтверждения в &lt;b&gt;GTalk &lt;/b&gt;лист начнут атаковать запросы на авторизацию&amp;nbsp; от всех ваших &lt;b&gt;ICQ &lt;/b&gt;контактов, после подтверждения вы сможете общаться с ними через &lt;b&gt;GTalk&lt;/b&gt;.&lt;br /&gt;
&lt;b&gt;Примечание:&lt;/b&gt; Если у пользователя контакт-лист ICQ содержит больше 50 контактов, после
 регистрации на транспорте только для 50-ти будут получены ники.&lt;br /&gt;
&lt;b&gt;Все!&amp;nbsp; &lt;/b&gt;Приятного общения.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho2WfVEw51nCWpyUUwzP_7GnoHTG1u22RS7PzAtu_MY1rbw5yjiLXrls9v4E3XLdeEUnXAhyphenhyphen6OrUf_meOL3CVl6W-WeSkTvZnP3rcBUSPwNErxkDolso4ZQkclHudBwxH_yVw7Ck8Hk8rB/s72-c/s3.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><author>noreply@blogger.com (TigerWiki)</author></item></channel></rss>