https://wiki.freepascal.org/api.php?action=feedcontributions&user=Alexrus&feedformat=atomLazarus wiki - User contributions [en]2024-03-28T21:44:39ZUser contributionsMediaWiki 1.35.6https://wiki.freepascal.org/index.php?title=File:scanto_mainform.png&diff=85776File:scanto mainform.png2015-01-17T13:03:16Z<p>Alexrus: Adds the command "Scan to ..." in the context menu Windows directory.
Добавляет команду "Сканировать в ..." в контекстное меню директорий Windows.</p>
<hr />
<div>Adds the command "Scan to ..." in the context menu Windows directory.<br />
<br />
Добавляет команду "Сканировать в ..." в контекстное меню директорий Windows.</div>Alexrushttps://wiki.freepascal.org/index.php?title=File:scantoprinter_mainform.png&diff=85771File:scantoprinter mainform.png2015-01-17T10:49:51Z<p>Alexrus: Scan from a TWAIN device and print.
Combines a scanner and printer into a photocopier.
Сканировариние TWAIN-устройством и распечатка.
Объединяет сканер и принтер в копировальный а</p>
<hr />
<div>Scan from a TWAIN device and print.<br />
Combines a scanner and printer into a photocopier.<br />
<br />
Сканировариние TWAIN-устройством и распечатка.<br />
Объединяет сканер и принтер в копировальный аппарат.</div>Alexrushttps://wiki.freepascal.org/index.php?title=File:scanto_mainform.JPG&diff=85189File:scanto mainform.JPG2014-12-28T11:15:10Z<p>Alexrus: Главное окно приложения Scanto https://sourceforge.net/projects/scanto/</p>
<hr />
<div>Главное окно приложения Scanto https://sourceforge.net/projects/scanto/</div>Alexrushttps://wiki.freepascal.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84911Заглавная страница2014-12-08T15:45:38Z<p>Alexrus: /* Загрузка */</p>
<hr />
<div>__NOTOC__<br />
{{Main Page}}<br />
= Добро пожаловать в базу знаний по Lazarus-CCR =<br />
<br />
== О проекте ==<br />
<br />
Этот сайт является базой знаний о Free Pascal, Lazarus и [[Связанные_проекты|родственных проектах]].<br />
<br />
Компилятор Free Pascal имеет хорошую документацию пользователя в нескольких форматах, но [[FPC_разработка|информация для разработчиков FPC, организационная информация]], а также [[Документация_FPC|недостаточно хорошо]] документированные темы находятся здесь.<br />
<br />
В то же время Lazarus имеет определенные пробелы в пользовательской документации. Поэтому эта область представляет собой «открытый документ», или "wiki", где каждый может добавлять и исправлять содержимое.<br />
<br />
Wiki позволяет изменять и дополнять содержимое сайта при помощи браузера! Посмотрите [http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 секундный урок обучения по Wiki] или [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Урок по Wikipedia]. Тренироваться в использовании Wiki можно в [[Песочница|песочнице]]. Если у вас возникли проблемы, обратитесь к [http://sourceforge.net/users/vlx/ администратору] или отправьте отчёт об ошибке на сайт [http://sourceforge.net/projects/lazarus-ccr Lazarus-CCR]. Замечания и предложения можно также оставить на нашей [[Site Feedback|странице обратной связи]].<br />
<br />
[[История|История]] проекта Lazarus.<br />
<br />
== Документация Free Pascal ==<br />
;[[Документация FPC|Документация FPC]]<br />
: Содержит информацию для разработчиков и всех причастных к разработке и поддержке компилятора Free Pascal: списки людей, занятых переводом на другие языки, организационная информация, процедуры выпуска FPC, списки ToDo и т. д.<br />
<br />
== Документация Lazarus ==<br />
;[[Документация_Lazarus|Документация Lazarus]]<br />
: Вся доступная документация и [[Документация_Lazarus#Руководства пользователя Lazarus|уроки]] для Lazarus IDE (включая руководство по Free Pascal Compiler) может быть найдена на странице [[Документация_Lazarus|Документация Lazarus]]. Большинство страниц ещё «в процессе работы», так что, пожалуйста, не стесняйтесь добавлять ваш опыт к ним. При желании можно также создать персональную страницу с контактной информацией.<br />
<br />
== Загрузка ==<br />
* Компилятор Free Pascal и текущая бета-версия Lazarus находится здесь: [http://sourceforge.net/project/showfiles.php?group_id=89339 Сайт Lazarus на Sourceforge].<br />
* Все доступные на данный момент компоненты и пакеты находятся здесь: [http://sourceforge.net/project/showfiles.php?group_id=92177 Проект Lazarus-CCR на Sourceforge].<br />
* Дополнительную документацию по компонентам можно найти на странице [[Компоненты и примеры кода]], если авторы компонента создали для него соответствующую страницу в Вики.<br />
* Исходный код компилятора, его сборки под различные платформы, а также дополнительную информацию и код можно найти на [http://www.freepascal.org/download.var странице загрузки Free Pascal Compiler] и на [http://lazarus.freepascal.org Официальном сайте Lazarus IDE].<br />
* Список сайтов для загрузки ежедневных сборок Lazarus находится [[Lazarus Snapshots Downloads | здесь]].<br />
<br />
== Рассылка ==<br />
Новые и продвинутые пользователи приглашаются в группу Lazarus-ccr [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-announce анонс] или [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-general главный] подписной лист.<br />
<br />
Возможно более полезной будет рассылка посвящённая IDE [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Lazarus] или рассылка анонсов разработчиков [http://www.freepascal.org/maillist.html FreePascal].<br />
<br />
== Кто и над чем работает? ==<br />
Если вы заняты портированием компонента или библиотеки, пожалуйста отправляйте их сюда [[Current conversion projects]]. Такие посты помогут другим разработчикам, которые хотят портировать нужные компоненты… и это предотвратит ситуацию когда два человека портируют один и тот же компонент.<br />
<br />
== Рекомендации, Ссылки и Ресурсы ==<br />
<br />
=== Lazarus IDE ===<br />
Новости и информация о развитии проекта находится на<br />
[http://lazarus.freepascal.org сайте Lazarus IDE]. Идеи, списки ToDo и прочие планы находятся [[Lazarus Development Process|здесь]]. Сборки Lazarus IDE и компилятора FreePascal, а также последние пакеты компилятора и IDE можно загрузить [http://sourceforge.net/project/showfiles.php?group_id=89339 отсюда].<br />
<br />
==== Активные проекты на Lazarus ====<br />
Наши текущие [[Projects using Lazarus|проекты с использованием Lazarus]] с общедоступными вебсайтами и ссылками для скачивания.<br />
<br />
Скриншоты приложений, созданных с использованием Lazarus, можно посмотреть в [[Lazarus Application Gallery|галерее приложений на Lazarus]].<br />
<br />
==== Хорошие сайты и ссылки ====<br />
Наша коллекция ссылок на сайты, посвящённые Delphi/Kylix, находится [[Page Of Code Sites|здесь]]. Пожалуйста, добавляйте туда ссылки на хорошие сайты, которые раньше не были отмечены в этом списке.<br />
<br />
==== Специализированные поисковые движки ====<br />
Есть несколько классных баз знаний и поисковых движков в сети которые могут оказать большую помощь в изучении новых приёмов программирования и решении проблем.<br />
Tamarack Associates обеспечивает быстрый [http://www.tamaracka.com/search.htm поисковый] движок специально для поиска по тематике Borland. Mer Systems Inc. предоставляет похожий [http://www.mers.com/searchsite.html движок].<br />
Другой классный источник информации, имеющий собственный [http://www.efg2.com/Lab/search.htm веб-поиск] — это электронная библиотека [http://www.efg2.com/ Earl F. Glynn’s Computer Lab and Reference].<br />
<br />
==== Маркетинговые примеры использования ====<br />
[[Marketing_Case_Studies|Возможность для пользователей Lazarus]] объяснить — почему, как и для чего они используют Lazarus IDE.<br />
<br />
==== Презентации FPC/Lazarus на выставках и участие в соревнованиях ====<br />
FPC/Lazarus были представлены на стенде на выставках [[Systems 2005]], [[Systems 2006]] и [[Systems 2007]] в г. Мюнхен. На основе полученного опыта была собрана [[Preparing a booth on a trade show|информация]] для облегчения подготовки выставочных стендов и презентаций в будущем. Lazarus и родственные проекты также принимали участие в различных соревнованиях, подготовлена [[Contests|информация]] для потенциальных участников будущих соревнований.<br />
<br />
<br />
<br />
=Авторство=<br />
Настоящее вступление создано [[User:VlxAdmin]].</div>Alexrushttps://wiki.freepascal.org/index.php?title=Components_and_Code_examples/ru&diff=84910Components and Code examples/ru2014-12-08T15:44:27Z<p>Alexrus: moved Components and Code examples/ru to Компоненты и примеры кода</p>
<hr />
<div>#REDIRECT [[Компоненты и примеры кода]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84908Заглавная страница2014-12-08T15:43:05Z<p>Alexrus: /* Документация Lazarus */</p>
<hr />
<div>__NOTOC__<br />
{{Main Page}}<br />
= Добро пожаловать в базу знаний по Lazarus-CCR =<br />
<br />
== О проекте ==<br />
<br />
Этот сайт является базой знаний о Free Pascal, Lazarus и [[Связанные_проекты|родственных проектах]].<br />
<br />
Компилятор Free Pascal имеет хорошую документацию пользователя в нескольких форматах, но [[FPC_разработка|информация для разработчиков FPC, организационная информация]], а также [[Документация_FPC|недостаточно хорошо]] документированные темы находятся здесь.<br />
<br />
В то же время Lazarus имеет определенные пробелы в пользовательской документации. Поэтому эта область представляет собой «открытый документ», или "wiki", где каждый может добавлять и исправлять содержимое.<br />
<br />
Wiki позволяет изменять и дополнять содержимое сайта при помощи браузера! Посмотрите [http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 секундный урок обучения по Wiki] или [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Урок по Wikipedia]. Тренироваться в использовании Wiki можно в [[Песочница|песочнице]]. Если у вас возникли проблемы, обратитесь к [http://sourceforge.net/users/vlx/ администратору] или отправьте отчёт об ошибке на сайт [http://sourceforge.net/projects/lazarus-ccr Lazarus-CCR]. Замечания и предложения можно также оставить на нашей [[Site Feedback|странице обратной связи]].<br />
<br />
[[История|История]] проекта Lazarus.<br />
<br />
== Документация Free Pascal ==<br />
;[[Документация FPC|Документация FPC]]<br />
: Содержит информацию для разработчиков и всех причастных к разработке и поддержке компилятора Free Pascal: списки людей, занятых переводом на другие языки, организационная информация, процедуры выпуска FPC, списки ToDo и т. д.<br />
<br />
== Документация Lazarus ==<br />
;[[Документация_Lazarus|Документация Lazarus]]<br />
: Вся доступная документация и [[Документация_Lazarus#Руководства пользователя Lazarus|уроки]] для Lazarus IDE (включая руководство по Free Pascal Compiler) может быть найдена на странице [[Документация_Lazarus|Документация Lazarus]]. Большинство страниц ещё «в процессе работы», так что, пожалуйста, не стесняйтесь добавлять ваш опыт к ним. При желании можно также создать персональную страницу с контактной информацией.<br />
<br />
== Загрузка ==<br />
* Компилятор Free Pascal и текущая бета-версия Lazarus находится здесь: [http://sourceforge.net/project/showfiles.php?group_id=89339 Сайт Lazarus на Sourceforge].<br />
* Все доступные на данный момент компоненты и пакеты находятся здесь: [http://sourceforge.net/project/showfiles.php?group_id=92177 Проект Lazarus-CCR на Sourceforge].<br />
* Дополнительную документацию по компонентам можно найти на странице [[Components and Code examples/ru | Компоненты и примеры кода]], если авторы компонента создали для него соответствующую страницу в Вики.<br />
* Исходный код компилятора, его сборки под различные платформы, а также дополнительную информацию и код можно найти на [http://www.freepascal.org/download.var странице загрузки Free Pascal Compiler] и на [http://lazarus.freepascal.org Официальном сайте Lazarus IDE].<br />
* Список сайтов для загрузки ежедневных сборок Lazarus находится [[Lazarus Snapshots Downloads | здесь]].<br />
<br />
== Рассылка ==<br />
Новые и продвинутые пользователи приглашаются в группу Lazarus-ccr [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-announce анонс] или [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-general главный] подписной лист.<br />
<br />
Возможно более полезной будет рассылка посвящённая IDE [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Lazarus] или рассылка анонсов разработчиков [http://www.freepascal.org/maillist.html FreePascal].<br />
<br />
== Кто и над чем работает? ==<br />
Если вы заняты портированием компонента или библиотеки, пожалуйста отправляйте их сюда [[Current conversion projects]]. Такие посты помогут другим разработчикам, которые хотят портировать нужные компоненты… и это предотвратит ситуацию когда два человека портируют один и тот же компонент.<br />
<br />
== Рекомендации, Ссылки и Ресурсы ==<br />
<br />
=== Lazarus IDE ===<br />
Новости и информация о развитии проекта находится на<br />
[http://lazarus.freepascal.org сайте Lazarus IDE]. Идеи, списки ToDo и прочие планы находятся [[Lazarus Development Process|здесь]]. Сборки Lazarus IDE и компилятора FreePascal, а также последние пакеты компилятора и IDE можно загрузить [http://sourceforge.net/project/showfiles.php?group_id=89339 отсюда].<br />
<br />
==== Активные проекты на Lazarus ====<br />
Наши текущие [[Projects using Lazarus|проекты с использованием Lazarus]] с общедоступными вебсайтами и ссылками для скачивания.<br />
<br />
Скриншоты приложений, созданных с использованием Lazarus, можно посмотреть в [[Lazarus Application Gallery|галерее приложений на Lazarus]].<br />
<br />
==== Хорошие сайты и ссылки ====<br />
Наша коллекция ссылок на сайты, посвящённые Delphi/Kylix, находится [[Page Of Code Sites|здесь]]. Пожалуйста, добавляйте туда ссылки на хорошие сайты, которые раньше не были отмечены в этом списке.<br />
<br />
==== Специализированные поисковые движки ====<br />
Есть несколько классных баз знаний и поисковых движков в сети которые могут оказать большую помощь в изучении новых приёмов программирования и решении проблем.<br />
Tamarack Associates обеспечивает быстрый [http://www.tamaracka.com/search.htm поисковый] движок специально для поиска по тематике Borland. Mer Systems Inc. предоставляет похожий [http://www.mers.com/searchsite.html движок].<br />
Другой классный источник информации, имеющий собственный [http://www.efg2.com/Lab/search.htm веб-поиск] — это электронная библиотека [http://www.efg2.com/ Earl F. Glynn’s Computer Lab and Reference].<br />
<br />
==== Маркетинговые примеры использования ====<br />
[[Marketing_Case_Studies|Возможность для пользователей Lazarus]] объяснить — почему, как и для чего они используют Lazarus IDE.<br />
<br />
==== Презентации FPC/Lazarus на выставках и участие в соревнованиях ====<br />
FPC/Lazarus были представлены на стенде на выставках [[Systems 2005]], [[Systems 2006]] и [[Systems 2007]] в г. Мюнхен. На основе полученного опыта была собрана [[Preparing a booth on a trade show|информация]] для облегчения подготовки выставочных стендов и презентаций в будущем. Lazarus и родственные проекты также принимали участие в различных соревнованиях, подготовлена [[Contests|информация]] для потенциальных участников будущих соревнований.<br />
<br />
<br />
<br />
=Авторство=<br />
Настоящее вступление создано [[User:VlxAdmin]].</div>Alexrushttps://wiki.freepascal.org/index.php?title=Talk:Lazarus_Documentation/ru&diff=84906Talk:Lazarus Documentation/ru2014-12-08T15:33:16Z<p>Alexrus: moved Talk:Lazarus Documentation/ru to Talk:Документация Lazarus</p>
<hr />
<div>Коллеги как вы думаете в какой раздел поместить статью http://wiki.freepascal.org/Size_Matters/ru? --[[User:Mr.Smart|Mr.Smart]] 22:30, 18 December 2009 (CET)<br />
<br />
- вот мне попалось в FAQ справа в этой странице [http://wiki.freepascal.org/Lazarus_Faq#Why_are_the_generated_binaries_so_big.3F big binaries], можно там дать ссылку, если соотвествующие FAQ есть на русском. Я тут только зарегился и не знаю пока как чего делать.<br />
<br />
--Добавил ссылку на [[Size Matters/ru]] с не большой правкой.--[[User:Mr.Smart|Mr.Smart]] 14:11, 4 April 2010 (CEST)</div>Alexrushttps://wiki.freepascal.org/index.php?title=Lazarus_Documentation/ru&diff=84904Lazarus Documentation/ru2014-12-08T15:33:15Z<p>Alexrus: moved Lazarus Documentation/ru to Документация Lazarus</p>
<hr />
<div>{{Lazarus Documentation}}<br />
<br />
==Учебники по Lazarus и Pascal==<br />
*[[Overview_of_Free_Pascal_and_Lazarus/ru|Описание Free Pascal и Lazarus]] - Краткое описание возможностей этих средств разработки;<br />
*[[Lazarus Tutorial/ru | Учебник Lazarus]] - Учебник для начинающих и детальное описание интерфейса Lazarus IDE;<br />
*[[Lazarus_IDE_Tools/ru|Инструменты IDE Lazarus]] - Учебник промежуточного уровня о кодах завершения и других инструментах IDE;<br />
*[http://freepascal.ru/article Статьи и учебники] - Русскоязычный портал, содержащий статьи и учебники по программированию в FPC, Lazarus;<br />
*[[Lazarus Database Tutorial/ru | Учебник Lazarus и Базы данных]] - Введение по работе Lazarus с базами данных;<br />
*[[Developing with Graphics/ru|Программирование графики]] - Несколько основных примеров программирования графики;<br />
*[[Object_Pascal_Tutorial/ru|Pascal Tutorial]] - [http://www.taoyue.com/ Tao Yue's] [http://www.taoyue.com/tutorials/pascal/ Pascal Tutorial] (размещен с разрешением);<br />
*[[Object Oriented Programming with FreePascal and Lazarus/ru | Объектно ориентированное программирование в FreePascal и Lazarus]] - Объектно-ориентированое программирование для начинающих;<br />
*[[Programming_with_Objects_and_Classes/ru|Программирование с помощью объектов и классов]] - Учебник по объектно-ориентированному программированию на FPC;<br />
*[[Console Mode Pascal/ru | Паскаль в консольном режиме]] - работа с интерфейсом Lazarus IDE для написания программ Pascal, работающих в консольном режиме;<br />
*[[Executing External Programs/ru | Запуск внешних программ]] - Краткое обучение по запуску внешних программ из разрабатываемой;<br />
*[[Multithreaded Application Tutorial/ru | Создание многопоточных приложений]] - Как разработать многопоточные приложения при помощи Free Pascal и Lazarus;<br />
*[[Manager Worker Threads System]] - Пример разработки приложения, управляющего поточной работой;<br />
*[[Streaming components]] - Как записать компоненты в потоки, а также читать и создавать компоненты из потоков;<br />
*[[OpenGL Tutorial/ru | Уроки OpenGL]] - Как работать с GLUT в Lazarus;<br />
*[[Creating bindings for C libraries]] - Как конвертировать файлы заголовка C (.h) в блоки Паскаля;<br />
*[[Lazarus/FPC Libraries/ru| Библиотеки в Lazarus/FPC]] - Как создавать и использовать динамические библиотеки (.so, .dll, .dylib); <br />
*[[Translations / i18n / localizations for programs/ru|Локализация приложений]] - Как получать локализованные версии разрабатываемых программ и пакетов<br />
*[[Daemons and Services/ru|Демоны и службы]] - Как разрабатывать службы windows и/или демоны linux.<br />
*[[Office Automation/ru | Взаимодействие с офисными приложениями]] - Как взаимодействовать с офисными программами и создавать электронные таблицы, текстовые документы, презентации, и т.д;<br />
*[[Lazarus Inline Assembler/ru|Как использовать встроенный Assembler]] - начальное руководство;<br />
*[[VirtualTreeview Example for Lazarus]] - Использование VirtualTreeview в Lazarus;<br />
*[http://aprendepascal.wikidot.com Programando en Pascal] - Испанский учебник по FPC/Lazarus, находящийся на Wikidot;<br />
*[[Multimedia_Programming/ru|Воспроизведение видео]] - Как проиграть видео;<br />
*[[Using the printer]] - Поддержка принтеров в Лазариусе;<br />
<br />
*[[LazDeviceAPIs]] - LCL модуль, предлагающий интерфейс для различных устройств, таких как Акселерометр, отправка SMS, GPS позиционирование и т.д.<br />
<br />
=== Файлы===<br />
*[[File Handling In Pascal]] -Использования файлов, объяснение основ для новичков в Паскале.<br />
*[[TXMLPropStorage/ru|TXMLPropStorage]] - Использование TXMLPropStorage для сохранения индивидуальных настроек.<br />
*[[XML Tutorial/ru | Учебник по XML]] - Запись и чтение файлов XML;<br />
*[[Using INI Files/ru|Использование INI файлов]] - Как работать с INI-файлами в Паскаль.<br />
<br />
<br />
=== Сети/Web ===<br />
*[[Webbrowser/ru| Веб-браузер]] - управление веб-браузером;<br />
*[[Networking/ru | Работа с сетью]] - Учебник по протоколу TCP/IP, созданию защищенных сетевых программ, WebServices, и т.д.<br />
<br />
<br />
===Руководства пользователя Lazarus===<br />
*[[Lazarus_Faq/ru|Lazarus ЧАВО]] - Основная информация о Lazarus и отличия для Linux и Windows;<br />
*[[Lazarus_DB_Faq/ru|Lazarus ЧАВО по базам данных]] - ЧАсто задаваемые ВОпросы по базам данных, с которыми работает Lazarus;<br />
*[[Databases_in_Lazarus/ru|Базы данных в Lazarus]] - Описание работы с базами данных в Lazarus;<br />
*[[Code_Examples/ru|Примеры кода]] - Рабочие примеры программ для Lazarus;<br />
*[[Feature_Ideas|Желаемые\Нужные функции]] - Возможности, которые хочется видеть в Lazarus;<br />
*[[How_do_I_create_a_bug_report/ru|Как добавить ошибку в баг-репорт]] - о том как сообщить об ошибках в работе Lazarus.<br />
<br />
===Установка=== <br />
*[[Installing Lazarus|Установка Lazarus]] - Руководство по установке;<br />
*[[Getting Lazarus|Получить Lazarus]] - Инструкция, как скачивать релизы или SVN версии Lazarus;<br />
*[[Multiple Lazarus/ru|Несколько версий Lazarus]] - Как устанавливать несколько версий lazarus'а на одну машину.<br />
<br />
===Среда разработки (IDE)===<br />
*[[Lazarus IDE| Среда Lazarus]] - Назначение основных окон в среде;<br />
*[[Lazarus IDE Shortcuts|Горячие клавиши]] - Описание горячих клавиш среды;<br />
*[[IDE tricks|Советы на каждый день]] - Полезные советы по использованию Lazarus;<br />
*[[Lazarus Packages|Пакеты Lazarus]] - Пособие по созданию своих пакетов для Lazarus;<br />
*[[Install Packages|Установка пакетов]] - Небольшое пособие об установке пакетов;<br />
*[[Extending the IDE/ru|Расширяем Lazarus]] - Добавление необходимого функционала в Lazarus;<br />
*[[Adding Kylix Help|Использование справки Kylix]] - Руководство о том, как добавить файлы справки Borland к редактору Lazarus;<br />
*[[Using Lazarus for other computer languages/ru|Lazarus для других языков]] - Подключение языков C, Java (и т.п.) к Lazarus;<br />
*[[IDE Development|Разработка]] - Набор заметок о текущем состоянии разработки среды;<br />
*[[Lazarus for education|Lazarus для обучения]] - Статья о том, как настроить среду для удобства начинающих.<br />
<br />
===LCL - библиотека компонентов Lazarus===<br />
*[[doc:lcl/|LCL documentation]] - Помощь по LCL (в разработке);<br />
*[[LCL Components]] - Руководство по стандартным компонентам LCL, дополнение к предыдущему пункту;<br />
*[[The LCL in various platforms]] - Краткое обсуждение работы компонентов LCL на разных платформах;<br />
*[[Autosize / Layout]] - Как разрабатывать формы, которые работают на всех платформах;<br />
*[[Main Loop Hooks]] - О том как обработать многократные источники события;<br />
*[[Asynchronous Calls]] - О том как вызвать методы для отложенного исполнения;<br />
*[[File size and smartlinking|Размер файлов и «умное связывание»]] - Как использовать «умное связывание», что бы сделать исполняемый файл меньше;<br />
*[[Accessing the Interfaces directly]] - Пример того как получить доступ к LCL widgetsets;<br />
*[[Add Help to Your Application]] - О том как создать онлайн справку для вашего приложения;<br />
*[[Anchor Sides]] - Описание главных функциональных возможностей;<br />
*[[LCL Tips/ru|Подсказки по LCL]] - Советы и трюки;<br />
*[[LCL Defines]] - Выбор наиболее правильных опций перекомпиляции библиотеки компонентов Lazarus (LCL).<br />
<br />
===Разработчику===<br />
*[[The Power of Proper Planning and Practices]] - Здравый смысл - лучшая практика при программировании в Free Pascal и Lazarus;<br />
*[[Multiplatform Programming Guide]] - Как разрабатывать кроссплатформенные приложения и как перенести с одной платформы в другую;<br />
*[[Deploying Your Application]] - Как создать установщик для вашего приложения;<br />
*[[Cross compiling/ru|Кроссплатформенная компиляция]] - Создание выполняемых файлов для другой платформы;<br />
*[[GDB Debugger Tips]] - Известные Проблемы / Советы для отладки Pascal с использованием GDB;<br />
*[[Remote Debugging]] - Как отлаживать ваши Lazarus-приложения с другой машины;<br />
*[[Application Icon]] - Установка иконки приложения;<br />
*[[Using Pascal Libraries with .NET and Mono]] - вы можете использовать ваш код Pascal вместе с .NET и Mono;<br />
*[[Pascal and PHP]] - Подключение Pascal к PHP;<br />
*[[Developing Python Modules with Pascal]] - дополняем Python с помощью Pascal.<br />
<br />
===Советы, специфичные для определённой платформы===<br />
*[[OS X Programming Tips]] - Установка Lazarus, полезные инструменты, команды Unix и многое другое...;<br />
*[[Windows Programming Tips]] - Советы по программированию в Windows для рабочих станций...;<br />
*[[WinCE Programming Tips/ru]] - Советы по программированию в WinCE (использование вибрации, кнопка виртуальной клавиатуры и всё такое ...);<br />
*[[Android Programming/ru]] - Для умнофонов и планшетов с Android;<br />
*[[iPhone/iPod development]] - Об использовании Объектного Паскаля для разработки iOS-приложений.<br />
<br />
===Утилиты===<br />
*[[Lazarus Documentation Editor]] - Использование "lazde" для создания документации;<br />
*[[FPDoc Editor]] - Интегрированый редактор для документирования;<br />
*[[FPDoc Updater]] - GUI-утилита для изменения файлов FPDoc;<br />
*[[lazbuild]] - Компилирование проектов и пакетов без среды разработки;<br />
*[[LazSVNPkg]] - Подключаемый модуль среды разработки.<br />
<br />
===Переход с Delphi===<br />
*[[Lazarus Components]] - Сравнение компонентов Lazarus и Turbo Delphi;<br />
*[[Lazarus For Delphi Users]] - Для пользователей Delphi, которые хотят начать программировать в Lazarus;<br />
*[[Code Conversion Guide]] - Как конвертировать существующий код и компоненты Delphi и Kylix в Lazarus.<br />
<br />
===Руководства по улучшению и развитию Lazarus===<br />
*[[Lazarus Development Process/ru| Процесс развития Lazarus]] - Планы, идеи, текущая разработка;<br />
*[[How To Help Developing Lazarus/ru| Как помочь развитию Lazarus]] - Руководство, которое подскажет новичкам как начать участвовать в развитии и совершенствовании Lazarus;<br />
*[[Version Numbering/ru| Нумерация версий]] - Пояснение по поводу различий в нумерации версий Lazarus;<br />
*[[Creating A Patch/ru| Создание патча (patch)]] - Руководство о том, как создать патч, для исправления ошибок в FPC/Лазарусе или их компонентах.;<br />
*[[Creating a Backtrace with GDB]] - Руководство по трассировке чтобы помочь в отладке программ;<br />
*[[Nomenclature/ru| Терминология]] - Руководство по выбору имени для нового метода или свойства;<br />
*[[DesignGuidelines|Design Guide Lines]] - Руководство, что делать при изменении исходного кода Lazarus;<br />
*[[GUI design]] - Заметки о разработке lazarus GUI;<br />
*[[Roadmap]] - Идеи о текущем состоянии различных частей Lazarus;<br />
*[[Road To 1.0]] - Что необходимо сделать для Lazarus 1.0 и списки To Do;<br />
*[[Moderating the bug tracker]] - Правила для разработчиков Lazarus и координаторов проекта, использующих [http://www.freepascal.org/mantis/ отслеживатель ошибок];<br />
*[[Codetools]] - Как расширить возможности для работы с кодом в среде разработки;<br />
*[[Creating IDE Help]] - Как дополнить документацию о среде разработки;<br />
*[[Unit not found - How to find units]] - Как установить среду разработки и исходные файлы;<br />
*[[Bounties]] - Нужна новая возможность? Укажите её здесь. <br />
<br />
===LCL - Библиотека компонентов Lazarus===<br />
*[[LCL Messages|LCL Сообщения]] - Общая информация, относящиеся к сообщениям библиотеки компонентов<br />
*[[LCL Internals|LCL Изнутри]] - Основная информация о внутреннем устройстве библиотеки компонентов Lazarus<br />
*[[LCL Key Handling|LCL Обработка клавиш]] - Описание процедуры обработки событий клавиатуры<br />
*[[LCL Internals - Resizing, Moving|LCL Изнутри - Библиотека компонентов]] - Описание функционирования библиотеки при работе с компонентами<br />
*[[LCL Drag Drop|LCL Работа с компонентами]] - Перемещение, удаление и стыковка компонентов<br />
*[[LCL Unicode Support|LCL Поддержка Юникода]] - Руководство по использованию Юникода в Lazarus<br />
*[[LCL Documentation Roadmap|LCL Документация «Дорожная карта»]] - Процесс документирования модулей <br />
*[[LCL Bindings|LCL Связывание]] - Перенос библиотеки для использования в других языках программирования<br />
<br />
===Интерфейсы===<br />
{{Interfaces}}<br />
<br />
===Переводы===<br />
* [[Getting translation strings right]] A few notes for programmers on how to create and use translateable strings in your application. Quickly discusses general things about creating strings, offers a few hints on implementation issues and points out some things to consider when using English as base language in particular.<br />
* '''Localization Notes:'''<br />
:* [[German localization notes|German]] - Notes and guidelines for translating the Lazarus IDE to German, including a small dictionary to look up often used translations.<br />
:* [[Portuguese-Brazilian Localization Notes|Portuguese-Brazilian]] - Small dictionary containing common translations of terms used in the Lazarus IDE for the Portuguese-Brazilian translation.<br />
:* [[Russian localization notes|Russian]] - Notes and guidelines for translating the Lazarus IDE into Russian.<br />
<!-- *[[TO-DO]] Remaining Tasks --><br />
* [[Help:Add language bar | Add language bar]] explains how you can add a list of translations to the top of a wiki page.<br />
*[[Translations_/_i18n_/_localizations_for_programs#Translating_the_IDE|Translating the IDE]]<br />
<br />
==Документация по дополнительным компонентам==<br />
*[[Pascal Script]] and [[Pascal Script Examples]] - How to use the pascal script components in Lazarus<br />
*[[OpenGL]] - Использование OpenGL в Lazarus<br />
*[[KOL-CE/ru | KOL-CE]] - Библиотека KOL&MCK, потрированная под Free Pascal/Lazarus. Как создавать компактные приложения для Win32/WinCE в Lazarus.<br />
<br />
==Документация по компилятору Free Pascal==<br />
In addition to [http://lazarus-ccr.sourceforge.net/fpcdoc/ this site], the latest version of the documentation can also be found online and in a variety of downloadable formats on the main [http://www.freepascal.org/docs.html Free Pascal Compiler site].<br />
There is now also a WiKi site for FreePascal [http://www.freepascal.org/wiki/index.php/Main_Page] very similar in style to this one, to allow developers to submit documentation in addition to the official FPC documents below.<br />
<br />
*[http://lazarus-ccr.sourceforge.net/fpcdoc/user/user.html User's guide]<br />
*[http://lazarus-ccr.sourceforge.net/fpcdoc/prog/prog.html Programmer's guide]<br />
*[http://lazarus-ccr.sourceforge.net/fpcdoc/ref/ref.html Reference guide for the system unit, and supported Pascal constructs]<br />
*[http://lazarus-ccr.sourceforge.net/fpcdoc/rtl/index.html Run-Time Library reference manual]<br />
*[http://lazarus-ccr.sourceforge.net/fpcdoc/fcl/index.html Free Component Library reference manual]<br />
*[http://lazarus-ccr.sourceforge.net/fpcdoc/fpdoc/fpdoc.html Free Pascal documentation tool manual]<br />
*[[Build messages]]<br />
<br />
==Блоги и сайты связанные с Lazarus==<br />
'''Блоги'''<br />
*[http://lazarus-dev.blogspot.com/ Lazarus Development] - A blog of lazarus developers regards development process.<br />
*[[Adventures of a Newbie]] - A blog of a newbie getting started with some tutorial information in a running log.<br />
*[http://lazarusroad.blogspot.com/ On the road with Lazarus/Freepascal] - A blog dedicated to register my experiences while programming with Lazarus and Freepascal (by Luiz Américo)<br />
*[http://port2laz.blogspot.com/ Porting to Lazarus] - This blog describes the porting of a medium-sized application (~100 kloc) from D7 with CLX to Lazarus (by Alexsander da Rosa)<br />
*[http://living-lazarus.blogspot.com/ Living Lazarus] - One mans exploration into the possibilities of an open source RAD (by [[User:Wibblytim|Wibblytim]]).<br />
*[http://beeography.wordpress.com/tag/object-pascal/ Bee.ography] just (another) Bee’s buzz!<br />
*[http://donaldshimoda.blogspot.com/ Parallel Pascal Worlds] Donald Shimoda.<br />
<br />
'''Сайты'''<br />
*[[swainbrain pascal wiki]] - unique free pascal tutorials and info [http://mercury.it.swin.edu.au/swinbrain/index.php/Pascal#Pascal_Development_Tools swainbrain]</div>Alexrushttps://wiki.freepascal.org/index.php?title=User:Alexrus&diff=84889User:Alexrus2014-12-07T11:21:03Z<p>Alexrus: Created page with "Привет"</p>
<hr />
<div>Привет</div>Alexrushttps://wiki.freepascal.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84888Заглавная страница2014-12-07T11:02:18Z<p>Alexrus: /* Документация Free Pascal */</p>
<hr />
<div>__NOTOC__<br />
{{Main Page}}<br />
= Добро пожаловать в базу знаний по Lazarus-CCR =<br />
<br />
== О проекте ==<br />
<br />
Этот сайт является базой знаний о Free Pascal, Lazarus и [[Связанные_проекты|родственных проектах]].<br />
<br />
Компилятор Free Pascal имеет хорошую документацию пользователя в нескольких форматах, но [[FPC_разработка|информация для разработчиков FPC, организационная информация]], а также [[Документация_FPC|недостаточно хорошо]] документированные темы находятся здесь.<br />
<br />
В то же время Lazarus имеет определенные пробелы в пользовательской документации. Поэтому эта область представляет собой «открытый документ», или "wiki", где каждый может добавлять и исправлять содержимое.<br />
<br />
Wiki позволяет изменять и дополнять содержимое сайта при помощи браузера! Посмотрите [http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 секундный урок обучения по Wiki] или [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Урок по Wikipedia]. Тренироваться в использовании Wiki можно в [[Песочница|песочнице]]. Если у вас возникли проблемы, обратитесь к [http://sourceforge.net/users/vlx/ администратору] или отправьте отчёт об ошибке на сайт [http://sourceforge.net/projects/lazarus-ccr Lazarus-CCR]. Замечания и предложения можно также оставить на нашей [[Site Feedback|странице обратной связи]].<br />
<br />
[[История|История]] проекта Lazarus.<br />
<br />
== Документация Free Pascal ==<br />
;[[Документация FPC|Документация FPC]]<br />
: Содержит информацию для разработчиков и всех причастных к разработке и поддержке компилятора Free Pascal: списки людей, занятых переводом на другие языки, организационная информация, процедуры выпуска FPC, списки ToDo и т. д.<br />
<br />
== Документация Lazarus ==<br />
;[[Lazarus Documentation/ru|Документация Lazarus]]<br />
: Вся доступная документация и [[Lazarus_Documentation/ru#.D0.A0.D1.83.D0.BA.D0.BE.D0.B2.D0.BE.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F_Lazarus|уроки]] для Lazarus IDE (включая руководство по Free Pascal Compiler) может быть найдена на странице [[Lazarus Documentation/ru|Lazarus Documentation]]. Большинство страниц ещё «в процессе работы», так что, пожалуйста, не стесняйтесь добавлять ваш опыт к ним. При желании можно также создать персональную страницу с контактной информацией.<br />
<br />
== Загрузка ==<br />
* Компилятор Free Pascal и текущая бета-версия Lazarus находится здесь: [http://sourceforge.net/project/showfiles.php?group_id=89339 Сайт Lazarus на Sourceforge].<br />
* Все доступные на данный момент компоненты и пакеты находятся здесь: [http://sourceforge.net/project/showfiles.php?group_id=92177 Проект Lazarus-CCR на Sourceforge].<br />
* Дополнительную документацию по компонентам можно найти на странице [[Components and Code examples/ru | Компоненты и примеры кода]], если авторы компонента создали для него соответствующую страницу в Вики.<br />
* Исходный код компилятора, его сборки под различные платформы, а также дополнительную информацию и код можно найти на [http://www.freepascal.org/download.var странице загрузки Free Pascal Compiler] и на [http://lazarus.freepascal.org Официальном сайте Lazarus IDE].<br />
* Список сайтов для загрузки ежедневных сборок Lazarus находится [[Lazarus Snapshots Downloads | здесь]].<br />
<br />
== Рассылка ==<br />
Новые и продвинутые пользователи приглашаются в группу Lazarus-ccr [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-announce анонс] или [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-general главный] подписной лист.<br />
<br />
Возможно более полезной будет рассылка посвящённая IDE [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Lazarus] или рассылка анонсов разработчиков [http://www.freepascal.org/maillist.html FreePascal].<br />
<br />
== Кто и над чем работает? ==<br />
Если вы заняты портированием компонента или библиотеки, пожалуйста отправляйте их сюда [[Current conversion projects]]. Такие посты помогут другим разработчикам, которые хотят портировать нужные компоненты… и это предотвратит ситуацию когда два человека портируют один и тот же компонент.<br />
<br />
== Рекомендации, Ссылки и Ресурсы ==<br />
<br />
=== Lazarus IDE ===<br />
Новости и информация о развитии проекта находится на<br />
[http://lazarus.freepascal.org сайте Lazarus IDE]. Идеи, списки ToDo и прочие планы находятся [[Lazarus Development Process|здесь]]. Сборки Lazarus IDE и компилятора FreePascal, а также последние пакеты компилятора и IDE можно загрузить [http://sourceforge.net/project/showfiles.php?group_id=89339 отсюда].<br />
<br />
==== Активные проекты на Lazarus ====<br />
Наши текущие [[Projects using Lazarus|проекты с использованием Lazarus]] с общедоступными вебсайтами и ссылками для скачивания.<br />
<br />
Скриншоты приложений, созданных с использованием Lazarus, можно посмотреть в [[Lazarus Application Gallery|галерее приложений на Lazarus]].<br />
<br />
==== Хорошие сайты и ссылки ====<br />
Наша коллекция ссылок на сайты, посвящённые Delphi/Kylix, находится [[Page Of Code Sites|здесь]]. Пожалуйста, добавляйте туда ссылки на хорошие сайты, которые раньше не были отмечены в этом списке.<br />
<br />
==== Специализированные поисковые движки ====<br />
Есть несколько классных баз знаний и поисковых движков в сети которые могут оказать большую помощь в изучении новых приёмов программирования и решении проблем.<br />
Tamarack Associates обеспечивает быстрый [http://www.tamaracka.com/search.htm поисковый] движок специально для поиска по тематике Borland. Mer Systems Inc. предоставляет похожий [http://www.mers.com/searchsite.html движок].<br />
Другой классный источник информации, имеющий собственный [http://www.efg2.com/Lab/search.htm веб-поиск] — это электронная библиотека [http://www.efg2.com/ Earl F. Glynn’s Computer Lab and Reference].<br />
<br />
==== Маркетинговые примеры использования ====<br />
[[Marketing_Case_Studies|Возможность для пользователей Lazarus]] объяснить — почему, как и для чего они используют Lazarus IDE.<br />
<br />
==== Презентации FPC/Lazarus на выставках и участие в соревнованиях ====<br />
FPC/Lazarus были представлены на стенде на выставках [[Systems 2005]], [[Systems 2006]] и [[Systems 2007]] в г. Мюнхен. На основе полученного опыта была собрана [[Preparing a booth on a trade show|информация]] для облегчения подготовки выставочных стендов и презентаций в будущем. Lazarus и родственные проекты также принимали участие в различных соревнованиях, подготовлена [[Contests|информация]] для потенциальных участников будущих соревнований.<br />
<br />
<br />
<br />
=Авторство=<br />
Настоящее вступление создано [[User:VlxAdmin]].</div>Alexrushttps://wiki.freepascal.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84887Заглавная страница2014-12-07T11:01:43Z<p>Alexrus: /* О проекте */</p>
<hr />
<div>__NOTOC__<br />
{{Main Page}}<br />
= Добро пожаловать в базу знаний по Lazarus-CCR =<br />
<br />
== О проекте ==<br />
<br />
Этот сайт является базой знаний о Free Pascal, Lazarus и [[Связанные_проекты|родственных проектах]].<br />
<br />
Компилятор Free Pascal имеет хорошую документацию пользователя в нескольких форматах, но [[FPC_разработка|информация для разработчиков FPC, организационная информация]], а также [[Документация_FPC|недостаточно хорошо]] документированные темы находятся здесь.<br />
<br />
В то же время Lazarus имеет определенные пробелы в пользовательской документации. Поэтому эта область представляет собой «открытый документ», или "wiki", где каждый может добавлять и исправлять содержимое.<br />
<br />
Wiki позволяет изменять и дополнять содержимое сайта при помощи браузера! Посмотрите [http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 секундный урок обучения по Wiki] или [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Урок по Wikipedia]. Тренироваться в использовании Wiki можно в [[Песочница|песочнице]]. Если у вас возникли проблемы, обратитесь к [http://sourceforge.net/users/vlx/ администратору] или отправьте отчёт об ошибке на сайт [http://sourceforge.net/projects/lazarus-ccr Lazarus-CCR]. Замечания и предложения можно также оставить на нашей [[Site Feedback|странице обратной связи]].<br />
<br />
[[История|История]] проекта Lazarus.<br />
<br />
== Документация Free Pascal ==<br />
;[[FPC documentation/ru|Документация FPC]]<br />
: Содержит информацию для разработчиков и всех причастных к разработке и поддержке компилятора Free Pascal: списки людей, занятых переводом на другие языки, организационная информация, процедуры выпуска FPC, списки ToDo и т. д.<br />
<br />
== Документация Lazarus ==<br />
;[[Lazarus Documentation/ru|Документация Lazarus]]<br />
: Вся доступная документация и [[Lazarus_Documentation/ru#.D0.A0.D1.83.D0.BA.D0.BE.D0.B2.D0.BE.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F_Lazarus|уроки]] для Lazarus IDE (включая руководство по Free Pascal Compiler) может быть найдена на странице [[Lazarus Documentation/ru|Lazarus Documentation]]. Большинство страниц ещё «в процессе работы», так что, пожалуйста, не стесняйтесь добавлять ваш опыт к ним. При желании можно также создать персональную страницу с контактной информацией.<br />
<br />
== Загрузка ==<br />
* Компилятор Free Pascal и текущая бета-версия Lazarus находится здесь: [http://sourceforge.net/project/showfiles.php?group_id=89339 Сайт Lazarus на Sourceforge].<br />
* Все доступные на данный момент компоненты и пакеты находятся здесь: [http://sourceforge.net/project/showfiles.php?group_id=92177 Проект Lazarus-CCR на Sourceforge].<br />
* Дополнительную документацию по компонентам можно найти на странице [[Components and Code examples/ru | Компоненты и примеры кода]], если авторы компонента создали для него соответствующую страницу в Вики.<br />
* Исходный код компилятора, его сборки под различные платформы, а также дополнительную информацию и код можно найти на [http://www.freepascal.org/download.var странице загрузки Free Pascal Compiler] и на [http://lazarus.freepascal.org Официальном сайте Lazarus IDE].<br />
* Список сайтов для загрузки ежедневных сборок Lazarus находится [[Lazarus Snapshots Downloads | здесь]].<br />
<br />
== Рассылка ==<br />
Новые и продвинутые пользователи приглашаются в группу Lazarus-ccr [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-announce анонс] или [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-general главный] подписной лист.<br />
<br />
Возможно более полезной будет рассылка посвящённая IDE [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Lazarus] или рассылка анонсов разработчиков [http://www.freepascal.org/maillist.html FreePascal].<br />
<br />
== Кто и над чем работает? ==<br />
Если вы заняты портированием компонента или библиотеки, пожалуйста отправляйте их сюда [[Current conversion projects]]. Такие посты помогут другим разработчикам, которые хотят портировать нужные компоненты… и это предотвратит ситуацию когда два человека портируют один и тот же компонент.<br />
<br />
== Рекомендации, Ссылки и Ресурсы ==<br />
<br />
=== Lazarus IDE ===<br />
Новости и информация о развитии проекта находится на<br />
[http://lazarus.freepascal.org сайте Lazarus IDE]. Идеи, списки ToDo и прочие планы находятся [[Lazarus Development Process|здесь]]. Сборки Lazarus IDE и компилятора FreePascal, а также последние пакеты компилятора и IDE можно загрузить [http://sourceforge.net/project/showfiles.php?group_id=89339 отсюда].<br />
<br />
==== Активные проекты на Lazarus ====<br />
Наши текущие [[Projects using Lazarus|проекты с использованием Lazarus]] с общедоступными вебсайтами и ссылками для скачивания.<br />
<br />
Скриншоты приложений, созданных с использованием Lazarus, можно посмотреть в [[Lazarus Application Gallery|галерее приложений на Lazarus]].<br />
<br />
==== Хорошие сайты и ссылки ====<br />
Наша коллекция ссылок на сайты, посвящённые Delphi/Kylix, находится [[Page Of Code Sites|здесь]]. Пожалуйста, добавляйте туда ссылки на хорошие сайты, которые раньше не были отмечены в этом списке.<br />
<br />
==== Специализированные поисковые движки ====<br />
Есть несколько классных баз знаний и поисковых движков в сети которые могут оказать большую помощь в изучении новых приёмов программирования и решении проблем.<br />
Tamarack Associates обеспечивает быстрый [http://www.tamaracka.com/search.htm поисковый] движок специально для поиска по тематике Borland. Mer Systems Inc. предоставляет похожий [http://www.mers.com/searchsite.html движок].<br />
Другой классный источник информации, имеющий собственный [http://www.efg2.com/Lab/search.htm веб-поиск] — это электронная библиотека [http://www.efg2.com/ Earl F. Glynn’s Computer Lab and Reference].<br />
<br />
==== Маркетинговые примеры использования ====<br />
[[Marketing_Case_Studies|Возможность для пользователей Lazarus]] объяснить — почему, как и для чего они используют Lazarus IDE.<br />
<br />
==== Презентации FPC/Lazarus на выставках и участие в соревнованиях ====<br />
FPC/Lazarus были представлены на стенде на выставках [[Systems 2005]], [[Systems 2006]] и [[Systems 2007]] в г. Мюнхен. На основе полученного опыта была собрана [[Preparing a booth on a trade show|информация]] для облегчения подготовки выставочных стендов и презентаций в будущем. Lazarus и родственные проекты также принимали участие в различных соревнованиях, подготовлена [[Contests|информация]] для потенциальных участников будущих соревнований.<br />
<br />
<br />
<br />
=Авторство=<br />
Настоящее вступление создано [[User:VlxAdmin]].</div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:History&diff=84886Template:History2014-12-07T11:01:19Z<p>Alexrus: </p>
<hr />
<div><small><br />
[[History |'''{{#language:en}} (en)''']] <br />
| [[History/fr|'''{{#language:fr}} (fr)''']] <br />
| [[History/hu|'''{{#language:hu}} (hu)''']] <br />
| [[History/id|'''{{#language:id}} (id)''']] <br />
| [[History/ko|'''{{#language:ko}} (ko)''']] <br />
| [[История|'''{{#language:ru}} (ru)''']]<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=History/ru&diff=84884History/ru2014-12-07T11:00:43Z<p>Alexrus: moved History/ru to История</p>
<hr />
<div>{{History}}<br />
<br />
Проект Lasarus ведёт свою родословную от проекта Megido. Из архивов групп Google и других списков рассылки мы можем узнать немного о Megido. Это был проект, в котором пытались сделать открытый клон Delphi, на основе исходных кодов Sybil (который, в свою очередь, был клоном Delphi для OS/2, хотя его дизайнер форм был весьма ограничен). Работа над Megido началась в 1998 году, но где-то в 1999 году заглохла в связи с отсутствием внимания и интереса к клонам Sybil с его органичениями.<br />
<br />
Итак, три программиста (Cliff Baeseman, Shane Miller и Michael A. Hess) начали проект Lasarus в феврале 1999 года. Каждый из них до этого пытался принимать участие в проекте Megido. С расстройства от этих попыток, они начали свой собственный проект.<br />
<br />
Следующим членом команды был [[User:Marc|Marc Weustink]]. Он связался с проектом в августе 1999 года. Марк искал Linux Delphi (в то время Borland ещё не разработали Kylix). Он также был заинтересован и самим Linux, и поэтому присоединился к проекту Lasarus. В то время Lasarus представлял собой пустые панели инструментов и несколько жестко вшитых пунктов меню GTK. Редактор кода все еще обсуждался. С тех пор Марк является основным программистом, а интерфейс отладчика - это его любимое детище.<br />
<br />
Через год после Марка, в сентябре 2000 года, в проект ввязался [[User:Mattias2|Mattias Gaertner]]. С Маттиасом в качестве члена команды проект сделал значительный шаг вперед. Маттиас перенёс SynEdit и написал большую часть codetools и дизайнера. С этими доработками Lasarus более-менее принял тот вид, как он выглядит сегодня. Три года спустя Маттиас добавил систему пакетов и продолжил вносить в IDE дополнительные функции и различные усовершенствования.<br />
<br />
[[User:Neli|Micha Nelissen]] начал вносить вклад в июне 2003 года, в основном отправляя патчи для интерфейса Win32. Он использовал Borland C++ Builder, но хотел портировать код на другие платформы. В связи с тем, что Borland сделал в C++ свои собственные расширения, необходимые для поддержки их VCL, шансы приложений BCB когда-нибудь стать по-настоящему кроссплатформенными были невелики. Смена языка не была для него серьёзной проблемой, так что поискав альтернативы, он счёл Lasarus самым многообещающим. В то время Lasarus опирался на библиотеку GTK как под Win32, так и под Linux. В Linux она работает очень хорошо, но под win32 она глючила. Пользователи Lasarus все чаще просили родной интерфейс к win32 и Миша взялся помочь писать его поддержку.<br />
<br />
[[User:Vincent|Vincent Snijders]] получил ссылку на Lazarus и FPC [http://lists.lazarus.freepascal.org/pipermail/lazarus/1999-July/002503.html летом 1999], когда он только-только купил свой Linux компьютер и начал писать диссертацию, которая зависела от программы математического моделирования, написанной на Delphi. Он следил за проектом и попытался заставить Lazarus хорошо работать под Windows. После защиты в 2003 году у него появилось больше времени для Lazarus, и он начал слать патчи. Его основной задачей становится забота о том, чтобы Lasarus под Windows работал так же хорошо, как работал Lasarus на Linux, и он занялся [[Lazarus Snapshots Downloads]].<br />
<br />
[[User:Sekelsenmat|Felipe Monteiro de Carvalho]] начал смотреть на Lazarus в 2005 году, когда тот был еще в версии 0.9.6. Фелипе надеется использовать его в качестве замены для Delphi, особенно на Linux. Он нарвался на ряд проблем, когда впервые попытался использовать Lazarus, но так как он увидел огромный потенциал, решил продолжить с ним работать. Он считает, что его цель - иметь полностью функциональную кросс-платформенную альтернативу Delphi для своих проектов - в настоящее время достигнута. По началу он лишь присылал описания замеченных ошибок и работал над документацией, но в конце концов тоже ещё и писать код. За эти годы он начал поддержку множества новых интерфейсов, в том числе Qt 4, WinCE, fpGUI и Cocoa. Он добавил компонент TTrayIcon, привязки PasCocoa и интерфейс Windows CE. Он пишет статьи для журнала Toolbox и написал значительную глав книги "Lazarus - The Complete Guide".<br />
<br />
[[User:Paul_Ishenin|Paul Ishenin]] узнал о Lasarus во время работы над FastCube 1.0 в Январе 2007. Он решил перенести FastCube на FPC и Lazarus, и начал свои первые попытки. Процесс оказался довольно легким, но некоторые вещи не работали - например, не отображался свой курсор для операций Drag'n'Drop. На этом этапе реализация поддержки курсоров в Lasarus была очень неполная. Пол начал исследовать, как реализовать курсор, по крайней мере для платформы Windows. Он использовал IRC канал чтобы обсудить этот вопрос с разработчиками Lasarus, и начал посылать патчи [[User:Marc|Марку]]. К удивлению Пола, Марк не принял его первый патч дословно, потому что в нём недостаточно внимания было уделено разделению кода между LCL и виджетами. В итоге Пол реализовал курсоры для GTK, GTK2 и Carbon, сделал еще несколько патчей, и ему был предоставлен доступ на запись к SVN. Позже Пол участвовал в разработке виджетов для GTK2, Qt и Win32 и в развитии самой IDE. Основной упор он делает на том, чтобы исправить оставшиеся ошибок в win32 LCL.<br />
<br />
[[User:Zeljan|Zeljan Rikalo]] начал свой вклад с Qt виджетов в 2007 году, отправляя патчи [[User:Sekelsenmat|Фелипе]]. Летом 2007 года он получил доступ на запись в SVN. Теперь он развивает Qt, GTK2 и LCL.<br />
<br />
[[User:Martin|Martin Friebe]] начал свой вклад в Lazarus с очистки и рефакторинга кода SynEdit. С тех пор он добавил много новых функций, таких как синхронизация редактирования. Позже он добавил возможность одновременного отображения одного кода в нескольких окнах и значительно улучшил возможности отладчика.<br />
<br />
[[User:JuhaManninen|Juha Manninen]] присоединился в 2009 году, начал с исправления ошибок, а затем занялся поддержкой импорта проектов Delphi. Когда закончил, переключился на другие области, и теперь занимается в основном исправлением ошибок и улучшением IDE.<br />
<br />
[[User:Bart|Bart Broersma]] присоединился к команде разработчиков в 2011 году. Внёс огромный вклад в развитие проекта.<br />
<br />
[todo: others]<br />
<br />
[[Category:Lazarus/ru]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=Sand_Box/ru&diff=84883Sand Box/ru2014-12-07T10:56:58Z<p>Alexrus: </p>
<hr />
<div>{{Sand Box}}<br />
<br />
=Заголовок=<br />
----<br />
==Подзаголовок==<br />
<br />
<syntaxhighlight> Program Test;<br />
Uses Crt;<br />
<br />
Var I : Integer;<br />
<br />
Begin<br />
For I := 0 to 12 do<br />
WriteLn('Test ',I:2);<br />
End.</syntaxhighlight><br />
<br />
--[[User:Ggeldenhuys|Graeme]] 11:03, 23 March 2012 (UTC) The DELPHI style doesn't seem to be supported, so we have to use the SOURCE tag instead.<br />
<br />
===Ссылки внутри статьи===<br />
<br />
Как использовать внутреннюю ссылку: [[#Отступ первой строки|Отступ первой строки]].<br />
<br />
==Внешняя ссылка==<br />
<br />
Внешняя ссылка: [http://www.example.com Название ссылки]<br />
<br>Ещё одна ссылка: [http://www.example.com Название ссылки]<br />
<br />
<div class="floatright"> [[Image:Laz de menu bears.jpg]] </div><br />
<br />
==Изображение==<br />
This text should be placed near the picture, does it? zxvzxcv zxvc xcv xzcv zxcv zxvc zxvc zxcv zxcv zxcv zxcv xcv xcv xcv xcv zxcv zxcv zxcv xcv zxcv zxcv aaaaaaaaaaaaa<br><br />
<b>And this line were is going?</b> and this line?<br><br />
==Текст==<br />
Это текст<br />
<br />
==Новая секция==<br />
<br />
==Таблица 2==<br />
<TABLE WIDTH="90%" CELLPADDING="1" CELLSPACING="1"><br />
<TR> <br />
<TD><b>Заголовок 1</b></TD> <br />
<TD><b>Заголовок 2</b></TD> <br />
<TD><b>Заголовок 3</b></TD> <br />
<TD><b>Заголовок 4</b></TD> <br />
</TR> <br />
<TR> <br />
<TD>Элемент 1,1</TD> <br />
<TD>Элемент 1,2</TD> <br />
<TD>Элемент 1,3</TD> <br />
<TD>Элемент 1,4</TD> <br />
</TR><br />
<TR> <br />
<TD>Элемент 2,1</TD> <br />
<TD>Элемент 2,2</TD> <br />
<TD>Элемент 2,3</TD> <br />
<TD>Элемент 2,4</TD> <br />
</TR> <br />
</TABLE><br />
<br />
==Маркированный список==<br />
*Один<br />
*Два<br />
**Три<br />
<br />
==Нумерованный список==<br />
#Первый<br />
#Второй<br />
#Третий<br />
''Вложенная нумерация''<br />
#Первый<br />
##Первый.Один<br />
##Первый.Два<br />
##Первый.Три<br />
#Второй<br />
##Второй.Один<br />
##Второй.Два<br />
##Второй.Три<br />
''Смешанная нумерация''<br />
#Первый<br />
#*Первый.Один<br />
#*Первый.Два<br />
#*Первый.Три<br />
#Второй<br />
#*Второй.Один<br />
#*Второй.Два<br />
#*Второй.Три<br />
<br />
==Отступ первой строки==<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Please note that all contributions to Lazarus-ccr are considered to be released under the GNU Free Documentation License (see Lazarus-ccr:Copyrights for details). If you don't want your writing to be edited mercilessly and redistributed at will, then don't submit it here.<br />
: You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!<br />
<br />
ТЕСТ<br />
<br />
[[es:Probando]]<br />
<br />
'''Another''' ''Test:'' '''''lets go crazy'''''<br />
<br />
I want to create a boxed text:<br />
This is in a '''box''', or so ''I hope''.<br />
<br />
This is outside the box, no? And this is a reference to my incomplete <br />
[http://www/pcug.org.au/~akabaila/StructuralAnalysis/ Structural Analyis] book<br />
ThisIsMyShura<br />
<br />
Weird: this is in the box as well?<br />
<br />
* ''And a bullet in italics?''<br />
<br />
<nowiki>non formatted...</nowiki><br />
<br />
==Humm==<br />
<br />
=Float Like A Butterfly=<br />
<br />
==New section?==<br />
Let's see...<br />
ok<br />
<br />
grusskarte<br />
<br />
if Graphviz was installed, this would draw a pretty graph...<br />
<br />
<graphviz><br />
digraph G { <br />
rankdir=LR; node [fontsize = "8" shape = "rectangle"]; <br />
"Node 1" -> "Node 2";<br />
}<br />
</graphviz><br />
<br />
This is a test to see, if I can edit a page after the Bad-Behavior update. [[User:Vincent|fpcfan]] 22:43, 7 December 2007 (CET)<br />
<br />
==Ссылки на туториалы==<br />
[http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 Second Quick Wiki Tutorial]<br />
<br />
*[[LazAutoUpdater#Use|Using LazAutoUpdate CodeSnippet]]<br />
<br />
<nowiki><br />
Use this syntax to include a page within another page: {{:LazAutoUpdater}}<br />
</nowiki><br />
{{:AppIsRunning}}</div>Alexrushttps://wiki.freepascal.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84882Заглавная страница2014-12-07T10:32:18Z<p>Alexrus: </p>
<hr />
<div>__NOTOC__<br />
{{Main Page}}<br />
= Добро пожаловать в базу знаний по Lazarus-CCR =<br />
<br />
== О проекте ==<br />
<br />
Этот сайт является базой знаний о Free Pascal, Lazarus и [[Связанные_проекты|родственных проектах]].<br />
<br />
Компилятор Free Pascal имеет хорошую документацию пользователя в нескольких форматах, но [[FPC_разработка|информация для разработчиков FPC, организационная информация]], а также [[Документация_FPC|недостаточно хорошо]] документированные темы находятся здесь.<br />
<br />
В то же время Lazarus имеет определенные пробелы в пользовательской документации. Поэтому эта область представляет собой «открытый документ», или "wiki", где каждый может добавлять и исправлять содержимое.<br />
<br />
Wiki позволяет изменять и дополнять содержимое сайта при помощи браузера! Посмотрите [http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 секундный урок обучения по Wiki] или [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Урок по Wikipedia]. Тренироваться в использовании Wiki можно в [[Песочница|песочнице]]. Если у вас возникли проблемы, обратитесь к [http://sourceforge.net/users/vlx/ администратору] или отправьте отчёт об ошибке на сайт [http://sourceforge.net/projects/lazarus-ccr Lazarus-CCR]. Замечания и предложения можно также оставить на нашей [[Site Feedback|странице обратной связи]].<br />
<br />
[[History/ru|История]] проекта Lazarus.<br />
<br />
== Документация Free Pascal ==<br />
;[[FPC documentation/ru|Документация FPC]]<br />
: Содержит информацию для разработчиков и всех причастных к разработке и поддержке компилятора Free Pascal: списки людей, занятых переводом на другие языки, организационная информация, процедуры выпуска FPC, списки ToDo и т. д.<br />
<br />
== Документация Lazarus ==<br />
;[[Lazarus Documentation/ru|Документация Lazarus]]<br />
: Вся доступная документация и [[Lazarus_Documentation/ru#.D0.A0.D1.83.D0.BA.D0.BE.D0.B2.D0.BE.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F_Lazarus|уроки]] для Lazarus IDE (включая руководство по Free Pascal Compiler) может быть найдена на странице [[Lazarus Documentation/ru|Lazarus Documentation]]. Большинство страниц ещё «в процессе работы», так что, пожалуйста, не стесняйтесь добавлять ваш опыт к ним. При желании можно также создать персональную страницу с контактной информацией.<br />
<br />
== Загрузка ==<br />
* Компилятор Free Pascal и текущая бета-версия Lazarus находится здесь: [http://sourceforge.net/project/showfiles.php?group_id=89339 Сайт Lazarus на Sourceforge].<br />
* Все доступные на данный момент компоненты и пакеты находятся здесь: [http://sourceforge.net/project/showfiles.php?group_id=92177 Проект Lazarus-CCR на Sourceforge].<br />
* Дополнительную документацию по компонентам можно найти на странице [[Components and Code examples/ru | Компоненты и примеры кода]], если авторы компонента создали для него соответствующую страницу в Вики.<br />
* Исходный код компилятора, его сборки под различные платформы, а также дополнительную информацию и код можно найти на [http://www.freepascal.org/download.var странице загрузки Free Pascal Compiler] и на [http://lazarus.freepascal.org Официальном сайте Lazarus IDE].<br />
* Список сайтов для загрузки ежедневных сборок Lazarus находится [[Lazarus Snapshots Downloads | здесь]].<br />
<br />
== Рассылка ==<br />
Новые и продвинутые пользователи приглашаются в группу Lazarus-ccr [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-announce анонс] или [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-general главный] подписной лист.<br />
<br />
Возможно более полезной будет рассылка посвящённая IDE [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Lazarus] или рассылка анонсов разработчиков [http://www.freepascal.org/maillist.html FreePascal].<br />
<br />
== Кто и над чем работает? ==<br />
Если вы заняты портированием компонента или библиотеки, пожалуйста отправляйте их сюда [[Current conversion projects]]. Такие посты помогут другим разработчикам, которые хотят портировать нужные компоненты… и это предотвратит ситуацию когда два человека портируют один и тот же компонент.<br />
<br />
== Рекомендации, Ссылки и Ресурсы ==<br />
<br />
=== Lazarus IDE ===<br />
Новости и информация о развитии проекта находится на<br />
[http://lazarus.freepascal.org сайте Lazarus IDE]. Идеи, списки ToDo и прочие планы находятся [[Lazarus Development Process|здесь]]. Сборки Lazarus IDE и компилятора FreePascal, а также последние пакеты компилятора и IDE можно загрузить [http://sourceforge.net/project/showfiles.php?group_id=89339 отсюда].<br />
<br />
==== Активные проекты на Lazarus ====<br />
Наши текущие [[Projects using Lazarus|проекты с использованием Lazarus]] с общедоступными вебсайтами и ссылками для скачивания.<br />
<br />
Скриншоты приложений, созданных с использованием Lazarus, можно посмотреть в [[Lazarus Application Gallery|галерее приложений на Lazarus]].<br />
<br />
==== Хорошие сайты и ссылки ====<br />
Наша коллекция ссылок на сайты, посвящённые Delphi/Kylix, находится [[Page Of Code Sites|здесь]]. Пожалуйста, добавляйте туда ссылки на хорошие сайты, которые раньше не были отмечены в этом списке.<br />
<br />
==== Специализированные поисковые движки ====<br />
Есть несколько классных баз знаний и поисковых движков в сети которые могут оказать большую помощь в изучении новых приёмов программирования и решении проблем.<br />
Tamarack Associates обеспечивает быстрый [http://www.tamaracka.com/search.htm поисковый] движок специально для поиска по тематике Borland. Mer Systems Inc. предоставляет похожий [http://www.mers.com/searchsite.html движок].<br />
Другой классный источник информации, имеющий собственный [http://www.efg2.com/Lab/search.htm веб-поиск] — это электронная библиотека [http://www.efg2.com/ Earl F. Glynn’s Computer Lab and Reference].<br />
<br />
==== Маркетинговые примеры использования ====<br />
[[Marketing_Case_Studies|Возможность для пользователей Lazarus]] объяснить — почему, как и для чего они используют Lazarus IDE.<br />
<br />
==== Презентации FPC/Lazarus на выставках и участие в соревнованиях ====<br />
FPC/Lazarus были представлены на стенде на выставках [[Systems 2005]], [[Systems 2006]] и [[Systems 2007]] в г. Мюнхен. На основе полученного опыта была собрана [[Preparing a booth on a trade show|информация]] для облегчения подготовки выставочных стендов и презентаций в будущем. Lazarus и родственные проекты также принимали участие в различных соревнованиях, подготовлена [[Contests|информация]] для потенциальных участников будущих соревнований.<br />
<br />
<br />
<br />
=Авторство=<br />
Настоящее вступление создано [[User:VlxAdmin]].</div>Alexrushttps://wiki.freepascal.org/index.php?title=Sand_Box/ru&diff=84881Sand Box/ru2014-12-07T10:31:45Z<p>Alexrus: </p>
<hr />
<div>{{Sand Box}}<br />
<br />
=Heading=<br />
----<br />
==Append==<br />
<br />
<syntaxhighlight> Program Test;<br />
Uses Crt;<br />
<br />
Var I : Integer;<br />
<br />
Begin<br />
For I := 0 to 12 do<br />
WriteLn('Test ',I:2);<br />
End.</syntaxhighlight><br />
<br />
--[[User:Ggeldenhuys|Graeme]] 11:03, 23 March 2012 (UTC) The DELPHI style doesn't seem to be supported, so we have to use the SOURCE tag instead.<br />
<br />
===Sayonara===<br />
<br />
Test O<br />
<br />
How to use an internal link: [[#indenting first line|indent first line]].<br />
<br />
==External link==<br />
External link: [http://www.example.com link title]<br />
<br>another link: [http://www.example.com link title]<br />
<br />
<div class="floatright"> [[Image:Laz de menu bearb2.jpg]] </div><br />
<br />
<br />
<br />
==a image==<br />
This text should be placed near the picture, does it? zxvzxcv zxvc xcv xzcv zxcv zxvc zxvc zxcv zxcv zxcv zxcv xcv xcv xcv xcv zxcv zxcv zxcv xcv zxcv zxcv aaaaaaaaaaaaa<br><br />
<b>And this line were is going?</b> and this line?<br><br />
==a text==<br />
This is the text<br />
<br />
==new section test==<br />
<br />
==Table 2==<br />
<TABLE WIDTH="90%" CELLPADDING="1" CELLSPACING="1"><br />
<TR> <br />
<TD><b>Header 1</b></TD> <br />
<TD><b>Header 2</b></TD> <br />
<TD><b>Header 3</b></TD> <br />
<TD><b>Header 4</b></TD> <br />
</TR> <br />
<TR> <br />
<TD>Item 1,1</TD> <br />
<TD>Item 1,2</TD> <br />
<TD>Item 1,3</TD> <br />
<TD>Item 1,4</TD> <br />
</TR><br />
<TR> <br />
<TD>Item 2,1</TD> <br />
<TD>Item 2,2</TD> <br />
<TD>Item 2,3</TD> <br />
<TD>Item 2,4</TD> <br />
</TR> <br />
</TABLE><br />
<br />
==Bullets==<br />
*One<br />
*Two<br />
**Tree<br />
<br />
==Numbering==<br />
#First<br />
#Second<br />
#Third<br />
''Nested Numbering''<br />
#First<br />
##first.one<br />
##first.two<br />
##first.three<br />
#Second<br />
##second.one<br />
##second.two<br />
##second.three<br />
''Mixed Numbering''<br />
#First<br />
#*first.one<br />
#*first.two<br />
#*first.three<br />
#Second<br />
#*second.one<br />
#*second.two<br />
#*second.three<br />
<br />
==indenting first line==<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Please note that all contributions to Lazarus-ccr are considered to be released under the GNU Free Documentation License (see Lazarus-ccr:Copyrights for details). If you don't want your writing to be edited mercilessly and redistributed at will, then don't submit it here.<br />
: You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!<br />
<br />
TEST<br />
<br />
[[es:Probando]]<br />
<br />
'''Another''' ''Test:'' '''''lets go crazy'''''<br />
<br />
I want to create a boxed text:<br />
This is in a '''box''', or so ''I hope''.<br />
<br />
This is outside the box, no? And this is a reference to my incomplete <br />
[http://www/pcug.org.au/~akabaila/StructuralAnalysis/ Structural Analyis] book<br />
ThisIsMyShura<br />
<br />
Weird: this is in the box as well?<br />
<br />
* ''And a bullet in italics?''<br />
<br />
<nowiki>non formatted...</nowiki><br />
<br />
==Humm==<br />
<br />
=Float Like A Butterfly=<br />
<br />
==New section?==<br />
Let's see...<br />
ok<br />
<br />
grusskarte<br />
<br />
if Graphviz was installed, this would draw a pretty graph...<br />
<br />
<graphviz><br />
digraph G { <br />
rankdir=LR; node [fontsize = "8" shape = "rectangle"]; <br />
"Node 1" -> "Node 2";<br />
}<br />
</graphviz><br />
<br />
This is a test to see, if I can edit a page after the Bad-Behavior update. [[User:Vincent|fpcfan]] 22:43, 7 December 2007 (CET)<br />
<br />
==Tutorial links==<br />
[http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 Second Quick Wiki Tutorial]<br />
<br />
*[[LazAutoUpdater#Use|Using LazAutoUpdate CodeSnippet]]<br />
<br />
<nowiki><br />
Use this syntax to include a page within another page: {{:LazAutoUpdater}}<br />
</nowiki><br />
{{:AppIsRunning}}</div>Alexrushttps://wiki.freepascal.org/index.php?title=Sand_Box/ru&diff=84879Sand Box/ru2014-12-07T10:30:53Z<p>Alexrus: moved Sand Box/ru to Песочница</p>
<hr />
<div>{{Sand Box}}<br />
<br />
New Page<br />
<br />
==Заголовок==<br />
===Подзаголовок===<br />
<table><br />
<tr><br />
<td>Таблица</td><br />
</tr><br />
</table></div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Sand_Box&diff=84878Template:Sand Box2014-12-07T10:30:29Z<p>Alexrus: </p>
<hr />
<div><small><br />
[[Sand Box/de|'''{{#language:de}} (de)''']] |<br />
[[Sand Box|'''{{#language:en}} (en)''']] |<br />
[[Sand Box/es|'''{{#language:es}} (es)''']] |<br />
[[Sand Box/fr|'''{{#language:fr}} (fr)''']] |<br />
[[Sand Box/id|'''{{#language:id}} (id)''']] |<br />
[[Sand Box/it|'''{{#language:it}} (it)''']] |<br />
[[Sand Box/ja|'''{{#language:ja}} (ja)''']] |<br />
[[Sand Box/pl|'''{{#language:pl}} (pl)''']] |<br />
[[Песочница|'''{{#language:ru}} (ru)''']] |<br />
[[Sand Box/sk|'''{{#language:sk}} (sk)''']] |<br />
[[Sand Box/zh_CN|'''{{#language:zh-CN}} (zh_CN)''']]<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Sand_Box&diff=84877Sand Box2014-12-07T10:29:16Z<p>Alexrus: Добавлен шаблон {{Sand Box}}</p>
<hr />
<div>{{Sand Box}}<br />
<br />
=Heading=<br />
----<br />
==Append==<br />
<br />
<syntaxhighlight> Program Test;<br />
Uses Crt;<br />
<br />
Var I : Integer;<br />
<br />
Begin<br />
For I := 0 to 12 do<br />
WriteLn('Test ',I:2);<br />
End.</syntaxhighlight><br />
<br />
--[[User:Ggeldenhuys|Graeme]] 11:03, 23 March 2012 (UTC) The DELPHI style doesn't seem to be supported, so we have to use the SOURCE tag instead.<br />
<br />
===Sayonara===<br />
<br />
Test O<br />
<br />
How to use an internal link: [[#indenting first line|indent first line]].<br />
<br />
==External link==<br />
External link: [http://www.example.com link title]<br />
<br>another link: [http://www.example.com link title]<br />
<br />
<div class="floatright"> [[Image:Laz de menu bearb2.jpg]] </div><br />
<br />
<br />
<br />
==a image==<br />
This text should be placed near the picture, does it? zxvzxcv zxvc xcv xzcv zxcv zxvc zxvc zxcv zxcv zxcv zxcv xcv xcv xcv xcv zxcv zxcv zxcv xcv zxcv zxcv aaaaaaaaaaaaa<br><br />
<b>And this line were is going?</b> and this line?<br><br />
==a text==<br />
This is the text<br />
<br />
==new section test==<br />
<br />
==Table 2==<br />
<TABLE WIDTH="90%" CELLPADDING="1" CELLSPACING="1"><br />
<TR> <br />
<TD><b>Header 1</b></TD> <br />
<TD><b>Header 2</b></TD> <br />
<TD><b>Header 3</b></TD> <br />
<TD><b>Header 4</b></TD> <br />
</TR> <br />
<TR> <br />
<TD>Item 1,1</TD> <br />
<TD>Item 1,2</TD> <br />
<TD>Item 1,3</TD> <br />
<TD>Item 1,4</TD> <br />
</TR><br />
<TR> <br />
<TD>Item 2,1</TD> <br />
<TD>Item 2,2</TD> <br />
<TD>Item 2,3</TD> <br />
<TD>Item 2,4</TD> <br />
</TR> <br />
</TABLE><br />
<br />
==Bullets==<br />
*One<br />
*Two<br />
**Tree<br />
<br />
==Numbering==<br />
#First<br />
#Second<br />
#Third<br />
''Nested Numbering''<br />
#First<br />
##first.one<br />
##first.two<br />
##first.three<br />
#Second<br />
##second.one<br />
##second.two<br />
##second.three<br />
''Mixed Numbering''<br />
#First<br />
#*first.one<br />
#*first.two<br />
#*first.three<br />
#Second<br />
#*second.one<br />
#*second.two<br />
#*second.three<br />
<br />
==indenting first line==<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Please note that all contributions to Lazarus-ccr are considered to be released under the GNU Free Documentation License (see Lazarus-ccr:Copyrights for details). If you don't want your writing to be edited mercilessly and redistributed at will, then don't submit it here.<br />
: You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!<br />
<br />
TEST<br />
<br />
[[es:Probando]]<br />
<br />
'''Another''' ''Test:'' '''''lets go crazy'''''<br />
<br />
I want to create a boxed text:<br />
This is in a '''box''', or so ''I hope''.<br />
<br />
This is outside the box, no? And this is a reference to my incomplete <br />
[http://www/pcug.org.au/~akabaila/StructuralAnalysis/ Structural Analyis] book<br />
ThisIsMyShura<br />
<br />
Weird: this is in the box as well?<br />
<br />
* ''And a bullet in italics?''<br />
<br />
<nowiki>non formatted...</nowiki><br />
<br />
==Humm==<br />
<br />
=Float Like A Butterfly=<br />
<br />
==New section?==<br />
Let's see...<br />
ok<br />
<br />
grusskarte<br />
<br />
if Graphviz was installed, this would draw a pretty graph...<br />
<br />
<graphviz><br />
digraph G { <br />
rankdir=LR; node [fontsize = "8" shape = "rectangle"]; <br />
"Node 1" -> "Node 2";<br />
}<br />
</graphviz><br />
<br />
This is a test to see, if I can edit a page after the Bad-Behavior update. [[User:Vincent|fpcfan]] 22:43, 7 December 2007 (CET)<br />
<br />
==Tutorial links==<br />
[http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 Second Quick Wiki Tutorial]<br />
<br />
*[[LazAutoUpdater#Use|Using LazAutoUpdate CodeSnippet]]<br />
<br />
<nowiki><br />
Use this syntax to include a page within another page: {{:LazAutoUpdater}}<br />
</nowiki><br />
{{:AppIsRunning}}</div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:FPC_documentation&diff=84876Template:FPC documentation2014-12-07T10:24:26Z<p>Alexrus: </p>
<hr />
<div><small><br />
[[FPC documentation/ar|'''{{#language:ar}} (ar)''']] |<br />
[[FPC documentation/de|'''{{#language:de}} (de)''']] |<br />
[[FPC documentation|'''{{#language:en}} (en)''']] |<br />
[[FPC documentation/fr|'''{{#language:fr}} (fr)''']] |<br />
[[FPC documentation/hu|'''{{#language:hu}} (hu)''']] |<br />
[[FPC documentation/id|'''{{#language:id}} (id)''']] |<br />
[[FPC documentation/ja|'''{{#language:ja}} (ja)''']] |<br />
[[FPC documentation/ko|'''{{#language:ko}} (ko)''']] |<br />
[[Документация FPC|'''{{#language:ru}} (ru)''']] |<br />
[[FPC documentation/tr|'''{{#language:tr}} (tr)''']] |<br />
[[FPC documentation/zh_CN|'''{{#language:zh-CN}} (zh_CN)''']] |<br />
[[FPC documentation/zh_TW|'''{{#language:zh-TW}} (zh_TW)''']]<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84875Заглавная страница2014-12-07T10:23:49Z<p>Alexrus: /* О проекте */</p>
<hr />
<div>__NOTOC__<br />
{{Main Page}}<br />
= Добро пожаловать в базу знаний по Lazarus-CCR =<br />
<br />
== О проекте ==<br />
<br />
Этот сайт является базой знаний о Free Pascal, Lazarus и [[Связанные_проекты|родственных проектах]].<br />
<br />
Компилятор Free Pascal имеет хорошую документацию пользователя в нескольких форматах, но [[FPC_разработка|информация для разработчиков FPC, организационная информация]], а также [[Документация_FPC|недостаточно хорошо]] документированные темы находятся здесь.<br />
<br />
В то же время Lazarus имеет определенные пробелы в пользовательской документации. Поэтому эта область представляет собой «открытый документ», или "wiki", где каждый может добавлять и исправлять содержимое.<br />
<br />
Wiki позволяет изменять и дополнять содержимое сайта при помощи браузера! Посмотрите [http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 секундный урок обучения по Wiki] или [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Урок по Wikipedia]. Тренироваться в использовании Wiki можно в [[Sand Box|песочнице]]. Если у вас возникли проблемы, обратитесь к [http://sourceforge.net/users/vlx/ администратору] или отправьте отчёт об ошибке на сайт [http://sourceforge.net/projects/lazarus-ccr Lazarus-CCR]. Замечания и предложения можно также оставить на нашей [[Site Feedback|странице обратной связи]].<br />
<br />
[[History/ru|История]] проекта Lazarus.<br />
<br />
== Документация Free Pascal ==<br />
;[[FPC documentation/ru|Документация FPC]]<br />
: Содержит информацию для разработчиков и всех причастных к разработке и поддержке компилятора Free Pascal: списки людей, занятых переводом на другие языки, организационная информация, процедуры выпуска FPC, списки ToDo и т. д.<br />
<br />
== Документация Lazarus ==<br />
;[[Lazarus Documentation/ru|Документация Lazarus]]<br />
: Вся доступная документация и [[Lazarus_Documentation/ru#.D0.A0.D1.83.D0.BA.D0.BE.D0.B2.D0.BE.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F_Lazarus|уроки]] для Lazarus IDE (включая руководство по Free Pascal Compiler) может быть найдена на странице [[Lazarus Documentation/ru|Lazarus Documentation]]. Большинство страниц ещё «в процессе работы», так что, пожалуйста, не стесняйтесь добавлять ваш опыт к ним. При желании можно также создать персональную страницу с контактной информацией.<br />
<br />
== Загрузка ==<br />
* Компилятор Free Pascal и текущая бета-версия Lazarus находится здесь: [http://sourceforge.net/project/showfiles.php?group_id=89339 Сайт Lazarus на Sourceforge].<br />
* Все доступные на данный момент компоненты и пакеты находятся здесь: [http://sourceforge.net/project/showfiles.php?group_id=92177 Проект Lazarus-CCR на Sourceforge].<br />
* Дополнительную документацию по компонентам можно найти на странице [[Components and Code examples/ru | Компоненты и примеры кода]], если авторы компонента создали для него соответствующую страницу в Вики.<br />
* Исходный код компилятора, его сборки под различные платформы, а также дополнительную информацию и код можно найти на [http://www.freepascal.org/download.var странице загрузки Free Pascal Compiler] и на [http://lazarus.freepascal.org Официальном сайте Lazarus IDE].<br />
* Список сайтов для загрузки ежедневных сборок Lazarus находится [[Lazarus Snapshots Downloads | здесь]].<br />
<br />
== Рассылка ==<br />
Новые и продвинутые пользователи приглашаются в группу Lazarus-ccr [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-announce анонс] или [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-general главный] подписной лист.<br />
<br />
Возможно более полезной будет рассылка посвящённая IDE [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Lazarus] или рассылка анонсов разработчиков [http://www.freepascal.org/maillist.html FreePascal].<br />
<br />
== Кто и над чем работает? ==<br />
Если вы заняты портированием компонента или библиотеки, пожалуйста отправляйте их сюда [[Current conversion projects]]. Такие посты помогут другим разработчикам, которые хотят портировать нужные компоненты… и это предотвратит ситуацию когда два человека портируют один и тот же компонент.<br />
<br />
== Рекомендации, Ссылки и Ресурсы ==<br />
<br />
=== Lazarus IDE ===<br />
Новости и информация о развитии проекта находится на<br />
[http://lazarus.freepascal.org сайте Lazarus IDE]. Идеи, списки ToDo и прочие планы находятся [[Lazarus Development Process|здесь]]. Сборки Lazarus IDE и компилятора FreePascal, а также последние пакеты компилятора и IDE можно загрузить [http://sourceforge.net/project/showfiles.php?group_id=89339 отсюда].<br />
<br />
==== Активные проекты на Lazarus ====<br />
Наши текущие [[Projects using Lazarus|проекты с использованием Lazarus]] с общедоступными вебсайтами и ссылками для скачивания.<br />
<br />
Скриншоты приложений, созданных с использованием Lazarus, можно посмотреть в [[Lazarus Application Gallery|галерее приложений на Lazarus]].<br />
<br />
==== Хорошие сайты и ссылки ====<br />
Наша коллекция ссылок на сайты, посвящённые Delphi/Kylix, находится [[Page Of Code Sites|здесь]]. Пожалуйста, добавляйте туда ссылки на хорошие сайты, которые раньше не были отмечены в этом списке.<br />
<br />
==== Специализированные поисковые движки ====<br />
Есть несколько классных баз знаний и поисковых движков в сети которые могут оказать большую помощь в изучении новых приёмов программирования и решении проблем.<br />
Tamarack Associates обеспечивает быстрый [http://www.tamaracka.com/search.htm поисковый] движок специально для поиска по тематике Borland. Mer Systems Inc. предоставляет похожий [http://www.mers.com/searchsite.html движок].<br />
Другой классный источник информации, имеющий собственный [http://www.efg2.com/Lab/search.htm веб-поиск] — это электронная библиотека [http://www.efg2.com/ Earl F. Glynn’s Computer Lab and Reference].<br />
<br />
==== Маркетинговые примеры использования ====<br />
[[Marketing_Case_Studies|Возможность для пользователей Lazarus]] объяснить — почему, как и для чего они используют Lazarus IDE.<br />
<br />
==== Презентации FPC/Lazarus на выставках и участие в соревнованиях ====<br />
FPC/Lazarus были представлены на стенде на выставках [[Systems 2005]], [[Systems 2006]] и [[Systems 2007]] в г. Мюнхен. На основе полученного опыта была собрана [[Preparing a booth on a trade show|информация]] для облегчения подготовки выставочных стендов и презентаций в будущем. Lazarus и родственные проекты также принимали участие в различных соревнованиях, подготовлена [[Contests|информация]] для потенциальных участников будущих соревнований.<br />
<br />
<br />
<br />
=Авторство=<br />
Настоящее вступление создано [[User:VlxAdmin]].</div>Alexrushttps://wiki.freepascal.org/index.php?title=FPC_documentation/ru&diff=84873FPC documentation/ru2014-12-07T10:23:13Z<p>Alexrus: moved FPC documentation/ru to Документация FPC: Руссификация</p>
<hr />
<div>{{FPC documentation}}<br />
<br />
Эта страница содержит подборку статей о FPC которые ещё не успели попасть в официальную документацию или которые еще не готовы для официальной документации.<br />
<br />
<br />
== Основные составляющие ==<br />
<br />
[[FPC/ru|Компилятор Pascal Compiler (FPC)]] <br />
<br />
[[RTL/ru|Библиотека времени выполнения (RTL)]]<br />
<br />
[[FCL|Бесплатная Библиотека Компонентов (FCL)]]<br />
<br />
[[Packages Base/ru|Основные]] и [[Packages Extra/ru|дополнительные]] пакеты теперь объединены в общий [[Package List|список пакетов]]<br />
<br />
[[Free Vision]]<br />
<br />
[[Textmode IDE|Текстовый режим среды разработки]]<br />
<br />
[[Utilities/ru|Утилиты]] ([[Fpcmake]], [[H2Pas]], [[PPUDump]], [[PPUMove]], [[PTop]])<br />
<br />
[[Contributed Units]]<br />
<br />
[[FPMake]]<br />
<br />
== Дополнительная информация ==<br />
<br />
[[Platform list/ru|Список поддерживаемых архитектур ЦП]]<br />
<br />
[[Pascal Bindings/ru| Использование внешних сторонних библиотек в языке Pascal]]<br />
<br />
[[Road map|"Дорожная" карта]]<br />
<br />
[[Building the VCL with FPC|Создание программ использующих VCL в FPC]]<br />
<br />
[[Building the CLX with FPC|Создание программ использующих CLX в FPC]]<br />
<br />
[[Making the FPC libraries shared|Создание общей библиотеки FPC]]<br />
<br />
[[General Pascal and software Development remarks|Общие сведения о Pascal и основные особенности разработки ПО]]<br />
<br />
[[To Do lists]] (содержит ответы на вопросы, вида: "Чем, Я могу помочь?")<br />
<br />
[[Releasing| Особенности выпущенных версий FPC]]<br />
<br />
[[Compiler development articles|Улучшение компилятора]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:FPC_development&diff=84861Template:FPC development2014-12-06T10:51:34Z<p>Alexrus: </p>
<hr />
<div><small><br />
[[FPC development|'''{{#language:en}} (en)''']] |<br />
[[FPC development/fr|'''{{#language:fr}} (fr)''']] |<br />
[[FPC development/hu|'''{{#language:hu}} (hu)''']] |<br />
[[FPC development/id|'''{{#language:id}} (id)''']] |<br />
[[FPC development/ja|'''{{#language:ja}} (ja)''']] |<br />
[[FPC development/ko|'''{{#language:ko}} (ko)''']] |<br />
[[FPC разработка|'''{{#language:ru}} (ru)''']] |<br />
[[FPC development/tr|'''{{#language:tr}} (tr)''']] |<br />
[[FPC development/zh_CN|'''{{#language:zh-CN}} (zh_CN)''']] |<br />
[[FPC development/zh_TW|'''{{#language:zh-TW}} (zh_TW)''']] <br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84860Заглавная страница2014-12-06T10:50:50Z<p>Alexrus: /* О проекте */</p>
<hr />
<div>__NOTOC__<br />
{{Main Page}}<br />
= Добро пожаловать в базу знаний по Lazarus-CCR =<br />
<br />
== О проекте ==<br />
<br />
Этот сайт является базой знаний о Free Pascal, Lazarus и [[Связанные_проекты|родственных проектах]].<br />
<br />
Компилятор Free Pascal имеет хорошую документацию пользователя в нескольких форматах, но [[FPC_разработка|информация для разработчиков FPC, организационная информация]], а также [[FPC documentation/ru|недостаточно хорошо]] документированные темы находятся здесь.<br />
<br />
В то же время Lazarus имеет определенные пробелы в пользовательской документации. Поэтому эта область представляет собой «открытый документ», или "wiki", где каждый может добавлять и исправлять содержимое.<br />
<br />
Wiki позволяет изменять и дополнять содержимое сайта при помощи браузера! Посмотрите [http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 секундный урок обучения по Wiki] или [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Урок по Wikipedia]. Тренироваться в использовании Wiki можно в [[Sand Box|песочнице]]. Если у вас возникли проблемы, обратитесь к [http://sourceforge.net/users/vlx/ администратору] или отправьте отчёт об ошибке на сайт [http://sourceforge.net/projects/lazarus-ccr Lazarus-CCR]. Замечания и предложения можно также оставить на нашей [[Site Feedback|странице обратной связи]].<br />
<br />
[[History/ru|История]] проекта Lazarus.<br />
<br />
== Документация Free Pascal ==<br />
;[[FPC documentation/ru|Документация FPC]]<br />
: Содержит информацию для разработчиков и всех причастных к разработке и поддержке компилятора Free Pascal: списки людей, занятых переводом на другие языки, организационная информация, процедуры выпуска FPC, списки ToDo и т. д.<br />
<br />
== Документация Lazarus ==<br />
;[[Lazarus Documentation/ru|Документация Lazarus]]<br />
: Вся доступная документация и [[Lazarus_Documentation/ru#.D0.A0.D1.83.D0.BA.D0.BE.D0.B2.D0.BE.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F_Lazarus|уроки]] для Lazarus IDE (включая руководство по Free Pascal Compiler) может быть найдена на странице [[Lazarus Documentation/ru|Lazarus Documentation]]. Большинство страниц ещё «в процессе работы», так что, пожалуйста, не стесняйтесь добавлять ваш опыт к ним. При желании можно также создать персональную страницу с контактной информацией.<br />
<br />
== Загрузка ==<br />
* Компилятор Free Pascal и текущая бета-версия Lazarus находится здесь: [http://sourceforge.net/project/showfiles.php?group_id=89339 Сайт Lazarus на Sourceforge].<br />
* Все доступные на данный момент компоненты и пакеты находятся здесь: [http://sourceforge.net/project/showfiles.php?group_id=92177 Проект Lazarus-CCR на Sourceforge].<br />
* Дополнительную документацию по компонентам можно найти на странице [[Components and Code examples/ru | Компоненты и примеры кода]], если авторы компонента создали для него соответствующую страницу в Вики.<br />
* Исходный код компилятора, его сборки под различные платформы, а также дополнительную информацию и код можно найти на [http://www.freepascal.org/download.var странице загрузки Free Pascal Compiler] и на [http://lazarus.freepascal.org Официальном сайте Lazarus IDE].<br />
* Список сайтов для загрузки ежедневных сборок Lazarus находится [[Lazarus Snapshots Downloads | здесь]].<br />
<br />
== Рассылка ==<br />
Новые и продвинутые пользователи приглашаются в группу Lazarus-ccr [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-announce анонс] или [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-general главный] подписной лист.<br />
<br />
Возможно более полезной будет рассылка посвящённая IDE [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Lazarus] или рассылка анонсов разработчиков [http://www.freepascal.org/maillist.html FreePascal].<br />
<br />
== Кто и над чем работает? ==<br />
Если вы заняты портированием компонента или библиотеки, пожалуйста отправляйте их сюда [[Current conversion projects]]. Такие посты помогут другим разработчикам, которые хотят портировать нужные компоненты… и это предотвратит ситуацию когда два человека портируют один и тот же компонент.<br />
<br />
== Рекомендации, Ссылки и Ресурсы ==<br />
<br />
=== Lazarus IDE ===<br />
Новости и информация о развитии проекта находится на<br />
[http://lazarus.freepascal.org сайте Lazarus IDE]. Идеи, списки ToDo и прочие планы находятся [[Lazarus Development Process|здесь]]. Сборки Lazarus IDE и компилятора FreePascal, а также последние пакеты компилятора и IDE можно загрузить [http://sourceforge.net/project/showfiles.php?group_id=89339 отсюда].<br />
<br />
==== Активные проекты на Lazarus ====<br />
Наши текущие [[Projects using Lazarus|проекты с использованием Lazarus]] с общедоступными вебсайтами и ссылками для скачивания.<br />
<br />
Скриншоты приложений, созданных с использованием Lazarus, можно посмотреть в [[Lazarus Application Gallery|галерее приложений на Lazarus]].<br />
<br />
==== Хорошие сайты и ссылки ====<br />
Наша коллекция ссылок на сайты, посвящённые Delphi/Kylix, находится [[Page Of Code Sites|здесь]]. Пожалуйста, добавляйте туда ссылки на хорошие сайты, которые раньше не были отмечены в этом списке.<br />
<br />
==== Специализированные поисковые движки ====<br />
Есть несколько классных баз знаний и поисковых движков в сети которые могут оказать большую помощь в изучении новых приёмов программирования и решении проблем.<br />
Tamarack Associates обеспечивает быстрый [http://www.tamaracka.com/search.htm поисковый] движок специально для поиска по тематике Borland. Mer Systems Inc. предоставляет похожий [http://www.mers.com/searchsite.html движок].<br />
Другой классный источник информации, имеющий собственный [http://www.efg2.com/Lab/search.htm веб-поиск] — это электронная библиотека [http://www.efg2.com/ Earl F. Glynn’s Computer Lab and Reference].<br />
<br />
==== Маркетинговые примеры использования ====<br />
[[Marketing_Case_Studies|Возможность для пользователей Lazarus]] объяснить — почему, как и для чего они используют Lazarus IDE.<br />
<br />
==== Презентации FPC/Lazarus на выставках и участие в соревнованиях ====<br />
FPC/Lazarus были представлены на стенде на выставках [[Systems 2005]], [[Systems 2006]] и [[Systems 2007]] в г. Мюнхен. На основе полученного опыта была собрана [[Preparing a booth on a trade show|информация]] для облегчения подготовки выставочных стендов и презентаций в будущем. Lazarus и родственные проекты также принимали участие в различных соревнованиях, подготовлена [[Contests|информация]] для потенциальных участников будущих соревнований.<br />
<br />
<br />
<br />
=Авторство=<br />
Настоящее вступление создано [[User:VlxAdmin]].</div>Alexrushttps://wiki.freepascal.org/index.php?title=FPC_development/ru&diff=84859FPC development/ru2014-12-06T10:49:32Z<p>Alexrus: moved FPC development/ru to FPC разработка: Руссификация wiki</p>
<hr />
<div>#REDIRECT [[FPC разработка]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84857Заглавная страница2014-12-06T10:45:56Z<p>Alexrus: /* О проекте */</p>
<hr />
<div>__NOTOC__<br />
{{Main Page}}<br />
= Добро пожаловать в базу знаний по Lazarus-CCR =<br />
<br />
== О проекте ==<br />
<br />
Этот сайт является базой знаний о Free Pascal, Lazarus и [[Связанные_проекты|родственных проектах]].<br />
<br />
Компилятор Free Pascal имеет хорошую документацию пользователя в нескольких форматах, но [[FPC development/ru|информация для разработчиков FPC, организационная информация]], а также [[FPC documentation/ru|недостаточно хорошо]] документированные темы находятся здесь.<br />
<br />
В то же время Lazarus имеет определенные пробелы в пользовательской документации. Поэтому эта область представляет собой «открытый документ», или "wiki", где каждый может добавлять и исправлять содержимое.<br />
<br />
Wiki позволяет изменять и дополнять содержимое сайта при помощи браузера! Посмотрите [http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 секундный урок обучения по Wiki] или [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Урок по Wikipedia]. Тренироваться в использовании Wiki можно в [[Sand Box|песочнице]]. Если у вас возникли проблемы, обратитесь к [http://sourceforge.net/users/vlx/ администратору] или отправьте отчёт об ошибке на сайт [http://sourceforge.net/projects/lazarus-ccr Lazarus-CCR]. Замечания и предложения можно также оставить на нашей [[Site Feedback|странице обратной связи]].<br />
<br />
[[History/ru|История]] проекта Lazarus.<br />
<br />
== Документация Free Pascal ==<br />
;[[FPC documentation/ru|Документация FPC]]<br />
: Содержит информацию для разработчиков и всех причастных к разработке и поддержке компилятора Free Pascal: списки людей, занятых переводом на другие языки, организационная информация, процедуры выпуска FPC, списки ToDo и т. д.<br />
<br />
== Документация Lazarus ==<br />
;[[Lazarus Documentation/ru|Документация Lazarus]]<br />
: Вся доступная документация и [[Lazarus_Documentation/ru#.D0.A0.D1.83.D0.BA.D0.BE.D0.B2.D0.BE.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F_Lazarus|уроки]] для Lazarus IDE (включая руководство по Free Pascal Compiler) может быть найдена на странице [[Lazarus Documentation/ru|Lazarus Documentation]]. Большинство страниц ещё «в процессе работы», так что, пожалуйста, не стесняйтесь добавлять ваш опыт к ним. При желании можно также создать персональную страницу с контактной информацией.<br />
<br />
== Загрузка ==<br />
* Компилятор Free Pascal и текущая бета-версия Lazarus находится здесь: [http://sourceforge.net/project/showfiles.php?group_id=89339 Сайт Lazarus на Sourceforge].<br />
* Все доступные на данный момент компоненты и пакеты находятся здесь: [http://sourceforge.net/project/showfiles.php?group_id=92177 Проект Lazarus-CCR на Sourceforge].<br />
* Дополнительную документацию по компонентам можно найти на странице [[Components and Code examples/ru | Компоненты и примеры кода]], если авторы компонента создали для него соответствующую страницу в Вики.<br />
* Исходный код компилятора, его сборки под различные платформы, а также дополнительную информацию и код можно найти на [http://www.freepascal.org/download.var странице загрузки Free Pascal Compiler] и на [http://lazarus.freepascal.org Официальном сайте Lazarus IDE].<br />
* Список сайтов для загрузки ежедневных сборок Lazarus находится [[Lazarus Snapshots Downloads | здесь]].<br />
<br />
== Рассылка ==<br />
Новые и продвинутые пользователи приглашаются в группу Lazarus-ccr [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-announce анонс] или [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-general главный] подписной лист.<br />
<br />
Возможно более полезной будет рассылка посвящённая IDE [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Lazarus] или рассылка анонсов разработчиков [http://www.freepascal.org/maillist.html FreePascal].<br />
<br />
== Кто и над чем работает? ==<br />
Если вы заняты портированием компонента или библиотеки, пожалуйста отправляйте их сюда [[Current conversion projects]]. Такие посты помогут другим разработчикам, которые хотят портировать нужные компоненты… и это предотвратит ситуацию когда два человека портируют один и тот же компонент.<br />
<br />
== Рекомендации, Ссылки и Ресурсы ==<br />
<br />
=== Lazarus IDE ===<br />
Новости и информация о развитии проекта находится на<br />
[http://lazarus.freepascal.org сайте Lazarus IDE]. Идеи, списки ToDo и прочие планы находятся [[Lazarus Development Process|здесь]]. Сборки Lazarus IDE и компилятора FreePascal, а также последние пакеты компилятора и IDE можно загрузить [http://sourceforge.net/project/showfiles.php?group_id=89339 отсюда].<br />
<br />
==== Активные проекты на Lazarus ====<br />
Наши текущие [[Projects using Lazarus|проекты с использованием Lazarus]] с общедоступными вебсайтами и ссылками для скачивания.<br />
<br />
Скриншоты приложений, созданных с использованием Lazarus, можно посмотреть в [[Lazarus Application Gallery|галерее приложений на Lazarus]].<br />
<br />
==== Хорошие сайты и ссылки ====<br />
Наша коллекция ссылок на сайты, посвящённые Delphi/Kylix, находится [[Page Of Code Sites|здесь]]. Пожалуйста, добавляйте туда ссылки на хорошие сайты, которые раньше не были отмечены в этом списке.<br />
<br />
==== Специализированные поисковые движки ====<br />
Есть несколько классных баз знаний и поисковых движков в сети которые могут оказать большую помощь в изучении новых приёмов программирования и решении проблем.<br />
Tamarack Associates обеспечивает быстрый [http://www.tamaracka.com/search.htm поисковый] движок специально для поиска по тематике Borland. Mer Systems Inc. предоставляет похожий [http://www.mers.com/searchsite.html движок].<br />
Другой классный источник информации, имеющий собственный [http://www.efg2.com/Lab/search.htm веб-поиск] — это электронная библиотека [http://www.efg2.com/ Earl F. Glynn’s Computer Lab and Reference].<br />
<br />
==== Маркетинговые примеры использования ====<br />
[[Marketing_Case_Studies|Возможность для пользователей Lazarus]] объяснить — почему, как и для чего они используют Lazarus IDE.<br />
<br />
==== Презентации FPC/Lazarus на выставках и участие в соревнованиях ====<br />
FPC/Lazarus были представлены на стенде на выставках [[Systems 2005]], [[Systems 2006]] и [[Systems 2007]] в г. Мюнхен. На основе полученного опыта была собрана [[Preparing a booth on a trade show|информация]] для облегчения подготовки выставочных стендов и презентаций в будущем. Lazarus и родственные проекты также принимали участие в различных соревнованиях, подготовлена [[Contests|информация]] для потенциальных участников будущих соревнований.<br />
<br />
<br />
<br />
=Авторство=<br />
Настоящее вступление создано [[User:VlxAdmin]].</div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Related_projects&diff=84856Template:Related projects2014-12-06T10:19:50Z<p>Alexrus: </p>
<hr />
<div><small><br />
[[Related_projects/de|'''{{#language:de}} (de)''']] |<br />
[[Related_projects|'''{{#language:en}} (en)''']] |<br />
[[Related_projects/es|'''{{#language:es}} (es)''']] |<br />
[[Related_projects/fr|'''{{#language:fr}} (fr)''']] |<br />
[[Related_projects/hu|'''{{#language:hu}} (hu)''']] |<br />
[[Related_projects/ko|'''{{#language:ko}} (ko)''']] |<br />
[[Связанные проекты|'''{{#language:ru}} (ru)''']] |<br />
[[Related_projects/tr|'''{{#language:tr}} (tr)''']] |<br />
[[Related_projects/vn|'''{{#language:vi}} (vn)''']] |<br />
[[Related_projects/zh_CN|'''{{#language:zh-CN}} (zh_CN)''']]</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Related_projects/ru&diff=84855Related projects/ru2014-12-06T10:19:02Z<p>Alexrus: /* Связанные проекты */</p>
<hr />
<div>{{Related projects}}<br />
<br />
Кроме Lazarus и FPC, эта wiki содержит странички других связанных проектов:<br />
* [[MSEide & MSEgui]] - альтернативная IDE и набор визуальных компонентов для разработки программ на FreePascal. Работает в Linux и Windows.<br />
* [[KOL-CE/ru|Key Objects Library и Mirror Classes Kit]]:<br />
** Key Objects Library (KOL) - набор объектов для разработки компактных Win32/Windows CE/Pocket PC/Windows Mobile GUI-приложений, в том числе и с использованием Free Pascal.<br />
** Mirror Classes Kit (MCK) - пакет для Lazarus, позволяющий визуально разрабатывать KOL-приложения.<br />
* [[Powtils]] - набор пакетов для веб-разработки с помощью FreePascal и Delphi.<br />
* [[Light Web Server]]<br />
* [[Web Application Template Engine]]<br />
* [[fpGUI]] - ещё один набор визуальных компонентов, написанных с помощью Object Pascal. Он позволяет обеспечивать совместимость исходного кода между Linux, MS Windows, *BSD и встраиваемыми устройствами, такими как Embedded Linux и Windows CE. Компоненты непосредственно связаны с основной оконной системой (Xlib, GDI) и это позволяет избежать использования больших библиотек (таких как Qt, GTK и так далее), что позволяет создавать легко развёртываемые приложения. Также включает визуальную IDE, построенную на основе этих компонентов.</div>Alexrushttps://wiki.freepascal.org/index.php?title=Related_projects/ru&diff=84853Related projects/ru2014-12-06T10:17:21Z<p>Alexrus: moved Related projects/ru to Связанные проекты: Руссификация</p>
<hr />
<div>{{Related projects}}<br />
<br />
== Связанные проекты ==<br />
<br />
Кроме Lazarus и FPC, эта wiki содержит странички других связанных проектов:<br />
* [[MSEide & MSEgui]] - альтернативная IDE и набор визуальных компонентов для разработки программ на FreePascal. Работает в Linux и Windows.<br />
* [[KOL-CE/ru|Key Objects Library и Mirror Classes Kit]]:<br />
** Key Objects Library (KOL) - набор объектов для разработки компактных Win32/Windows CE/Pocket PC/Windows Mobile GUI-приложений, в том числе и с использованием Free Pascal.<br />
** Mirror Classes Kit (MCK) - пакет для Lazarus, позволяющий визуально разрабатывать KOL-приложения.<br />
* [[Powtils]] - набор пакетов для веб-разработки с помощью FreePascal и Delphi.<br />
* [[Light Web Server]]<br />
* [[Web Application Template Engine]]<br />
* [[fpGUI]] - ещё один набор визуальных компонентов, написанных с помощью Object Pascal. Он позволяет обеспечивать совместимость исходного кода между Linux, MS Windows, *BSD и встраиваемыми устройствами, такими как Embedded Linux и Windows CE. Компоненты непосредственно связаны с основной оконной системой (Xlib, GDI) и это позволяет избежать использования больших библиотек (таких как Qt, GTK и так далее), что позволяет создавать легко развёртываемые приложения. Также включает визуальную IDE, построенную на основе этих компонентов.</div>Alexrushttps://wiki.freepascal.org/index.php?title=Main_Page/ru&diff=84852Main Page/ru2014-12-06T10:06:36Z<p>Alexrus: Редирект на заглавную страницу</p>
<hr />
<div>#REDIRECT [[Заглавная страница]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84851Заглавная страница2014-12-06T10:04:22Z<p>Alexrus: Убрано ненужное перенаправление</p>
<hr />
<div>__NOTOC__<br />
{{Main Page}}<br />
= Добро пожаловать в базу знаний по Lazarus-CCR =<br />
<br />
== О проекте ==<br />
<br />
Этот сайт является базой знаний о Free Pascal, Lazarus и [[Related_projects/ru|родственных проектах]].<br />
<br />
Компилятор Free Pascal имеет хорошую документацию пользователя в нескольких форматах, но [[FPC development/ru|информация для разработчиков FPC, организационная информация]], а также [[FPC documentation/ru|недостаточно хорошо]] документированные темы находятся здесь.<br />
<br />
В то же время Lazarus имеет определенные пробелы в пользовательской документации. Поэтому эта область представляет собой «открытый документ», или "wiki", где каждый может добавлять и исправлять содержимое.<br />
<br />
Wiki позволяет изменять и дополнять содержимое сайта при помощи браузера! Посмотрите [http://www.chat11.com/30_Second_Quick_Wiki_Tutorial 30 секундный урок обучения по Wiki] или [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Урок по Wikipedia]. Тренироваться в использовании Wiki можно в [[Sand Box|песочнице]]. Если у вас возникли проблемы, обратитесь к [http://sourceforge.net/users/vlx/ администратору] или отправьте отчёт об ошибке на сайт [http://sourceforge.net/projects/lazarus-ccr Lazarus-CCR]. Замечания и предложения можно также оставить на нашей [[Site Feedback|странице обратной связи]].<br />
<br />
[[History/ru|История]] проекта Lazarus.<br />
<br />
== Документация Free Pascal ==<br />
;[[FPC documentation/ru|Документация FPC]]<br />
: Содержит информацию для разработчиков и всех причастных к разработке и поддержке компилятора Free Pascal: списки людей, занятых переводом на другие языки, организационная информация, процедуры выпуска FPC, списки ToDo и т. д.<br />
<br />
== Документация Lazarus ==<br />
;[[Lazarus Documentation/ru|Документация Lazarus]]<br />
: Вся доступная документация и [[Lazarus_Documentation/ru#.D0.A0.D1.83.D0.BA.D0.BE.D0.B2.D0.BE.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F_Lazarus|уроки]] для Lazarus IDE (включая руководство по Free Pascal Compiler) может быть найдена на странице [[Lazarus Documentation/ru|Lazarus Documentation]]. Большинство страниц ещё «в процессе работы», так что, пожалуйста, не стесняйтесь добавлять ваш опыт к ним. При желании можно также создать персональную страницу с контактной информацией.<br />
<br />
== Загрузка ==<br />
* Компилятор Free Pascal и текущая бета-версия Lazarus находится здесь: [http://sourceforge.net/project/showfiles.php?group_id=89339 Сайт Lazarus на Sourceforge].<br />
* Все доступные на данный момент компоненты и пакеты находятся здесь: [http://sourceforge.net/project/showfiles.php?group_id=92177 Проект Lazarus-CCR на Sourceforge].<br />
* Дополнительную документацию по компонентам можно найти на странице [[Components and Code examples/ru | Компоненты и примеры кода]], если авторы компонента создали для него соответствующую страницу в Вики.<br />
* Исходный код компилятора, его сборки под различные платформы, а также дополнительную информацию и код можно найти на [http://www.freepascal.org/download.var странице загрузки Free Pascal Compiler] и на [http://lazarus.freepascal.org Официальном сайте Lazarus IDE].<br />
* Список сайтов для загрузки ежедневных сборок Lazarus находится [[Lazarus Snapshots Downloads | здесь]].<br />
<br />
== Рассылка ==<br />
Новые и продвинутые пользователи приглашаются в группу Lazarus-ccr [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-announce анонс] или [http://lists.sourceforge.net/lists/listinfo/lazarus-ccr-general главный] подписной лист.<br />
<br />
Возможно более полезной будет рассылка посвящённая IDE [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Lazarus] или рассылка анонсов разработчиков [http://www.freepascal.org/maillist.html FreePascal].<br />
<br />
== Кто и над чем работает? ==<br />
Если вы заняты портированием компонента или библиотеки, пожалуйста отправляйте их сюда [[Current conversion projects]]. Такие посты помогут другим разработчикам, которые хотят портировать нужные компоненты… и это предотвратит ситуацию когда два человека портируют один и тот же компонент.<br />
<br />
== Рекомендации, Ссылки и Ресурсы ==<br />
<br />
=== Lazarus IDE ===<br />
Новости и информация о развитии проекта находится на<br />
[http://lazarus.freepascal.org сайте Lazarus IDE]. Идеи, списки ToDo и прочие планы находятся [[Lazarus Development Process|здесь]]. Сборки Lazarus IDE и компилятора FreePascal, а также последние пакеты компилятора и IDE можно загрузить [http://sourceforge.net/project/showfiles.php?group_id=89339 отсюда].<br />
<br />
==== Активные проекты на Lazarus ====<br />
Наши текущие [[Projects using Lazarus|проекты с использованием Lazarus]] с общедоступными вебсайтами и ссылками для скачивания.<br />
<br />
Скриншоты приложений, созданных с использованием Lazarus, можно посмотреть в [[Lazarus Application Gallery|галерее приложений на Lazarus]].<br />
<br />
==== Хорошие сайты и ссылки ====<br />
Наша коллекция ссылок на сайты, посвящённые Delphi/Kylix, находится [[Page Of Code Sites|здесь]]. Пожалуйста, добавляйте туда ссылки на хорошие сайты, которые раньше не были отмечены в этом списке.<br />
<br />
==== Специализированные поисковые движки ====<br />
Есть несколько классных баз знаний и поисковых движков в сети которые могут оказать большую помощь в изучении новых приёмов программирования и решении проблем.<br />
Tamarack Associates обеспечивает быстрый [http://www.tamaracka.com/search.htm поисковый] движок специально для поиска по тематике Borland. Mer Systems Inc. предоставляет похожий [http://www.mers.com/searchsite.html движок].<br />
Другой классный источник информации, имеющий собственный [http://www.efg2.com/Lab/search.htm веб-поиск] — это электронная библиотека [http://www.efg2.com/ Earl F. Glynn’s Computer Lab and Reference].<br />
<br />
==== Маркетинговые примеры использования ====<br />
[[Marketing_Case_Studies|Возможность для пользователей Lazarus]] объяснить — почему, как и для чего они используют Lazarus IDE.<br />
<br />
==== Презентации FPC/Lazarus на выставках и участие в соревнованиях ====<br />
FPC/Lazarus были представлены на стенде на выставках [[Systems 2005]], [[Systems 2006]] и [[Systems 2007]] в г. Мюнхен. На основе полученного опыта была собрана [[Preparing a booth on a trade show|информация]] для облегчения подготовки выставочных стендов и презентаций в будущем. Lazarus и родственные проекты также принимали участие в различных соревнованиях, подготовлена [[Contests|информация]] для потенциальных участников будущих соревнований.<br />
<br />
<br />
<br />
=Авторство=<br />
Настоящее вступление создано [[User:VlxAdmin]].</div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Main_Page&diff=84850Template:Main Page2014-12-06T10:03:51Z<p>Alexrus: </p>
<hr />
<div><small><br />
[[Main Page/af|'''{{#language:af}} (af)''']] |<br />
[[Main Page/ar|'''{{#language:ar}} (ar)''']] |<br />
[[Main Page/ca|'''{{#language:ca}} (ca)''']] |<br />
[[Main Page/cs|'''{{#language:cs}} (cs)''']] |<br />
[[Main Page/de|'''{{#language:de}} (de)''']] |<br />
[[Main Page|'''{{#language:en}} (en)''']] |<br />
[[Main Page/es|'''{{#language:es}} (es)''']] |<br />
[[Main Page/fa|'''{{#language:fa}} (fa)''']] |<br />
[[Main Page/fi|'''{{#language:fi}} (fi)''']] |<br />
[[Main Page/fr|'''{{#language:fr}} (fr)''']] |<br />
[[Main Page/hu|'''{{#language:hu}} (hu)''']] |<br />
[[Main Page/id|'''{{#language:id}} (id)''']] |<br />
[[Main Page/it|'''{{#language:it}} (it)''']] |<br />
[[Main Page/ja|'''{{#language:ja}} (ja)''']] |<br />
[[Main Page/ko|'''{{#language:ko}} (ko)''']] |<br />
[[Main Page/nl|'''{{#language:nl}} (nl)''']] |<br />
[[Main Page/pl|'''{{#language:pl}} (pl)''']] |<br />
[[Main Page/pt|'''{{#language:pt}} (pt)''']] |<br />
[[Main Page/ro|'''{{#language:ro}} (ro)''']] |<br />
[[Заглавная страница|'''{{#language:ru}} (ru)''']] | <br />
[[Main Page/sk|'''{{#language:sk}} (sk)''']] |<br />
[[Main Page/tr|'''{{#language:tr}} (tr)''']] |<br />
[[Main Page/uk|'''{{#language:uk}} (uk)''']] |<br />
[[Main Page/vn|'''{{#language:vi}} (vn)''']] |<br />
[[Main Page/zh_CN|'''{{#language:zh-CN}} (zh_CN)''']] |<br />
[[Main Page/zh_TW|'''{{#language:zh-TW}} (zh_TW)''']]<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Talk:Main_Page/ru&diff=84849Talk:Main Page/ru2014-12-06T09:54:18Z<p>Alexrus: Blanked the page</p>
<hr />
<div></div>Alexrushttps://wiki.freepascal.org/index.php?title=Grids_Reference_Page/ru&diff=84576Grids Reference Page/ru2014-11-25T14:48:20Z<p>Alexrus: Created page with "{{Grids Reference Page}} == Objective == This text will try to show the user some aspects of the grids components in Lazarus. It is also intended to serve as a guide for user..."</p>
<hr />
<div>{{Grids Reference Page}}<br />
<br />
== Objective ==<br />
This text will try to show the user some aspects of the grids components in Lazarus. It is also intended to serve as a guide for users who have never used grids before (as experienced users generally only need a reference for new functionality).<br />
This text will therefore try to reach the following objectives:<br />
# To introduce the grids components to people with little or no previous Delphi experience.<br />
# To document the differences with respect to Delphi grids components.<br />
# To document the new functionality in Lazarus grids.<br />
# Create reference and examples for the components.<br />
<br />
== Введение ==<br />
A grid is a component that provides a means for displaying data in tabular format. The most obvious characteristic of grids is that they are composed of cells forming rows and columns.<br />
<br />
The type of information that can be shown in a grid varies and mainly depends on what the user wants to show. Generally this information consists of text, colors, images or a combination of those three. <br />
<br />
Given the great variety of information that can be represented, a series of grids exist whose purpose is to facilitate the user in showing specific kinds of information. For instance, there is a grid designed to show text: the '''StringGrid'''. Documentation for that grid can be found [http://lazarus-ccr.sourceforge.net/docs/lcl/grids/tstringgrid.html here]<br />
<br />
== Дерево наследования ==<br />
<pre><br />
[TCustomControl] <br />
| <br />
| <br />
TCustomGrid <br />
| <br />
+-------------+------------+ <br />
| | <br />
TCustomDrawGrid TCustomDbGrid<br />
| | <br />
+--------+--------+ | <br />
| | TDbGrid <br />
TDrawGrid TCustomStringGrid <br />
| <br />
| <br />
TStringGrid <br />
</pre><br />
<br />
== Пример ==<br />
As one of the objectives of this page is to help people with little or no previous Lazarus knowledge let's do a quick starting example of grids in action. Why not, let's make a traditional "hello world" example using the TStringGrid Component.<br />
#Create a new application. <br />
#*From the main menu select: project->New Project<br />
#*In the Create New Project dialog press the "Create Button"<br />
#*A new empty form will be shown.<br />
#Place a grid on the form<br />
#*From the component palette select the "additional" tab<br />
#*Click over the TStringGrid icon []<br />
#*Click over the form, near to the top left corner. A new empty grid appears.<br />
#Place a button on the form<br />
#*From the component palette select the "Standard" tab<br />
#*Click over the TButton icon []<br />
#*Click over a empty area of the form. A new button appears.<br />
#Doubleclick the button from step 3, and write down the following code in the click button handler: <br />
#*<syntaxhighlight>Stringgrid1.Cells[1,1] := 'Hi World!';</syntaxhighlight><br />
#Run the program by clicking the play icon []<br />
#*by pressing the button1, the hello world text should appear in cell column 1, row 1.<br />
<br />
== Различия между Lazarus и Delphi grids ==<br />
The current grid components differ from Delphi grids in several ways. When first developed the Lazarus grids were created from scratch without any attempt to make them fully Delphi-compatible. <br />
<br />
At a later stage, compatibility with Delphi's grids became a desired objective and the Lazarus grids started to conform more closely to the Delphi grid interface. However even this was done without attempting to make every single Lazarus grid property or method match its Delphi counterpart.<br />
Also (because Lazarus grid internals are very different from Delphi grid internals) some Delphi functionality is not possible or needs to be emulated differently in a Lazarus grid from how it would be done in a Delphi grid.<br />
We have achieved greater Delphi compatibility as the Lazarus grids have evolved, and this is desirable.<br />
<br />
=== Различия ===<br />
Известные различия перечислены ниже.<br />
*Редакторы ячеек <br />
*Designtime Behaviour<br />
*Cell Drawing has some differences, see customizing grid section.<br />
<br />
=== Новая функциональность ===<br />
*Custom Columns<br />
*События<br />
*Редактор сетки<br />
<br />
=== Ways in which you can make a Lazarus grid more Delphi-compatible ===<br />
You can make a Lazarus grid look like and behave like a corresponding Delphi. Listed below are property settings which will achieve this. These adjustments are based in a newly created grid.<br />
Entries tagged with [Code] need to be set in code, [Design] entries can be changed at design time.<br />
<br />
*[Design] TitleStyle := tsStandard;<br />
*[Design] DefaultRowHeight := 24; <br />
*[Code] EditorBorderStyle := bsNone; // this might work only on Windows.<br />
*[Code] UseXORFeatures := true;<br />
*[Code] AllowOutBoundEvents := False; {SVN revision 10992 or later}<br />
*[Code] FastEditing := False; (supported in dbgrid. StringGrid requires SVN revision 10992 or later) <br />
*[Design] AutoAdvance := aaNone;<br />
<br />
== Grids Reference ==<br />
=== Information ===<br />
The starting point for reference about TCustomGrid, TDrawGrid, TCustomDrawGrid, TCustomStringGrid and TStringGrid is the [http://lazarus-ccr.sourceforge.net/docs/lcl/grids/index.html unit Grids.pas reference] <br />
<br />
For TCustomDBGrid and TDBgrid it is the <br />
[http://lazarus-ccr.sourceforge.net/docs/lcl/dbgrids/index.html unit DBGrids.pas reference]<br />
<br />
In general, any Delphi reference about the grids should help us to use Lazarus grids (but don't forget that there are several differences between Delphi and Lazarus grids that we have documented); with this in mind and as a temporary place for reference information, this place will be used to document things that don't work the same as in Delphi, as well as any new functionality.<br />
<br />
TODO: the rest of this section will disappear; its content will be moved to [http://lazarus-ccr.sourceforge.net/docs/lcl/grids/index.html unit Grids.pas reference]<br />
<br />
=== TCustomGrid ===<br />
See the full [[doc:lcl/grids/tcustomgrid.html|TCustomGrid Reference]]<br />
==== property AllowOutboundEvents ====<br />
Protected in TCustomGrid, public in TCustomDrawGrid and descendants.<br />
Normally when user click on a point over empty space after cells (for example if grid has three rows but user clicks on an imaginary fourth row), the currently focused cell will move to the nearest cell to the point just clicked. We call this an outbound event. The default value is true as this has been grid's behaviour since begining. This property was added to simulate Delphi behaviour where outbound events are not available, so to enable Delphi compatibility set this property to false.<br />
==== property Columns ====<br />
Lazarus includes the property '''columns''' in TStringGrid and TDrawGrid grids. This property adds what we call custom columns. Custom columns are a collection of objects that hold properties that apply to whole columns, for example column titles (for a StringGrid it will override the value specified in the corresponding Cells[ColumnIndex, RowTitle] property), text alignment, background color, preferred editor, etc. <br />
<br />
Custom columns add extra properties or replace default property values on normal grid columns. Not only this, the '''grid.ColCount''' value may increase or decrease in order to account for the number of custom columns being attached to the grid. At this point, this means that '''grid.ColCount''' = '''grid.FixedCols''' + '''grid.Columns.Count'''.<br />
<br />
For example, if to a base grid with ColCount := 5 and FixedCols := 2 we:<br />
<br />
* Add 3 custom columns, the base grid will be exactly as before, 2 fixed cols and 3 normal cols.<br />
* Add 1 custom column, the base grid will have ColCount := 3, that is 2 fixed cols and 1 normal cols.<br />
* Add 4 custom columns, the base grid will have ColCount := 6, that is 2 fixed cols and 4 normal cols.<br />
<br />
From this we can conclude that:<br />
<br />
* Fixed column properties or count are not enhanced or modified respectively by custom columns.<br />
* '''grid.ColCount''' is usually different from '''grid.Columns.Count''' ('''grid.ColCount'''='''grid.Columns.Count''' only when '''FixedCols'''=0)<br />
<br />
At design time the user can access the '''columns''' property in the Object Inspector to bring up the columns editor. From there you can add, remove or modify custom columns. The editor shows a list of current custom columns; by selecting items in this list the object inspector gets filled with the properties available for each column. The list of custom columns is also available in the Object Inspector component tree view, where columns can be added, deleted or modified. They appear on a lower level under the container grid. <br />
<br />
At runtime, columns can be modified with code like this:<br />
<syntaxhighlight><br />
var<br />
c: TGridColumn;<br />
begin<br />
// Добавляем столбец в сетку<br />
c := Grid.Columns.Add;<br />
// модифицируем<br />
c.title.caption := 'Price'; // Устанаиваем заголовок столбца<br />
c.align := taRightJustify; // Выравнивание содержимого столбца по правому краю<br />
c.color := clMoneyGreen; // Изменение цвета по-умолчанию в clMoneyGreen<br />
c.Index := 0; // Делаем этот столбец первым<br />
// доступ к существующим столбцам<br />
grid.columns[0].Width := 60; // Изменяем ширину столбца из 0 в 60 пикселей<br />
// удаляем существующий столбец<br />
grid.columns.delete(0); // Удаляем колонку 0<br />
....<br />
end;<br />
</syntaxhighlight><br />
<br />
Additionally, when using custom columns, the grids do not allow direct modification of '''grids.colcount'''; adding or removing columns should be done using the '''columns''' property. The explanation is that there is an inconsistency on gradually removing custom columns using '''ColCount''', when '''ColCount''' reaches '''FixedCols''', the grid has no more custom columns. If we now increase '''ColCount''', the new column will not be a custom column but a normal column.<br />
<br />
Currently there are no plans to make the grids use only custom columns.<br />
<br />
=== TCustomDBGrid ===<br />
TCustomDBGrid is the base for TDBGrid. <br />
<br />
They do not expose Col and Row properties. To go to a certain column, use e.g. the SelectedIndex property.<br />
<br />
An interesting public method is AutoSizeColumns.<br />
<br />
==== procedure AutoSizeColumns ====<br />
This procedure sets the column width to the size of the widest text it finds. It can be used after loading a dataset/setting it Active.<br />
<br />
However, contrary to TCustomStringGrid.AutoSizecolumns (see below), this will set your columns very wide unless you have the property dgAutoSizeColumns enabled.<br />
<br />
==== procedure InplaceEditor ====<br />
See example from bug 23103 - ''and insert explanation of what it does/why it is needed. Validate input values? Change what is shown?''<br />
<syntaxhighlight><br />
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: char);<br />
var<br />
S: String;<br />
begin<br />
if (Key in [',','.']) then<br />
begin<br />
//unlike Delphi not all InPlaceEditors are editors for string type, so check!<br />
if (DBGrid1.InplaceEditor is TStringCellEditor) then<br />
begin<br />
S := TStringCellEditor(DBGrid1.InplaceEditor).EditText;<br />
if Pos(',',S) > 0 then<br />
Key := #0<br />
else<br />
Key := ',';<br />
end;<br />
end;<br />
end; <br />
</syntaxhighlight><br />
<br />
=== TCustomStringGrid ===<br />
TCustomStringGrid serves as the base for TStringGrid. It can be used for derived TStringGrid components that want to hide published properties. See [[new intermediate grids]] for more information.<br />
<br />
The following properties or methods are public and are also available to TStringGrid.<br />
<br />
See the full [[doc:lcl/grids/tcustomstringgrid.html|TCustomStringGrid Reference]]<br />
==== procedure AutoSizeColumn(aCol: Integer); ====<br />
This procedure sets the column width to the size of the widest text it finds in all rows for the column aCol. Tip: see the goDblClickAutoSize option to allow columns to be automatically resized when doubleClicking the column border.<br />
<br />
==== procedure AutoSizeColumns; ====<br />
Automatically resizes all columns by adjusting them to fit in the longest text in each column. This is a quick method of applying AutoSizeColumn() for every column in the grid.<br />
==== procedure Clean; overload; ====<br />
Cleans all cells in the grid, fixed or not.<br />
==== procedure Clean(CleanOptions: TGridZoneSet); overload; ====<br />
Cleans all cells in the grid subject to the given CleanOptions. See [[doc:lcl/grids/tgridzoneset.html|TGridZoneSet]] for more information. Some examples:<br />
*Clean all cells: grid.Clean([]); (the same as grid.clean)<br />
*Clean all non fixed cells: grid.Clean([gzNormal]);<br />
*Clean all cells but don't touch grid column headers: Grid.Clean([gzNormal, gzFixedRows]);<br />
<br />
==== procedure Clean(StartCol,StartRow,EndCol,EndRow: integer; CleanOptions:TGridZoneSet); overload; ====<br />
does the same as Clean(CleanOptions:TGridZoneSet) but restricted to the given StartCol,StartRow,EndCol and EndRow. Examples:<br />
*Clean column index 4 to 6 but don't touch grid column headers: many variations, Grid.Clean(4,Grid.FixedRows,6,Grid.RowCount-1,[]); Grid.Clean(4,0,6,Grid,RowCount-1, [gzNormal]); etc.<br />
==== procedure Clean(aRect: TRect; CleanOptions: TGridZoneSet); overload; ====<br />
The same as Clean(StartCol,StartRow,EndCol,EndRow, CleanOptions), just taking a TRect instead of individual cell coordinates. Useful to clean the selection: grid.Clean(Grid.Selection,[]);<br />
==== procedure SaveToCSVFile(AFileName: string; ADelimiter:Char=','; WithHeader:boolean=true); ====<br />
Save grid content to a comma separated values format (CSV) file (added in Lazarus r32179).<br />
<br />
The AFilename argument specifies a file name where the content will be saved. If the file exists, the content will be overwritten. If it doesn't exist, the file will be created.<br />
<br />
ADelimiter (an optional argument) is used to supply a custom separator if required. By default a CSV format is produced (that is, ADelimiter:=',';) for a TAB separated file ADelimiter should be #9.<br />
<br />
The WithHeader parameter is used to decide if a "row header" should be included or not. The row header is a list of field names at the beginning of the output file; its content comes from the last fixed row in the grid.<br />
There is an exception to this rule: if the grid has custom columns, the row header content comes from the custom column titles and not from fixed row cell content. <br />
<br />
If WithHeader is true and the grid does not include a fixed row or custom columns, the row header content will be taken from the first row in the grid.<br />
<br />
Normal CSV data output will start at the first non-fixed row in the grid.<br />
<br />
==== procedure LoadFromCSVFile(AFileName: string; ADelimiter:Char=','; WithHeader:boolean=true); ====<br />
Loads grid content from a comma separated values format (CSV) file (added in Lazarus r32179).<br />
<br />
Columns will be added or deleted to or from the grid as needed according to the number of fields included in each line of the CSV file. Loading a CSV file will not modify the number of fixed rows that already existed in the grid.<br />
<br />
The ''Afilename'' argument specifies the name of the source file with the CSV content.<br />
<br />
''ADelimiter'' optional parameter may be used to specify a different separator or delimiter. An example: for a tab-separated file, ''ADelimiter'' should be #9. Another popular file format is semicolon-delimited file, where ''ADelimiter'' should be ;<br />
<br />
The ''WithHeader'' parameter is used to decide if the first row in the CSV file should be considered as the "header row" or not. If the grid has fixed rows and ''WithHeader'' is true, the column captions for the last fixed row will be taken from the header row. Note however that if the grid has custom columns, the header row will be used as source for the column titles and custom column titles are always shown in the grid's first fixed row or hidden if there are no fixed rows in the grid.<br />
<br />
If the ''LoadFromCSVFile'' procedure has difficulty loading your CSV file (e.g. quotes or spaces being incorrectly interpreted), you could manually load the grid using e.g. [[CsvDocument]]... and of course a patch for ''LoadFromCSVFile'' is always welcome.<br />
<br />
==== property Cols[index: Integer]: TStrings read GetCols write SetCols; ====<br />
Get/set a list of strings from/to the given grid's column index starting from row index 0 to RowCount-1. <br />
===== Examples =====<br />
* Set Example: Set the content of the third column in the grid from a ListBox:<br />
<syntaxhighlight>Grid.Cols[2] := ListBox1.Items;</syntaxhighlight><br />
<br />
* Get Example: Set the content of a Listbox from the grid's column index 4:<br />
<syntaxhighlight>procedure TForm1.FillListBox1;<br />
var <br />
StrTempList: TStringList;<br />
begin<br />
StrTempList := TStringList(Grid.Cols[4]);<br />
if StrTempList<>nil then begin<br />
ListBox1.Items.Assign(StrTempList);<br />
StrTempList.Free;<br />
end;<br />
end;</syntaxhighlight><br />
<br />
===== Notes. =====<br />
This property works differently in Lazarus and in Delphi when getting the data from the grid. <br />
In Lazarus a temporary TStringList object is created for retrieving the column content. It is the responsibility of the user to free this object after use. <br />
<br />
This means also that changes in the returned list will not affect the grids content or layout. <br />
<br />
See the Get Example.<br />
<br />
==== property Rows[index: Integer]: TStrings read GetRows write SetRows; ====<br />
Get/set a list of strings from/to the given grid's row index starting from column index 0 to column ColCount-1. <br />
===== Notes. =====<br />
This property works differently in Lazarus and in Delphi when getting the data from the grid. <br />
In Lazarus a temporary TStringList object is created for retrieving the row content. It is the responsibility of the user to free this object after use. <br />
<br />
This means also that changes in the returned list will not affect the grid's content or layout. <br />
<br />
===== Examples =====<br />
* Set Example: Set the content of the third row in the grid from a ListBox:<br />
<syntaxhighlight>Grid.Rows[2] := ListBox1.Items;</syntaxhighlight><br />
<br />
* Get Example: Set the content of a Listbox from the grid's row index 4:<br />
<syntaxhighlight>procedure TForm1.FillListBox1;<br />
var <br />
StrTempList: TStringList;<br />
begin<br />
StrTempList := TStringList(Grid.Rows[4]);<br />
if StrTempList<>nil then begin<br />
ListBox1.Items.Assign(StrTempList);<br />
StrTempList.Free;<br />
end;<br />
end;</syntaxhighlight><br />
<br />
* An Example that doesn't work, and its Fix: Retrieved string list is read only<br />
<br />
<syntaxhighlight>// this will not work and will cause memory leak<br />
// because returned StringList is not being freed<br />
Grid.Rows[1].CommaText := '1,2,3,4,5';<br />
Grid.Rows[2].Text := 'a'+#13#10+'s'+#13#10+'d'+#13#10+'f'+#13#10+'g'; <br />
<br />
// fixing the first case<br />
Lst:=TStringList.Create;<br />
Lst.CommaText := '1,2,3,4,5';<br />
Grid.Rows[1] := Lst;<br />
Lst.Free;</syntaxhighlight><br />
<br />
==== property UseXORFeatures; ====<br />
Boolean property, default value: False;<br />
<br />
This property controls how the dotted focus rectangle appears in the grid. When True, the rectangle is painted using the XOR raster operation. This allow us to see the focus rectangle no matter what the cells' background color is. When False, the user can control the color of the dotted focus rectangle using the [[FocusColor property]]<br />
<br />
It also controls the look of the column/row resizing. When True, a line shows visually the size that the the column or row will have if the user ends the operation. When False, the column or row resizing takes effect just as the user drags the mouse.<br />
<br />
===TValueListEditor===<br />
TValueListEditor is a control derived from TCustomStringGrid for editing Key-Value pairs.<br />
<br />
====Property DisplayOptions====<br />
Controls various aspects of the TValueListEditor's appearance.<br />
<br />
====Property TitleCaptions====<br />
Sets the values of the title captions (if doColumnTitles is in DisplayOptions).<br />
If DisplayOptions lacks the value doColumnTitles then default captions are used.<br />
<br />
====Property Strings====<br />
Provides access to the list of strings that hold the Key-Value pairs.<br><br />
Key-Value pairs must be in the form:<br><br />
'KeyName=Value'<br />
<br />
====Property ItemProps====<br />
You can use this property to control how the items in the "Value" columns can be edited.<br><br />
This is controlled by setting the ItemProp's EditStyle and ReadOnly properties.<br />
<br />
====Property KeyOptions====<br />
KeyOptions is a set of TKeyOptions controlling whether the user can modify the contents of the "Key" column.<br />
*KeyEdit: the user can edit the name of the Key<br />
*KeyAdd: the user can add keys (by pressing Insert in the grid). KeyAdd requires KeyEdit.<br />
*KeyDelete: the user can delete Key-Value pairs (by pressing Ctrl+Delete).<br />
*KeyUnique: if set, then Keys must have unique names. Attempting to enter a dulpicate Key will raise an exception.<br />
<br />
====Property DropDownRows====<br />
If the cell editor is a picklist (ValueEdit1.ItemProps['key1'].EditStyle=esPickList) this property sets the DropDownCount of the displayed list. The default is 8.<br />
<br />
====Function DeleteRow====<br />
Deletes the Key-Value pair of the indexed row removing the row entirely.<br />
<br />
====Function InsertRow====<br />
Inserts a row in the grid and sets the Key-Value pair. Returns the index of the newly inserted row.<br />
<br />
====Function IsEmptyRow====<br />
Returns true if the indexed row's cells are empty (Keys[aRow]=''; Values[aRow]='').<br />
<br />
====Function FindRow====<br />
Retutns the row that has the specified key name.<br />
<br />
====Function RestoreCurrentRow====<br />
Undoes the editing in the current row (if the editor is still focused). Happens when the user presses the Escape key.<br />
<br />
====Altered behaviour of some properties derived from TCustomStringGrid====<br />
<br />
=====Property Options=====<br />
Due to the nature of TValueListEditor its Options property has certain restrictions<br />
*goColMoving is not allowed in Options (you cannot set it).<br />
*goAutoAddRows can only be set if KeyAdd is in KeyOptions. Setting KeyAdd will automatically set goAutoAddRows.<br />
*goAutoAddRowsSkipContentCheck is not allowed (for the time being, it causes a crash in TValueListeditor: needs fixing).<br />
<br />
=====Property FixedRows=====<br />
Can only be 1 (show column titles) or 0 (don't show column titles)<br />
<br />
=====Property ColCount=====<br />
Is always 2.<br />
<br />
====General comments on the use of TValueListEditor====<br />
When manipulating the contents of the ValueListEditor (the grid), it is recommended to manipulate the underlying Strings property.<br><br />
If you want to insert or delete rows then either do this by accessing the Strings property directly, or use the public methods from TValueListEditor: DeleteRow(), InsertRow(), MoveRow() and ExchangeRow().<br><br />
Trying to use ancestor's methods to manipulate rows or columns (e.g. Columns.Add) might result in a crash.<br />
<br />
== Working with grids ==<br />
=== Customizing grids ===<br />
Grid are components derived from the [http://lazarus-ccr.sourceforge.net/docs/lcl/controls/tcustomcontrol.html TCustomControl] class, and don't have a native widget associated with them which means that grids are not restricted by the look of current interface theme. This can be both an advantage and a disadvantage: usually programmers want to create a uniform-look application. The good news is that Lazarus grids are flexible enough to get something from both worlds; programmers can easily make grids look similar to other native controls, or they can customize the grid to the finest detail so they can obtain almost the same look in any platform or widget interface (that is, with the exception of scrollbars, because their look is still determined by the current theme).<br />
<br />
=== Properties and Events for customizing grids ===<br />
Some properties can affect the way the grid looks by acting when the cell is about to be painted in PrepareCanvas/OnPrepareCanvas by changing default canvas properties like brush color or font. Following is a list of such properties:<br />
*'''AlternateColor.''' With this the user can change the background color appears on alternated rows. This is to allow easy reading off of grid rows data.<br />
*'''Color.''' This sets the primary color used to draw non fixed cells background.<br />
*'''FixedColor.''' This is the color used to draw fixed cells background.<br />
*'''Flat.''' This eliminates the 3d look of fixed cells.<br><br />
*'''TitleFont.''' Font used to draw the text in fixed cells.<br><br />
*'''TitleStyle.''' This property changes the 3D look of fixed cells, there are 3 settings:<br />
**''tsLazarus.'' This is the default look<br />
**''tsNative.'' This tries to set a look that is conforms with the current widgetset theme.<br />
**''tsStandard.'' This style is a more contrasted look, like Delphi grids.<br />
*'''AltColorStartNormal.''' Boolean. If true: alternate color is always in the second row after fixed rows, the first row after fixed rows will be always color. If false: default color is set to the first row as if there were no fixed rows.<br />
*'''BorderColor.''' This sets the grid's border color used when Flat:=True and BorderStyle:=bsSingle;<br />
*'''EditorBorderStyle.''' If set to bsNone under windows the cell editors will not have the border, like in delphi, set to bsSingle by default because the border can be theme specific in some widgetsets and to allow a uniform look.<br><br />
*'''FocusColor.''' The color used to draw the current focused cell if UseXORFeatures is not set, by default this is clRed.<br />
*'''FocusRectVisible.''' Turns on/off the drawing of focused cell.<br />
*'''GridLineColor.''' Color of grid lines in non fixed area.<br />
*'''GridLineStyle.''' Pen style used to draw lines in non fixed area, possible choices are: ''psSolid'', ''psDash'', ''psDot'', ''psDashDot'', ''psDashDotDot'', ''psinsideFrame'', ''psPattern'',''psClear''. default is ''psSolid''.<br />
*'''SelectedColor.''' Color used to draw cell background on selected cells.<br />
*'''UseXORFeatures.''' If set, focus rect is drawn using XOR mode so it should make visible the focus rect in combination with any cell color ackground. It also affects the moving columns look.<br />
*'''DefaultDrawing.''' Boolean. Normally the grids prepare the grid canvas using some properties according to the kind of cell that is being painted. If the user writes an OnDrawCell event handler, a set DefaultDrawing also paints the cell background. If the user draws the cell himself, it is better to turn off this property so painting is not duplicated. In a StringGrid, a set DefaultDrawing draws the text in each cell.<br />
*'''AutoAdvance.''' where the cell cursor will go when pressing enter, or after editing.<br />
*'''TabAdvance.''' where the cell cursor will go when pressing Tab or Shift-Tab.<br />
*'''ExtendedColSizing.''' If true user can resize columns not just at the headers but along the columns height.<br />
Other properties that also affect the grids look.<br />
<br />
'''Options'''.<br />
:Options property is a set with some elements to enable diverse functionality but some are related directly with grid's look. This options can be set at designtime or runtime.<br />
*'''goFixedVertLine, goFixedHorzLine''' it draws a vertical or horizontal line respectively delimiting cells or columns in fixed area, active by default.<br />
*'''goVertLine, goHorzLine''' the same as previous, but for normal browseable area. A grid can be made to simulate a listbox by unsetting both of this elements.<br />
*'''goDrawFocusSelected''' if this element is enabled a selection background is painted in focused cell in addition to focused dotted rectangle (note this doesn't work yet when goRowSelect option is set, in such case row is always painted as if goDrawFocusSelected is set)<br />
*'''goRowSelect''' select the full row instead of individual cells<br />
*'''goFixedRowNumbering''' if set, grid will do numbering of rows in first fixed column<br />
*'''goHeaderHotTracking''' if set, the grid will try to show a different look when the mouse cursor is overing any fixed cell. In order for this to work, desired cell zone needs to be enabled with property HeaderHotZones. Try combining this option with property TitleStyle:=tsNative to get themed hot tracking look.<br />
*'''goHeaderPushedLook''' if set, this element enables a pushed look when clicking any fixed cell. The zone of "pushable" cells is enabled using HeaderPusedZones property.<br />
<br />
(write more)<br />
<br />
=== Description of grid's drawing process ===<br />
Like other custom controls, the grid is drawn using the paint method. In general terms the grid is drawn by painting all rows, and each row by painting its individual cells. <br />
<br />
The process is as follow:<br />
*First the visible cells area is determined: each row is tested to see if it intersects the canvas clipping region; if it's ok, then the visible area is painted by drawing columns of each row. <br />
*The column and row values are used to identify the cell that is about to be painted and again each column is tested for intersection with the clippling region; if everything is ok, some additional properties like the cell's rectangular extent and visual state are passed as arguments to the DrawCell method.<br />
*As the drawing process is running, the visual state of each cell is adjusted according to grid options and position within grid. The visual state is retained in a varible of type TGridDrawState which is a set with following elements:<br />
**''gdSelected'' The cell will have a selected look.<br />
**''gdFocused'' The cell will have a focused look.<br />
**''gdFixed'' Cell have to be painted with fixed cell look.<br />
**''gdHot'' the mouse is over this cell, so paint it with hot tracking look<br />
**''gdPushed'' the cell is being clicked, paint it with pushed look <br />
*'''DrawCell.''' The DrawCell method is virtual and may be overriden in descendant grids to do custom drawing. The information passed to DrawCell helps to identify the particular cell is being painted, the physical area ocuppied in screen and its visible status. See DrawCell reference for details. For each cell the following occurs:<br />
*'''PrepareCanvas.''' In this method, if the DefaultDrawing property is set, the grid canvas is setup with default properties for brush and font based on current visual state. For several design and runtime properties, the text alignment is set to match programmer selection in custom columns if they exists. If DefaultDrawing is false, brush color is set to clWindow and Font color to clWindowText, the text alignment is set with grids defaultTextStyle property value.<br />
*'''OnPrepareCanvas.''' If the programmer wrote an event handler for OnPrepareCanvas event, it is called at this point. This event can be used for doing simple customization like changing cell's background color, font's properties like color, fontface and style, Text layout like different combinations of left, center, top, bottom, right alignment, etc. Any change made to the canvas in this event would be lost, because the next cell drawing will reset canvas again to a default state. So it's safe doing changes only for particular cell or cells and forget about it for the rest. Using this event sometimes helps to avoid using the OnDrawCell grid event, where users would be forced to duplicate the grid's drawing code. Todo: samples of what can be made and what to leave for OnDrawCell?...<br />
*'''OnDrawCell.''' Next if no handler for OnDrawCell event was specified, the grid calls the DefaultDrawCell method which simply paints the cell background using the current canvas brush color and style. If the OnDrawCell handler exists, the grid first paints the cell background but only if DefaultDrawing property was set, then it calls OnDrawCell event to do custom cell painting. Usually programmers want to do custom drawing only for particular cells, but standard drawing for others; in this case, they can restrict custom operation to certain cell or cells by looking into ACol, ARow and AState arguments, and for other cells simply call DefaultDrawCell method and let the grid to take care of it.<br />
*'''Text.''' At this point (only for TStringGrid) if DefaultDrawing property is true, the cell's text content is painted.<br />
*'''Grid lines'''. The last step for each cell is to paint the grid lines: if grid options goVertLine, goHorzLine, goFixedVertLine and goFixedHorzLine are specified the cell grid is drawn at this point. Grids with only rows or only cols can be obtained by changing these options. If the programmer elected to have a "themed" look it is done at this point also (see property TitleStyle).<br />
*'''FocusRect.''' When all columns of current row have been painted it is time to draw the focus rectangle for the current selected cell or for the whole row if goRowSelect option is set.<br />
====Differences with Delphi====<br />
*In Lazarus TCustomGrid.DrawCell method is not abstract and its default implementation does basic cell background filling.<br />
*In Delphi, the cell's text is drawn before entering the OnDrawCell event (see [http://www.freepascal.org/mantis/view.php?id=9619 bug report #9619]).<br />
<br />
===Grid's cell selection===<br />
The location of a grid's current (focused) cell (or row) can be changed using keyboard, mouse or through code. In order to change cell focus successfully to another position, we must test the target position to see if it is allowed to receive cell focus. When using keyboard, the property AutoAdvance performs part of the process by finding what should be the next focused cell. When using mouse clicks or moving by code, focus will not move from the current cell unless the target cell is permitted to receive focus.<br />
<br />
The grid calls function SelectCell to see if a cell is focusable: if this function returns true, then the target cell identified with arguments aCol and aRow is focusable (the current implementation of TCustomGrid simply returns true). TCustomDrawGrid and hence TDrawGrid and TStringGrid override this method to check first if cell is any wider than 0; normally you don't want a 0 width cell selected so a cell with these characteristics is skipped automatically in the process of finding a suitable cell. The other thing the overridden method SelectCell does is to call the user configurable event OnSelectCell: this event receives the cell coordinates as arguments and always returns a default result value of true.<br />
<br />
Once a cell is known to be focusable and we are sure a movement will take place, first the method BeforeMoveSelection is called; this in turns triggers the OnBeforeSelection event. This method's arguments are the coordinates for the new focused cell. At this point any visible editor is hidden too. The "before" word means that selection is not yet changed and current focused coordinates can be accessed with grid.Col and grid.Row properties. <br />
<br />
After that, the internal focused cell coordinates are changed and then MoveSelection method is called; this method's purpose is to trigger the OnSelection event if set (this is a notification that the focused cell has, by this time, already changed and cell coordinates are now available through grid.row and grid.col properties).<br />
<br />
Note that is not good to use OnSelectCell event to detect cell focus changes, as this event will be triggered several times even for the same cell in the process of finding a suitable cell. Is better to use OnBeforeSelection or OnSelection events for this purpose.<br />
<br />
====Differences with Delphi====<br />
*SelectCell and OnSelectCell behaviour is probably different - can't really comment on the differences. In Lazarus they are used in functionality like AutoAdvance which as far as I know doesn't exist in Delphi.<br />
<br />
=== When built-in properties are not enough: derived grids ===<br />
Derived grids usually have to override the following methods:<br><br />
DrawAllRows: Draws all visible rows.<br><br />
DrawRow: Draws all cells in a row.<br><br />
DrawRow draws all cells in the row by first checking if cell is within clipping region, and only draws the cell if it is.<br><br />
DrawCell:<br><br />
DrawCellGrid:<br><br />
DrawCellText:<br><br />
DrawFocusRect:<br><br />
(write me).<br><br />
<br />
=== Save and Retrieve Grid Content ===<br />
The '''SaveToFile''' and '''LoadFromFile''' methods allows a grid to save and retrieve it's layout and data to/from a XML format file. TStringGrid, as inherited from TCustomStringGrid, has also the ability to "export" and "import" its content to/from a Comma Separated Values format file, best known as CSV files. This is described in the '''SaveToCSVFile''' and '''LoadFromCSVFile''' methods reference (TODO: make links).<br />
<br />
<br />
The kind of information that can be saved and then retrieved when using '''SaveToFile''' and '''LoadFromFile''' is determined by the SaveOptions property (of type TSaveOptions) which is a set of options described as follows:<br />
<br />
soDesign: Save & load ColCount,RowCount,FixedCols,FixedRows,<br />
ColWidths, RowHeights and Options (TCustomGrid)<br />
soPosition: Save & load Scroll position, Row, Col and Selection (TCustomGrid)<br />
soAttributes: Save & load Colors, Text Alignment & Layout, etc. (TCustomDrawGrid)<br />
soContent: Save & load Text (TCustomStringGrid)<br />
<br />
soAll: set of all options (soAll:=[soDesign,soPosition,soAttributes,soContent];)<br />
<br />
Not all options apply to all kind of grids, for example, soContent do not apply to TCustomGrid derived grids like TDrawGrid as this kind of grid does not have the concept of "content". TStringGrid is a special kind of grid that "knows" how to handle strings and can use the soContent option if specified.<br />
<br />
The soAttributes option is not used in Lazarus standard grids, is there for derived grids.<br />
<br />
When using '''LoadFromFile''' the grid also uses the SaveOptions property in order to know what kind of information needs to retrieve from the file, so is perfectly possible to specify SaveOptions:=[soDesign,soContent] on saving and only SaveOptions:=[soContent] on loading. <br />
<br />
For a TStringGrid the default SaveOptions value is [soContent], for other kind of grids, SaveOptions is the empty set.<br />
<br />
'''Note:'''<br />
One common issue when saving & retrieving grid data occurs when the user specify the SaveOptions property before '''SaveToFile''' but not before '''LoadFromFile'''. When using '''LoadFromFile''' some time after '''SaveToFile''' have been used, the SaveOptions property is properly set, but if '''LoadFromFile''' is executed on next program run, the SaveOptions property might not have been properly setup, for this reason is recommended to always specify SaveOptions property just before '''LoadFromFile''', or doing it globally at program start like in the following example:<br />
<br />
----<br />
<br />
'''Example:'''<br />
# First, go to menu "File -> New -> Application";<br />
# Put an empty TStringGrid on the form;<br />
# Put a TButton and TOpenDialog on the form;<br />
# Add the event OnCreate for the form;<br />
# Add the event OnClick for the button.<br />
<syntaxhighlight>unit Unit1; <br />
<br />
{$mode objfpc}{$H+}<br />
<br />
interface<br />
<br />
uses<br />
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Grids,<br />
Buttons, StdCtrls, XMLCfg;<br />
<br />
type<br />
<br />
{ TForm1 }<br />
TForm1 = class(TForm)<br />
StringGrid1: TStringGrid;<br />
Button1: TButton;<br />
OpenDialog1: TOpenDialog;<br />
procedure Button1Click(Sender: TObject);<br />
procedure Form1Create(Sender: TObject);<br />
private<br />
{ private declarations }<br />
public<br />
{ public declarations }<br />
end; <br />
<br />
var<br />
Form1: TForm1; <br />
<br />
implementation<br />
<br />
{ TForm1 }<br />
<br />
procedure TForm1.Form1Create(Sender: TObject);<br />
begin<br />
//sets the SaveOptions at creation time of the form <br />
stringgrid1.SaveOptions := [soDesign,soPosition,soAttributes,soContent];<br />
end;<br />
<br />
<br />
procedure TForm1.Button1Click(Sender: TObject);<br />
begin<br />
//Ask if thew Execute method of the OpenDialog was launched <br />
//when this occurs, the user selects an XML file to Load<br />
//wich name was stored in the FileName prop.<br />
<br />
if opendialog1.Execute then<br />
Begin<br />
//Clear the grid <br />
StringGrid1.Clear;<br />
//Load the XML<br />
StringGrid1.LoadFromFile(OpenDialog1.FileName);<br />
//Refresh the Grid<br />
StringGrid1.Refresh;<br />
End;<br />
end;<br />
<br />
initialization<br />
{$I unit1.lrs}<br />
<br />
end.</syntaxhighlight><br />
<br />
----<br />
'''The sample xml file:'''<br />
(Copy the text below into a txt file. Don't forget put the xml header :-))<br />
<syntaxhighlight lang="xml"><?xml version="1.0"?><br />
<CONFIG><br />
<grid version="3"><br />
<saveoptions create="True" position="True" content="True"/><br />
<design columncount="2" rowcount="5" fixedcols="1" fixedrows="1" defaultcolwidth="64" defaultRowHeight="20"><br />
<options><br />
<goFixedVertLine value="True"/><br />
<goFixedHorzLine value="True"/><br />
<goVertLine value="True"/><br />
<goHorzLine value="True"/><br />
<goRangeSelect value="True"/><br />
<goDrawFocusSelected value="False"/><br />
<goRowSizing value="False"/><br />
<goColSizing value="False"/><br />
<goRowMoving value="False"/><br />
<goColMoving value="False"/><br />
<goEditing value="False"/><br />
<goTabs value="False"/><br />
<goRowSelect value="False"/><br />
<goAlwaysShowEditor value="False"/><br />
<goThumbTracking value="False"/><br />
<goColSpanning value="False"/><br />
<goRelaxedRowSelect value="False"/><br />
<goDblClickAutoSize value="False"/><br />
<goSmoothScroll value="True"/><br />
</options><br />
</design><br />
<position topleftcol="1" topleftrow="1" col="1" row="1"><br />
<selection left="1" top="1" right="1" bottom="1"/><br />
</position><br />
<content><br />
<cells cellcount="10"><br />
<cell1 column="0" row="0" text="Title Col1"/><br />
<cell2 column="0" row="1" text="value(1.1)"/><br />
<cell3 column="0" row="2" text="value(2.1)"/><br />
<cell4 column="0" row="3" text="value(3.1)"/><br />
<cell5 column="0" row="4" text="value(4.1)"/><br />
<cell6 column="1" row="0" text="Title Col2"/><br />
<cell7 column="1" row="1" text="value(1.2)"/><br />
<cell8 column="1" row="2" text="value(2.2)"/><br />
<cell9 column="1" row="3" text="value(3.2)"/><br />
<cell10 column="1" row="4" text="value(4.2)"/><br />
</cells><br />
</content><br />
</grid><br />
</CONFIG></syntaxhighlight><br />
----<br />
--[[User:Raditz|Raditz]] 21:06, 11 Jan 2006 (CET) from '''ARGENTINA'''<br />
<br />
=== Grid Cell Editors ===<br />
<br />
The grid uses cell editors to change the content of cells. <br />
<br />
For a specialized grid like TStringGrid, the editor is the usual single line text editor control, but sometimes it's desirable to have other means to enter information. For example:<br />
<br />
#show the open file dialog to find the location of a file so the user doesn't have to type the full path manually<br />
#if the text in the cell represents a date, popup a calendar so we can choose a specific date easily. <br />
<br />
Sometimes the information the user should enter in a cell is restricted to a limited list of words; in this case typing the information directly might introduce errors and validation routines might need to be implemented. We can avoid this by using a cell editor that presents the user with a list containing only the legal values. <br />
<br />
This is also the case for generic grids like TDrawGrid where the user needs some kind of structure to hold the data that will be shown in the grid. In this situation, the information that is entered in the cell editor updates the internal structure to reflect the changes in the grid.<br />
<br />
==== Builtin cell editors ====<br />
<br />
The grids.pas unit already includes some of the most used cell editors ready for use in grids. It is also possible to create new cell editors (custom cell editors) if the built-in editors are not appropiate for a specific task.<br />
<br />
The built-in cell editors are Button, Edit, and Picklist.<br />
<br />
==== Using cell editors ====<br />
<br />
Users can specify what editor will be used for a cell using one of two methods.<br />
<br />
#'''Using a custom column and selecting the ButtonStyle property of the column'''. In this method the user can select the style of the editor that will be shown. Available values are: cbsAuto, cbsEllipsis, cbsNone, cbsPickList, cbsCheckboxColumn, cbsButtonColumn.<br />
#'''Using OnSelectEditor grid event'''. Here the user specifies in the Editor parameter which editor to use for a cell identified for column aCol and row ARow in a TCustomDrawGrid derived grid or TColumn in TCustomDBGrid. For this purpose there is a useful public function of grids, EditorByStyle(), that takes as parameter one of the following values: cbsAuto, cbsEllipsis, cbsNone, cbsPickList, cbsCheckboxColumn, cbsButtonColumn. This method takes precedence over the first one using custom columns. A custom cell editor can be specified here. This event is also the place to setup the editor with values specific to the cell, row or column.<br />
<br />
Setting the ''ButtonStyle'' property only works if a column is created with the ''StringGrid1.Columns.Add;'' statement. Using expression like ''StringGrid1.ColCount:=X;'' will cause an exception.<br />
Setting the ButtonStyle property can be done with a similar code:<br />
<syntaxhighlight>if ColCB< StringGrid1.Columns.Count<br />
then StringGrid1.Columns.Items[ColCB].ButtonStyle:=cbsCheckboxColumn;</syntaxhighlight><br />
<br />
==== Description of editor styles ====<br />
<br />
The following is a description of the editor styles. They are enumerated values of type TColumnButtonStyle and so they are prefixed by 'cbs'. This type was used to remain compatible with Delphi's DBGrid.<br />
<br />
*'''cbsAuto'''<br />
:This is the default editor style for TCustomGrid derived grids. The actual editor class that will be used to edit the cell content depends on several factors. For TCustomGrids it uses a TStringCellEditor class derived from TCustomMaskEdit. This editor is specialized to edit single line strings. It is then used in TStringGrid and TDrawGrid by default. When using Custom Columns, if the programmer filled the Column's PickList property, this behaves as if cbsPickList editor style was set. For a TCustomDBGrid that has a field of type boolean, it behaves as if cbsCheckBoxColumn editor style was specified. This is the recommended value for Custom Cell Editors. TODO: related OnEditingDone.<br />
*'''cbsEllipsis'''<br />
:This editor style is the most generic one. When used, a button appears in the editing cell and programmers could use the OnEditButtonClick grid event to detect when the user has pressed the button and take any action programmed for such a cell. For example a programmer could use this editor style to pop up a calendar dialog to allow the user easily to select a specific date. Other possibilities could be to show a file open dialog to find files, a calculator so user can enter the numeric result of calcs, etc. <br />
<br />
:OnEditButtonClick is just a notification, to find out in which cell a button has been clicked by taking a look at the grid.Row and grid.Col properties.<br />
<br />
:A DBGrid has specific properties to retrieve the active column or field and because this event occurs in the active record, it could update the information in the active field.<br />
<br />
:This editor style is implemented using TButtonCellEditor, a direct descendant of TButton.<br />
*'''cbsNone'''<br />
:This editor style instructs the grid not to use any editor for a specific cell or column; it behaves then, as if the grid were readonly for such a cell or column.<br />
*'''cbsPickList'''<br />
:Used to present the user with a list of values that can be entered. This editor style is implemented using TPickListCellEditor, a component derived from TCustomComboBox. The list of values that are shown is filled in one of two ways depending on the method used to select the editor style.<br />
:#When using custom columns, programmers can enter a list of values using the column's PickList property. [FOR BEGINNERS: TODO: exact procedure to edit the list]<br />
:#In OnSelectEditor, programmers get the TPickListCellEditor instance using the function EditorByStyle(cbsPickList). [[Grids Reference Page#Example: Working with Picklist, How to make it read only and How to fill it at run time.|See here for an example]]<br />
:The value in a TStringGrid grid will automatically reflect the value selected. If necessary the programmer could detect the moment the value is selected by writing an event handler for the grid's OnPickListSelect event, so additional steps can be taken (for example, to process the new value). TODO: related OnEditingDone.<br />
*'''cbsCheckboxColumn'''<br />
:It can be useful when the data content associated with the column is restricted to a pair of values, for example, yes-no, true-false, on-off, 1-0, etc. Instead of forcing the user to type the values for this kind of data in a StringCellEditor or to choose one from a list, cbsCheckboxColumn is used to modify the data of a column by using a checkbox representation that the user can toggle by using a mouse click or pressing the SPACE key (if the column, containing the checkbox is selected and if the StringGrid is editable).<br />
: Getting or setting the value of the checkbox in a cell is done the following way:<br />
<syntaxhighlight><br />
StringGrid1.Cell[x,y]:='Z';<br />
</syntaxhighlight><br />
: where Z shall be replaced by ''0'' for Unchecked, ''1'' for Checked and an empty string for Grayed. Note that any value (string) different from ''0'' and ''1'' will be displayed as a grayed checkbox.<br />
<br />
:If a columns' ButtonStyle property is set to cbsAuto and DBGrid detects that the field associated with the column is a boolean field, then the grid uses this editor style automatically. This automatic selection can be disabled or enabled using DBGrid's OptionsExtra property; setting dgeCheckboxColumn element to false disables this feature.<br />
<br />
:The values that are used to recognize the checked or unchecked states are set in a column's properties ValueChecked and ValueUnchecked.<br />
<br />
:At any moment, the field value can be in one to three states: Unchecked, Checked or Grayed. Internally these states are identified by the following values of type TDBGridCheckBoxState: gcbpUnChecked, gcbpChecked and gcbpGrayed.<br />
<br />
:This editor style doesn't use real TCheckbox components to handle user interaction: the visual representation is given by three built-in bitmap images that corresponds to the possible states of checkbox. The used bitmaps can be customized by writing a handler for DBGrid event OnUserCheckboxBitmap; the handler of this event gets the state of the checkbox in the parameter CheckedState of type TDBGridCheckboxState and a bitmap parameter that the programmer could use to specify custom bitmaps.<br />
*'''cbsButtonColumn'''<br />
:This editor style is used to show a button on every cell on column. Like in the case of cbsCheckboxColumn this editor do not use real buttons, the appearance is defined by current widgetset theme.<br />
<br />
:The user knows what particular button was pressed by handling the grid's OnEditButtonClick and checking grid's col and row. Note that in this particular case, grid's col and row do not identify the currently selected cell, but the cell of the clicked button. Once the OnEditButtonClick event has been handled, and if the user has not modified the grid's col or row in this handler, the grid automatically resets the col and row to reflect the currently selected cell. While handling the OnEditButtonClick the current grid selection is available in grid.Selection which is a TRect property, left and right represent Column indexes, Top and Bottom are row indexes.<br />
<br />
:The button's caption is the corresponding cell string.<br />
<br />
===Editing grids===<br />
The effect of editing is different depending on what kind of grid is used, for example, TStringGrid stores the edited text internally and TDBGrid affects records in a dataset. TDrawGrid doesn't know what to do with the edited text, if the programmer do not take control on it, it's simply discarded.<br>For TDrawGrid (although this should work for all grid classes) in order to access the edited text, the programmer can use the event '''OnSetEditText''' which is triggered every time the user modify something in the editor, the ''aCol'' and ''aRow'' parameters of this event identify the cell being edited, the parameter ''value'' holds the text, this is the recommended method. Another way of access the edited text is taking it directly from the editor once the editing process has ended by using the event '''OnEditingDone'''. This could be accomplished by accessing the internal editor used for editing, in this case, the default "String Cell Editor". For this, there are two methods: The first is by using the event '''OnSelectEditor''' where the parameter ''Editor'' is the instance which will be used to edit a cell, you have to store this instance in a variable, for example TheEditor (of type ''TStringCellEditor''), for later use in '''OnEditingDone'''. The second alternative is using the grid's method '''EditorByStyle''', this method accepts an "editor style" as parameter and it returns the instace of the editor corresponding to that style. In our case knowing that the style cbsAuto returns the default cell editor, in the '''OnEditingDone''' event handler we can use directly TheEditor := Grid.EditorByStyle(cbsAuto). You can then get the text with ''TheEditor.Text''. If you use this method note that "with great power, comes great responsibility".<br />
====Options and properties that affect editing====<br />
The editing behavior is controlled by a number of properties and options, virtually any adjustment or options that affects editing requires an editable grid or such adjustment might be ignored.<br><br />
At start the editable state of the grids is different, for TDrawGrid and TStringGrid editing is disabled, for TDbGrid is enabled by default.<br><br />
The '''Options''' property has several items that deal with editing, they are described below:<br><br />
*'''goEditing, dgEditing (in DbGrid)'''. This option changes the editable state of the grid, can be changed at runtime because it is checked when editing is about to be started.<br />
*'''goAlwaysShowEditor'''. Normally the editor is hidden and it becomes visible only when it's needed. With this option, the editor will be visible all the time, if grid is not editable, this option is ignored and editor is always hidden.<br />
cell1 column="0" row="0" text="Title Col1"/><br />
selection left="1" top="1" right="1" bottom="1"/><br />
<br />
== Howto and Examples==<br />
==== Focusing a cell ====<br />
<br />
Focusing a cell in TStringGrid is easy. Note that counting starts from zero not 1. So to focus row 10, column 9, do:<br />
<br />
<syntaxhighlight>StringGrid1.row := 9;<br />
StringGrid1.col := 8;</syntaxhighlight><br />
<br />
===Example: How to set a custom cell editor===<br />
<br />
See lazarus/examples/gridexamples/gridcelleditor/gridcelleditor.lpi (from laz 1.2)<br />
<br />
===Example: How to set a memo editor for dbgrids===<br />
You can, of course, use another control instead of a TMemo. Adjust to taste.<br />
Adapted from [http://forum.lazarus.freepascal.org/index.php?topic=3640.0] (simplified to use the SelectedFieldRect property, see [http://forum.lazarus.freepascal.org/index.php/topic,8713.msg43288.html#msg43288])<br />
<br />
* Place a memo control (or whatever control you want) on your form, set whatever properties you want and set visible to false. This will be used when editing a grid cell. We'll use GridCellMemo in this example.<br />
<br />
* In the OnSelectEditor event put the following code - adapt if you don't want to edit logical column 3, physical column 4:<br />
<syntaxhighlight><br />
if (Column.DesignIndex = 3) then<br />
begin<br />
GridCellMemo.BoundsRect := DbGrid.SelectedFieldRect;<br />
GridCellMemo.Text:=Column.Field.AsString;<br />
Editor := GridCellMemo;<br />
end;<br />
</syntaxhighlight><br />
<br />
* Suppose your datasource is called Datasource1 and DBGrid is called ResultsGrid. Then, in the OnEditingDone event for the GridCellMemo put the following:<br />
(The original forum post used the OnChange event, which would fire each time the content is changed. Using OnEditingDone only fires after the user is finished with his edits.)<br />
<syntaxhighlight><br />
if not(Datasource1.State in [dsEdit, dsInsert]) then<br />
Datasource1.Edit;<br />
<br />
Datasource1.DataSet.FieldByName(ResultsGrid.SelectedField.FieldName).AsString:=GridCellMemo.Text;<br />
</syntaxhighlight><br />
<br />
===Example: How to add a button editor===<br />
<br />
<syntaxhighlight>// Conditionally show button editor in column index 1 or 2 if <br />
// cell in column index 1 is empty <br />
procedure TForm1.StringGrid1SelectEditor(Sender: TObject; aCol, aRow: Integer; <br />
var Editor: TWinControl);<br />
begin<br />
if (aCol = 1) or (aCol = 2) then<br />
if StringGrid1.Cells[1,aRow] = '' then<br />
begin<br />
Editor := StringGrid1.EditorByStyle(cbsEllipsis);<br />
end;<br />
end;<br />
<br />
// Triggering Action ...<br />
procedure TForm1.StringGrid1EditButtonClick(Sender: TObject);<br />
begin<br />
if StringGrid1.Col = 1 then Showmessage('column 1 editor clicked');<br />
if StringGrid1.Col = 2 then Showmessage('column 2 editor clicked');<br />
end;</syntaxhighlight><br />
<br />
<br />
===Example: Avoid display Text Field as (memo) for DBGrids===<br />
<br />
When you use SQL sentences like "Select * from A" maybe you get in a cell of grid something like (Memo) instead of your text. There so many ways to fix this, but maybe the easiest is change your "Select * from A" by "Select Cast(Column as TEXT) as Column from A". yeah i know it is not pascal code but is a common problem when you use a DBGrid.<br />
<br />
<syntaxhighlight><br />
var<br />
sql : UTF8String;<br />
Queryu : TSQLQuery;<br />
.....<br />
sql := 'SELECT cast(Name as TEXT) as Name FROM Client';<br />
Queryu.SQL.Text:=sql;<br />
</syntaxhighlight><br />
<br />
<br />
===Example: Working with Picklist, How to make it read only and How to fill it at run time.===<br />
Using grid's event OnSelectEditor one can customize how PickList editor (see cbsPickList button style) behaves. In next example the picklist editor from column 1 is modified so on odd rows the user can enter values by typing, on even rows the values are limited to the ones contained in its list. Also, this example show how to fill the list with different values depending on the row being processed.<br />
<syntaxhighlight><br />
procedure TForm1.gridSelectEditor(Sender: TObject; aCol, aRow: Integer;<br />
var Editor: TWinControl);<br />
begin<br />
if aCol=1 then begin<br />
if (Editor is TCustomComboBox) then<br />
with Editor as TCustomComboBox do begin<br />
if (aRow mod 2=0) then<br />
Style := csDropDown<br />
else<br />
Style := csDropDownList;<br />
case aRow of<br />
1:<br />
Items.CommaText := 'ONE,TWO,THREE,FOUR';<br />
2:<br />
Items.CommaText := 'A,B,C,D,E';<br />
3:<br />
Items.CommaText := 'MX,ES,NL,UK';<br />
4:<br />
Items.CommaText := 'RED,GREEN,BLUE,YELLOW';<br />
end;<br />
end;<br />
end;<br />
end;<br />
</syntaxhighlight><br />
<br />
===Aligning text in StringGrids===<br />
This code shows how to use different text alignments in columns 2 and 3.<br />
<syntaxhighlight>procedure TForm1.StringGrid1PrepareCanvas(sender: TObject; aCol, aRow: Integer;<br />
aState: TGridDrawState);<br />
var<br />
MyTextStyle: TTextStyle;<br />
begin<br />
if (aCol=2) or (aCol=3) then<br />
begin<br />
MyTextStyle := StringGrid1.Canvas.TextStyle;<br />
if aCol=2 then<br />
MyTextStyle.Alignment := taRightJustify <br />
else <br />
if aCol=3 then<br />
MyTextStyle.Alignment := taCenter;<br />
StringGrid1.Canvas.TextStyle := MyTextStyle;<br />
end;<br />
end;</syntaxhighlight><br />
<br />
===Multilines in Grids, DBGrid===<br />
This sample shows how to make multilined text in cell [3,2]. It works the same for DBGrid where OnPrepareCanvas have parameters for dealing with TColumns and from there with TFields.<br />
<syntaxhighlight>procedure TForm1.StringGrid1PrepareCanvas(sender: TObject; aCol, aRow: Integer;<br />
aState: TGridDrawState);<br />
var<br />
MyTextStyle: TTextStyle;<br />
begin<br />
if (aRow=2) or (aCol=3) then<br />
begin<br />
MyTextStyle := StringGrid1.Canvas.TextStyle;<br />
MyTextStyle.SingleLine := false;<br />
StringGrid1.Canvas.TextStyle := MyTextStyle;<br />
end;<br />
end;</syntaxhighlight><br />
<br />
=== Validating Entered Values ===<br />
Lazarus version 0.9.29 introduces the StringGrid OnValidateEntry event of type TValidateEntryEvent which has the following declaration:<br />
<br />
<syntaxhighlight>TValidateEntryEvent =<br />
procedure(sender: TObject; aCol, aRow: Integer;<br />
const OldValue: string; var NewValue: string) of object;</syntaxhighlight><br />
<br />
aCol,aRow are the cell coordinates of cell being validated.<br />
OldValue is the value that was in cells[aCol,aRow] before editing started.<br />
NewValue is the value that will be finally inserted in cells[aCol,aRow].<br />
<br />
Because of the way StringGrid works by setting the cell value while user is editing (see grid's OnSetEditText event and SetEditText method), when the OnValidateEntry event triggers, the cell already contains the entered value (valid or not); using the event arguments OldValue and NewValue the cell value can be validated and changed if needed.<br />
<br />
Usually validation occurs when the user has moved to another cell. If validation then fails, it is desirable to keep the cell editor visible/focused so the entered value can be corrected by user. To let the grid know that validation has failed, an exception needs to be raised. The grid will handle the exception to Application.HandleException and any movement is cancelled. <br />
<br />
For example, suppose that cell[1,1] should hold only values 'A' or 'B', validation could be made with:<br />
<br />
<syntaxhighlight>procedure TForm1.GridValidateEntry(sender: TObject; aCol,<br />
aRow: Integer; const OldValue: string; var NewValue: String);<br />
begin<br />
if (aCol=1) and (aRow=1) then begin<br />
if grid.Cells[aCol,aRow]<>'A') and grid.Cells[aCol,aRow]<>'B') then begin<br />
// set a new valid value so user can just press RETURN to continue for example.<br />
NewValue := 'A';<br />
// another option is reverting to previous cell value (which is assumed to be valid)<br />
// NewValue := OldValue;<br />
raise Exception.Create('Only A or B are allowed here');<br />
end else begin<br />
// if no exception is raised, it is assumed the value is valid, yet if necessary<br />
// the final value can still be changed by filling NewValue with a different value<br />
<br />
// computer knows better :)<br />
if grid.Cells[1,1]='A' then <br />
NewValue := 'B' <br />
else <br />
NewValue := 'A';<br />
end;<br />
end;<br />
end;</syntaxhighlight><br />
<br />
=== Sorting Columns or Rows ===<br />
Property ColumnClickSorts allows grid to be sorted automatically when user clicks a column header. Clicking the same column many times switches the sort order. Default column sort images are shown to indicate which column was clicked.<br />
<br />
In code you can use SortColRow() method. Its first parameter is a boolean value which indicates true if a column is to be sorted or false for a row, the next parameter is the column or row index, the next parameters are optional and select subrange of rows (for column sorting) or columns (for row sorting) to be sorted. If the last parameters are not specified, the whole column or row is sorted. Sorting uses QuickSort algorithm, it could be changed if a descendant grid overrides the sort() method and calls doCompareCells for cell compare.<br />
<br />
By default it sorts cell content as strings either in ascending or descending order which is selectable with property SortOrder, by default it uses ascending order.<br />
<syntaxhighlight>// sort column 3 in ascending order<br />
grid.SortColRow(true, 3);<br />
<br />
// sort column 3 in descending order, skip fixed rows a top<br />
grid.SortOrder := soDescending; // or soAscending<br />
grid.SortColRow(true, 3, grid.FixedRows, grid.RowCount-1);</syntaxhighlight><br />
<br />
For custom sorting of numbers, dates, states, etc. StringGrid has the OnCompareCells event which users can handle for example this way:<br />
<syntaxhighlight>procedure TForm1.GridCompareCells(Sender: TObject; ACol, ARow, BCol, BRow: Integer; var Result: integer);<br />
begin<br />
// Result will be either <0, =0, or >0 for normal order.<br />
result := StrToIntDef(Grid.Cells[ACol,ARow],0)-StrToIntDef(Grid.Cells[BCol,BRow],0);<br />
// For inverse order, just negate the result (eg. based on grid's SortOrder).<br />
if StringGrid1.SortOrder = soDescending then<br />
result := -result;<br />
end;</syntaxhighlight><br />
<br />
You can use OnCompareCells also when automatic column sorting is enabled through ColumnClickSorts property.<br />
<br />
=== Sorting columns or rows in DBGrid with sort arrows in column header===<br />
Here is an example that will sort a '''DBgrid''' using the '''OnTitleClick''' event<br />
and a '''TSQLQuery''' and indexes. This should also work for any compatible data set such as '''TbufDataset'''.<br />
The function uses the '''column.tag''' property to store the sort state for each column you click on, so when you go back to one you have already sorted it will pick the correct sort arrow to display.<br />
<br />
'''Prerequisites:'''<br />
* You will need an imagelist to store the up/down sort arrows. Assign your imagelist to the dbgrid's '''TitleImageList''' property.<br />
* Ensure the '''[[doc:fcl/sqldb/tsqlquery.maxindexescount.html|TSQLQuery.MaxIndexesCount]]''' is large enough to hold the new indexes you will be creating. For this example I had it set to 100.<br />
* You will also need a private var to store the last column used to sort, for this example I have called it '''FLastColumn'''.<br />
<br />
For this example the '''TSQLQuery''' used is called OpenQuery.<br />
<br />
{{Note|As of March 21st 2013, '''TSQLQuery''' has no way to clear indexes, but as a work around you can set '''unidirectional''' to true, then set it to false and this will clear the indexes.}}<br />
<br />
In order to reuse the '''TSQLQuery''' component with another SQL statement, the indexes must be cleared after sorting or an exception will be raised when you open the '''TSQLQuery''' with a different SQL statement.<br />
<br />
<syntaxhighlight><br />
FLastColumn: TColumn; //store last grid column we sorted on<br />
<br />
procedure TSQLForm.ResultsGridTitleClick(Column: TColumn);<br />
const<br />
ImageArrowUp=0; //should match image in imagelist<br />
ImageArrowDown=1; //should match image in imagelist<br />
var<br />
ASC_IndexName, DESC_IndexName:string;<br />
procedure UpdateIndexes;<br />
begin<br />
// Ensure index defs are up to date<br />
OpenQuery.IndexDefs.Updated:=false; {<<<--This line is critical. IndexDefs.Update will not<br />
update if already true, which will happen on the first column sorted.}<br />
Openquery.IndexDefs.Update;<br />
end;<br />
begin<br />
ASC_IndexName:='ASC_'+Column.FieldName;<br />
DESC_IndexName:='DESC_'+Column.FieldName;<br />
// indexes can't sort binary types such as ftMemo, ftBLOB<br />
if (Column.Field.DataType in [ftBLOB,ftMemo,ftWideMemo]) then<br />
exit;<br />
// check if an ascending index already exists for this column.<br />
// if not, create one<br />
if OpenQuery.IndexDefs.IndexOf(ASC_IndexName) = -1 then<br />
begin<br />
OpenQuery.AddIndex(ASC_IndexName,column.FieldName,[]);<br />
UpdateIndexes; //ensure index defs are up to date<br />
end;<br />
// Check if a descending index already exists for this column<br />
// if not, create one<br />
if OpenQuery.IndexDefs.IndexOf(DESC_IndexName) = -1 then<br />
begin<br />
OpenQuery.AddIndex(DESC_IndexName,column.FieldName,[ixDescending]);<br />
UpdateIndexes; //ensure index defs are up to date<br />
end;<br />
<br />
// Use the column tag to toggle ASC/DESC<br />
column.tag := not column.tag;<br />
if boolean(column.tag) then<br />
begin<br />
Column.Title.ImageIndex:=ImageArrowUp;<br />
Openquery.IndexName:=ASC_IndexName;<br />
end <br />
else<br />
begin<br />
Column.Title.ImageIndex:=ImageArrowDown;<br />
OpenQuery.IndexName:=DESC_IndexName;<br />
end;<br />
// Remove the sort arrow from the previous column we sorted<br />
if (FLastColumn <> nil) and (FlastColumn <> Column) then<br />
FLastColumn.Title.ImageIndex:=-1;<br />
FLastColumn:=column;<br />
end;<br />
</syntaxhighlight><br />
<br />
=== Selecting Records in a DBGrid using checkboxes ===<br />
The objective is to be able to select arbitrary records in a dbgrid using checkboxes, the grid has the ability to show checkboxes automatically when it detects there are boolean fields, for other field types the user can manually choose the cbsCheckboxColumn ButtonStyle for the column. For this kind of columns the user just click the checkbox and the field content is modified accordingly.<br />
<br />
But what happen if there is no such available field in our dataset? or we don't want the grid enter edit state when checking the checkbox?. Adding a fieldless column with ButtonStyle=cbsCheckboxColumn will show all checkboxes grayed and disabled because there is no field linked to this column and so nothing to modify. As we want to handle the checkbox state ourselves we need to store the state somewhere for each record. For this we can use the class TBookmarklist (defined in dbgrids.pas unit) where property CurrentRowSelected can tell if the current record is selected or not. By using dbgrid events OnCellClick and OnUserCheckboxState we can track the checkbox state.<br />
<br />
Note this technique needs Lazarus r31148 or later which implements event OnUserCheckboxState.<br />
<br />
<syntaxhighlight><br />
...<br />
uses ..., dbgrids, stdctrls, ...<br />
<br />
type<br />
<br />
{ TForm1 }<br />
<br />
TForm1 = class(TForm)<br />
...<br />
procedure DBGrid1CellClick(Column: TColumn);<br />
procedure DBGrid1UserCheckboxState(sender: TObject; column: TColumn; var AState: TCheckboxState);<br />
procedure FormCreate(Sender: TObject);<br />
procedure FormDestroy(Sender: TObject);<br />
...<br />
private<br />
RecList: TBookmarklist;<br />
...<br />
end;<br />
<br />
procedure TForm1.DBGrid1CellClick(Column: TColumn);<br />
begin<br />
if Column.Index=1 then<br />
RecList.CurrentRowSelected := not RecList.CurrentRowSelected;<br />
end;<br />
<br />
procedure TForm1.FormCreate(Sender: TObject);<br />
begin<br />
RecList := TBookmarkList.Create(DbGrid1);<br />
end;<br />
<br />
procedure TForm1.FormDestroy(Sender: TObject);<br />
begin<br />
RecList.Free;<br />
end;<br />
<br />
procedure TForm1.DBGrid1UserCheckboxState(sender: TObject; column: TColumn; var AState: TCheckboxState);<br />
begin<br />
if RecList.CurrentRowSelected then<br />
AState := cbChecked<br />
else<br />
AState := cbUnchecked;<br />
end;<br />
</syntaxhighlight><br />
<br />
<br />
=== Highlighting the selected cell column and row ===<br />
In Lazarus revision 40276 an option ('''gdRowHighlight''') has been added, it works similar to '''goRowSelect''' but it uses a lighter color for selection and the focus rect is only selected cell and not in the whole row. This works fine for rows, but how about columns?. <br />
<br />
This section presents a way to highlight columns, rows or both (an example that highlights only column and row headers can be found in lazarus/examples/gridexamples/spreadsheet, this howto is really an extension of that example). This uses two grid events: '''OnBeforeSelection''' and '''OnPrepareCanvas''', drawing is not necessary. <br />
<br />
The event '''OnBeforeSelection''' is triggered when the selection is about the change, in this event we can know what cell is currently selected and what cell will be selected next. We use this information to invalidate the whole row or column of both the old and the new cells. When the next paint cycle starts, the grid will be instructed to paint the cells that belong to the invalidated areas. One of the first steps for painting is calling the '''OnPrepareCanvas''' event (if it exists) to setup default canvas properties. We use this event to set up the highlighted row or column:<br />
<syntaxhighlight><br />
procedure TForm1.gridBeforeSelection(Sender: TObject; aCol, aRow: Integer);<br />
begin<br />
// we can decide here if we want highlight columns, rows or both<br />
// in this example we highlight both<br />
if Grid.Col<>aCol then<br />
begin<br />
// a change on current column is detected<br />
grid.InvalidateCol(aCol); // invalidate the new selected cell column<br />
grid.InvalidateCol(grid.Col); // invalidate the current (it will be the 'old') selected column<br />
end;<br />
if Grid.Row<>aRow then<br />
begin<br />
grid.InvalidateRow(aRow); // invalidate the new selected cell row<br />
grid.InvalidateRow(grid.Row); // invalidate the current (it will be the 'old') selected row <br />
end;<br />
end; <br />
<br />
procedure TForm1.gridPrepareCanvas(sender: TObject; aCol, aRow: Integer;<br />
aState: TGridDrawState);<br />
begin<br />
if gdFixed in aState then<br />
begin<br />
if (aCol=grid.Col) or (aRow=grid.Row) then<br />
grid.Canvas.Brush.Color := clInactiveCaption; // this would highlight also column or row headers<br />
end else<br />
if gdFocused in aState then begin<br />
// we leave alone the current selected/focused cell<br />
end else<br />
if (aCol=Grid.Col) or (aRow=grid.Row) then<br />
grid.Canvas.Brush.Color := clSkyBlue; // highlight rows and columns with clSkyBlue color<br />
end;<br />
</syntaxhighlight><br />
<br />
[[Category:Tutorials]]<br />
[[Category:Components]]<br />
[[Category:Lazarus]]<br />
[[Category:Grids]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Grids_Reference_Page&diff=84574Template:Grids Reference Page2014-11-25T14:27:42Z<p>Alexrus: </p>
<hr />
<div><small><br />
[[Grids Reference Page/de|'''{{#language:de}} (de)''']] |<br />
[[Grids Reference Page |'''{{#language:en}} (en)''']] |<br />
[[Grids Reference Page/es|'''{{#language:es}} (es)''']] |<br />
[[Grids Reference Page/pl|'''{{#language:pl}} (pl)''']] |<br />
[[Grids Reference Page/ru|'''{{#language:ru}} (ru)''']]<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Grids_Reference_Page&diff=84573Template:Grids Reference Page2014-11-25T14:27:13Z<p>Alexrus: </p>
<hr />
<div><small><br />
[[Grids Reference Page/de|'''{{#language:de}} (de)''']] |<br />
[[Grids Reference Page |'''{{#language:en}} (en)''']] |<br />
[[Grids Reference Page/es|'''{{#language:es}} (es)''']] |<br />
[[Grids Reference Page/pl|'''{{#language:pl}} (pl)''']]<br />
[[Grids Reference Page/ru|'''{{#language:ru}} (ru)''']] |<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Lazarus_known_issues_(things_that_will_never_be_fixed)&diff=83239Template:Lazarus known issues (things that will never be fixed)2014-09-26T04:12:05Z<p>Alexrus: </p>
<hr />
<div><small><br />
{{MenuTranslate | page=Lazarus_known_issues_(things_that_will_never_be_fixed)}}<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Talk:Translations_/_i18n_/_localizations_for_programs/ru&diff=83237Talk:Translations / i18n / localizations for programs/ru2014-09-26T04:08:38Z<p>Alexrus: moved Talk:Translations / i18n / localizations for programs/ru to Talk:Переводы / i18n / локализация программ</p>
<hr />
<div>== Что-то перемудрили ==<br />
Пора упростить, но не уверен, что я прав на все сто. Сейчас для локализации проекта, написанного на Лазарусе, достаточно следующего:<br />
# вписать в uses к проекту модуль DefaultTranslator<br />
# создать папку locale рядом с создаваемым экзешником<br />
# в настройках проекта, в разделе i18n, включить генерацию po-файла и прописать путь к созданной папке locale<br />
# скопировать в ту папку содержимое из папки C:\lazarus\lcl\languages для подключения локализации lcl-евских констант (это не обязательный шаг: можно это либо не копировать, либо разместить по каким-то стандартным общим путям, которые смотрит модуль DefaultTranslator)<br />
# скомпилировать проект, чтобы сгенерировать po-файл проекта locale\<имя проекта>.po<br />
# воспользоваться утилитой типа POedit (https://ru.wikipedia.org/wiki/Poedit) чтобы создать на основании генерёного <имя проекта>.po файл <имя проекта>.ru.po и повписывать туда переводы.<br />
<br />
В генерируемый для проекта файл при перекомпиляции добавляются все встречаемые компилятором resourcestring и все строки из файлов форм. Устаревшие, похоже, автоматически не удаляются. Или я не нашёл где удаление включить. После перекомпиляции то ли обновляются все <имя проекта>.*.po файлы, а не только основной, то ли POedit умеет сама из основного подтягивать изменения - в общем, например, русскую локализацию можно править, открывая после перекомпиляции проекта двойным щелчком русский <имя проекта>.ru.po - там все последние пополнения перечня локализуемых строк уже будут отражены.<br />
<br />
Профит! Больше никакого огорода городить не надо, чтобы программа была переведена.<br />
<br />
Единственная беда - этот механизм не занимается размерами элементов формы, содержащих локализуемый текст. Так что надо либо искать что-то, что занимается - либо заранее предусматривать на элементах управления место для строк большей длины.<br />
--[[User:Nashev|Nashev]] 16:39, 20 January 2014 (CET)</div>Alexrushttps://wiki.freepascal.org/index.php?title=Translations_/_i18n_/_localizations_for_programs/ru&diff=83235Translations / i18n / localizations for programs/ru2014-09-26T04:08:37Z<p>Alexrus: moved Translations / i18n / localizations for programs/ru to Переводы / i18n / локализация программ</p>
<hr />
<div>{{Translations_/_i18n_/_localizations_for_programs}}<br />
==Введение==<br />
<br />
В данном тексте речь пойдёт о том, как сделать, чтобы программа могла использовать разные строки для разных языков. То есть, как локализовать свою программу для использования с различными языками интерфейса.<br />
Для трансляции приложения необходимо выполнить следующие действия:<br />
*Все отображаемые строки добавить в секцию <b>resourcestrings</b> для создания при компиляции <b>.rst</b> и/или <b>.po</b> файлов (IDE преобразование .rst в .po делает автоматически);<br />
*Для каждого языка создать перевод полученных .po файлов (есть бесплатный редактор);<br />
*Воспользоваться функциями LCL для автоматического перевода при запуске приложения.<br />
<br />
==Формат даты, времени и чисел==<br />
<br />
В Linux, BSD, Mac OS X для локализации формата даты, времени и разделителя тысяч в числе, есть специальный модуль <b>clocale</b>. Чтобы инициализировать RTL локализованными системными параметрами необходимо в файл проекта (.lpr файл) добавить модуль <b>clocale</b>.<br />
<br />
==Строковые ресурсы==<br />
<br />
Пример<br />
resourcestring<br />
Caption1 = 'Some text';<br />
HelloWorld1 = 'Hello World';<br />
<br />
Все строки объявленные в секции <b>resourcestring</b> являются обыкновенными строковыми константами, это значит, что вы можете их присвоить любой строке. Например<br />
Label1.Caption := HelloWorld1;<br />
<br />
Во время компиляции FPC создаёт для каждого модуля содержащего секцию <b>resourcestring</b> файл '''unitname.rst''', в котором будут все константы секции в виде <b>имя + значение</b>.<br />
<br />
==.po файлы==<br />
<br />
Есть много свободных утилит для редактирования <b>.po</b> файлов, которые являются просто текстовыми как и <b>.rst</b> файлы. Утилиты зачастую позволяют добавлять дополнительную информацию к файлам, такую как автор перевода, кодировка, язык и дата. В дистрибутиве FPC есть утилита '''rstconv''' (в Windows: rstconv.exe), которая позволяет преобразовать <b>.rst</b> файл в <b>.po</b>. IDE делает преобразование автоматически.<br />
<br />
Пример свободных утилит: kbabel, poedit.<br />
<br />
Пример использования rstconv:<br />
rstconv -i unit1.rst -o unit1.po<br />
<br />
==Перевод==<br />
<br />
Для каждого языка должен быть создан свой файл <b>.po</b>. В LCL используются стандартные коды для поиска языков (en=английский, de=немецкий, ru=русский, ...). Например, в русском переводе unit1.po будет unit1.ru.po. Это означает, что нужно скопировать файл unit1.po в unit1.ru.po, unit1.de.po и т.д. для всех языков, которые вы хотите использовать, а затем переводчики могут редактировать <b>.po</b> файл для конкретного языка.<br />
<br />
==Настройки IDE для автоматического обновления .po файлов==<br />
<br />
*Модули, содержащие строки ресурсов должны быть добавлены в пакет или проект.<br />
*Вы должны создать каталог для <b>.po</b> файлов. Например: создать подкаталог '''языка''' в каталоге проекта/пакета. Для проектов перейти в меню IDE <i>Проект>Параметры проекта</i> и на вкладке <i>i18n</i> выбрать <i>Включить i18n</i> и указать созданный вами каталог. В случае пакета соответственно <i>Параметры пакета</i>.<br />
<br />
При включённом <b>i18n</b> IDE автоматически создаёт или обновляет <b>.po</b> файлы используя информацию содержащуюся в <b>.rst</b> и <b>.lrt</b> файлах (использовать в этом случае утилиту rstconv не нужно). Процесс обновления начинается со сбора всех записей из файлов <b>.rst</b> и <b>.lrt</b> и запись их в <b>.po</b> файл, так же автоматически обновляются и все файлы с переводами <b>.xx.po</b>.<br />
<br />
===Удаление устаревших записей===<br />
<br />
Записи файла <b>.po</b> не найденные в <b>.rst</b> и <b>.lrt</b> файлах автоматически удаляются. Также они удаляются из файлов перевода <b>.xx.po</b>, потому что нет смысла переводить записи, которые не используются.<br />
<br />
===Повторяющиеся записи===<br />
<br />
Повторяющиеся записи могут появиться, если один и тоже текст используется для разных строковых ресурсов. Например, возьмём файл <i>lazarus/ide/lazarusidestrconst.pas</i> в нём текст 'Gutter' встречается у нескольких строковых констант:<br />
<syntaxhighlight><br />
dlfMouseSimpleGutterSect = 'Gutter';<br />
dlgMouseOptNodeGutter = 'Gutter';<br />
dlgGutter = 'Gutter';<br />
dlgAddHiAttrGroupGutter = 'Gutter'; <br />
</syntaxhighlight><br />
После преобразования из <b>.rst</b> файла содержимое <b>.po</b> файла будет примерно следующее:<br />
<br />
#: lazarusidestrconsts.dlfmousesimpleguttersect<br />
msgid "Gutter"<br />
msgstr ""<br />
#: lazarusidestrconsts.dlgaddhiattrgroupgutter<br />
msgid "Gutter"<br />
msgstr ""<br />
и т.д.<br />
<br />
Если строка начинается с "#:" то она считается комментарием и инструменты, используемые для перевода увидев многократное повторение msgid "Gutter" будут считать их дублирующимися записями и выдавать ошибку или предупреждение. Повторяющиеся записи считаются нормальными для <b>.po</b> файла, если они имеют контекст определённый ключевым словом msgctxt. Данное ключевое слово добавляет контекст дублирующимся записям для автоматического обновления и перевода. Имя для контекста берётся из строки после префикса "#:". Смотрите пример ниже:<br />
<br />
#: lazarusidestrconsts.dlfmousesimpleguttersect<br />
msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect"<br />
msgid "Gutter"<br />
msgstr ""<br />
#: lazarusidestrconsts.dlgaddhiattrgroupgutter<br />
msgctxt "lazarusidestrconsts.dlgaddhiattrgroupgutter"<br />
msgid "Gutter"<br />
msgstr ""<br />
и т.д.<br />
<br />
В переведённые файлы <b>.xx.po</b> дублирующиеся записи автоматически не добавляются. Если в файле присутствует запись с таким же msgid что и добавляемая, то считается, что добавляемая запись уже переведена, и она просто не добавляется.<br />
<br />
Автоматическое обнаружение дублируемых строк ещё не совершенно. Дубликаты как элементы добавляются в список, и может случиться так, что некоторые непереведённые записи могут прочитаться первыми.<br />
<br />
===Нечёткие записи===<br />
<br />
Изменения в строковых ресурсах влияет на переводы, например, если строка сначала бала определена так:<br />
<syntaxhighlight><br />
dlgEdColor = 'Syntax highlight';<br />
</syntaxhighlight><br />
после преобразования получим следующую <b>.po</b> запись<br />
#: lazarusidestrconsts.dlgedcolor<br />
msgid "Syntax higlight"<br />
msgstr ""<br />
которые после перевода на русский язык примет, следующий вид<br />
#: lazarusidestrconsts.dlgedcolor<br />
msgid "Syntax higlight"<br />
msgstr "Подсветка синтаксиса"<br />
Предположим, что позднее строка была изменена на<br />
<syntaxhighlight><br />
dlgEdColor = 'Colors';<br />
</syntaxhighlight><br />
в результате запись в <b>.po</b> файле будет<br />
#: lazarusidestrconsts.dlgedcolor<br />
msgid "Colors"<br />
msgstr ""<br />
Обратите внимание, что хотя идентификатор остаётся неизменным lazarusidestrconsts.dlgedcolor строку изменили с 'Syntax highlight' на 'Colors', так как строку уже перевели, перевод будет не совпадать с новым смыслом. <br />
Утилита автоматического обновления сообщит об этом факте и запишет запись следующего вида:<br />
#: lazarusidestrconsts.dlgedcolor<br />
#, fuzzy<br />
#| msgid "Syntax highlight"<br />
msgctxt "lazarusidestrconsts.dlgedcolor"<br />
msgid "Colors"<br />
msgstr "Подсветка синтаксиса"<br />
С точки зрения формата <b>.po</b> файла префикс "#," означает, что запись имеет флаг (нечёткой) и программа перевода может оповестить пользователя, что нынешний перевод является сомнительным и необходимо повторно перевести данную запись. В свою очередь префикс "#|" указывает предыдущую непереведённую строку.<br />
<br />
==Перевод Форм, Модулей данных и Фреймов==<br />
<br />
Когда опция i18n включена IDE автоматически создаёт <b>.lrt</b> файлы для каждой формы, модуля данных и фрейма. Если вы включили эту опцию в первый раз, то вы должны открыть каждую форму и немножко переместить её для того чтобы можно было сохранить её. После сохранения автоматически создаются <b>.lrt</b> фалы (если модуль с формой unit1.pas, то создастся соответственно файл unit1.lrt). При компиляции будет создан файл projectname.po или packagename.po в каталоге .po файлов, в данный файл будут помещены все записи из всех <b>.lrt</b> фалов проекта.<br />
<br />
Для форм, которые должны быть переведены во время выполнения, вы должны назначить транслятор LRSTranslator (определён в модуле LResources) в разделе инициализации одного из модулей.<br />
<br />
<syntaxhighlight><br />
...<br />
uses<br />
...<br />
LResources;<br />
...<br />
...<br />
initialization<br />
LRSTranslator:=TPoTranslator.Create('/path/to/the/po/file');<br />
</syntaxhighlight><br />
<br />
Однако в LCL нет никакого класса TPoTranslator (т.е. класса который умеет читать <b>.po</b> файлы). Его можно создать самому, подсмотрев реализацию класса TDefaultTranslator в модуле DefaultTranslator.pas.<br />
<br />
<syntaxhighlight><br />
unit PoTranslator;<br />
<br />
{$mode objfpc}{$H+}<br />
<br />
interface<br />
<br />
uses<br />
Classes, SysUtils, LResources, typinfo, Translations;<br />
<br />
type<br />
<br />
{ TPoTranslator }<br />
<br />
TPoTranslator=class(TAbstractTranslator)<br />
private<br />
FPOFile:TPOFile;<br />
public<br />
constructor Create(POFileName:string);<br />
destructor Destroy;override;<br />
procedure TranslateStringProperty(Sender:TObject; <br />
const Instance: TPersistent; PropInfo: PPropInfo; var Content:string);override;<br />
end;<br />
<br />
implementation<br />
<br />
{ TPoTranslator }<br />
<br />
constructor TPoTranslator.Create(POFileName: string);<br />
begin<br />
inherited Create;<br />
FPOFile:=TPOFile.Create(POFileName);<br />
end;<br />
<br />
destructor TPoTranslator.Destroy;<br />
begin<br />
FPOFile.Free;<br />
inherited Destroy;<br />
end;<br />
<br />
procedure TPoTranslator.TranslateStringProperty(Sender: TObject;<br />
const Instance: TPersistent; PropInfo: PPropInfo; var Content: string);<br />
var<br />
s: String;<br />
begin<br />
if not Assigned(FPOFile) then exit;<br />
if not Assigned(PropInfo) then exit;<br />
{Нужно ли нам это?}<br />
if Instance is TComponent then<br />
if csDesigning in (Instance as TComponent).ComponentState then exit;<br />
{:)}<br />
if (AnsiUpperCase(PropInfo^.PropType^.Name)<>'TTRANSLATESTRING') then exit;<br />
s:=FPOFile.Translate(Content, Content);<br />
if s<>'' then Content:=s;<br />
end;<br />
<br />
end.<br />
</syntaxhighlight><br />
<br />
Или же вы можете конвертировать файл <b>.po</b> в <b>.mo</b> используя утилиту msgfmt и просто использовать модуль DefaultTranslator<br />
<br />
<syntaxhighlight><br />
...<br />
uses<br />
...<br />
DefaultTranslator;<br />
</syntaxhighlight><br />
<br />
который будет автоматически искать <b>.mo</b> фалы в нескольких стандартных местах. (Недостатком является то что вам придется с программой поставлять сразу два файла: <b>.mo</b> для модуля DefaultTranslator и <b>.po</b> файл для TranslateUnitResourceStrings).<br />
Если вы все-таки решили воспользоваться DefaultTranslator. Определение языка будет производиться автоматически по переменной окружения <b>LANG</b> или по параметру командной строки <b>--lang</b>. <b>.mo</b> файлы должны иметь следующие и мена и каталоги размещения:<br />
<br />
* <Application Directory>/LANG/<Application Filename>.mo<br />
* <Application Directory>/languages/LANG/<Application Filename>.mo<br />
* <Application Directory>/locale/LANG/<Application Filename>.mo<br />
* <Application Directory>/locale/LC_MESSAGES/LANG/<Application Filename>.mo<br />
<br />
в Unix-подобных система файл может ещё находится в<br />
<br />
* /usr/share/locale/LANG/LC_MESSAGES/<Application Filename>.mo<br />
<br />
а также поиск будет производиться по короткому идентификатору языка (например, если локаль "ru_RU" или "ru_RU.UTF-8" и файла с данным языком не найдено, то поиск также будет производиться для "RU").<br />
<br />
==Перевод при старте программы==<br />
<br />
Для каждого <b>.po</b> файла вы должны вызвать функцию TranslateUnitResourceStrings для перевода каждого модуля. Например:<br />
<br />
<syntaxhighlight><br />
{Прежде всего добавьте модули "gettext" и "translations"}<br />
procedure TForm1.FormCreate(Sender: TObject);<br />
var<br />
PODirectory, Lang, FallbackLang: String;<br />
begin<br />
PODirectory := '/path/to/lazarus/lcl/languages/';<br />
GetLanguageIDs(Lang, FallbackLang); // определено в модуле gettext<br />
TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang);<br />
MessageDlg('Title', 'Text', mtInformation, [mbOk, mbCancel, mbYes], 0);<br />
end;<br />
</syntaxhighlight><br />
<br />
==Добавление .po файлов в ресурсы программ==<br />
<br />
Если вы хотите поместить <b>.po</b> файлы в исполняемый файл, то выполните следующие действия:<br />
<br />
*Создайте новый модуль (не модуль формы!).<br />
*Конвертируйте <b>.po</b> файл(ы) в <b>.lrs</b> с помощью утилиты tools/lazres:<br />
<pre><br />
./lazres unit1.lrs unit1.ru.po<br />
</pre><br />
Создастся файл unit1.lrs начинающийся строкой<br />
<syntaxhighlight><br />
LazarusResources.Add('unit1.ru','PO',[<br />
...<br />
</syntaxhighlight><br />
*Добавьте в код:<br />
<syntaxhighlight><br />
uses LResources, Translations;<br />
<br />
resourcestring<br />
MyCaption = 'Caption';<br />
<br />
function TranslateUnitResourceStrings: boolean;<br />
var<br />
r: TLResource;<br />
POFile: TPOFile;<br />
begin<br />
r:=LazarusResources.Find('unit1.ru','PO');<br />
POFile:=TPOFile.Create;<br />
try<br />
POFile.ReadPOText(r.Value);<br />
Result:=Translations.TranslateUnitResourceStrings('unit1',POFile);<br />
finally<br />
POFile.Free;<br />
end;<br />
end;<br />
<br />
initialization<br />
{$I unit1.lrs}<br />
<br />
</syntaxhighlight><br />
*Выполните функцию TranslateUnitResourceStrings в начале программы. Вы можете это сделать в секции initialization.<br />
<br />
==Локализация IDE==<br />
<br />
===Файлы===<br />
Файлы <b>.po</b> находятся в каталогах исходников IDE Lazarus:<br />
*lazarus/languages перевод для IDE<br />
*lcl/languages/ перевод для LCL<br />
*ideintf/languages/ перевод для интерфейса IDE<br />
<br />
===Переводчики===<br />
*Немецкий перевод поддерживает Joerg Braun.<br />
*Финский перевод поддерживает Seppo Suurtarla<br />
*Русский перевод поддерживает Максим Ганецкий<br />
<br />
Если вы хотите начать новый перевод, задайте вопрос в рассылку, может уже кто-то над ним работает.<br />
<br />
Пожалуйста, прочитайте внимательно: [[Lazarus_Documentation#Translations|Переводы]]<br />
<br />
==Future work / ToDos==<br />
<br />
[[IDE_Development/ru#Переводы.2C_i18n.2C_lrt_файлы.2C_po_файлы|IDE Development: Переводы, i18n, lrt файлы, po файлы]]<br />
<br />
<br />
[[Category:Tutorials/ru]]<br />
[[Category:Localization/ru]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Translations_/_i18n_/_localizations_for_programs&diff=83234Template:Translations / i18n / localizations for programs2014-09-26T04:06:09Z<p>Alexrus: </p>
<hr />
<div><small><br />
{{MenuTranslate | page=Translations_/_i18n_/_localizations_for_programs}}<br />
[http://wiki.freepascal.org/index.php?title=Template:Translations_/_i18n_/_localizations_for_programs&action=edit Translate]<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Translations_/_i18n_/_localizations_for_programs/ru&diff=83233Translations / i18n / localizations for programs/ru2014-09-26T04:03:36Z<p>Alexrus: </p>
<hr />
<div>{{Translations_/_i18n_/_localizations_for_programs}}<br />
==Введение==<br />
<br />
В данном тексте речь пойдёт о том, как сделать, чтобы программа могла использовать разные строки для разных языков. То есть, как локализовать свою программу для использования с различными языками интерфейса.<br />
Для трансляции приложения необходимо выполнить следующие действия:<br />
*Все отображаемые строки добавить в секцию <b>resourcestrings</b> для создания при компиляции <b>.rst</b> и/или <b>.po</b> файлов (IDE преобразование .rst в .po делает автоматически);<br />
*Для каждого языка создать перевод полученных .po файлов (есть бесплатный редактор);<br />
*Воспользоваться функциями LCL для автоматического перевода при запуске приложения.<br />
<br />
==Формат даты, времени и чисел==<br />
<br />
В Linux, BSD, Mac OS X для локализации формата даты, времени и разделителя тысяч в числе, есть специальный модуль <b>clocale</b>. Чтобы инициализировать RTL локализованными системными параметрами необходимо в файл проекта (.lpr файл) добавить модуль <b>clocale</b>.<br />
<br />
==Строковые ресурсы==<br />
<br />
Пример<br />
resourcestring<br />
Caption1 = 'Some text';<br />
HelloWorld1 = 'Hello World';<br />
<br />
Все строки объявленные в секции <b>resourcestring</b> являются обыкновенными строковыми константами, это значит, что вы можете их присвоить любой строке. Например<br />
Label1.Caption := HelloWorld1;<br />
<br />
Во время компиляции FPC создаёт для каждого модуля содержащего секцию <b>resourcestring</b> файл '''unitname.rst''', в котором будут все константы секции в виде <b>имя + значение</b>.<br />
<br />
==.po файлы==<br />
<br />
Есть много свободных утилит для редактирования <b>.po</b> файлов, которые являются просто текстовыми как и <b>.rst</b> файлы. Утилиты зачастую позволяют добавлять дополнительную информацию к файлам, такую как автор перевода, кодировка, язык и дата. В дистрибутиве FPC есть утилита '''rstconv''' (в Windows: rstconv.exe), которая позволяет преобразовать <b>.rst</b> файл в <b>.po</b>. IDE делает преобразование автоматически.<br />
<br />
Пример свободных утилит: kbabel, poedit.<br />
<br />
Пример использования rstconv:<br />
rstconv -i unit1.rst -o unit1.po<br />
<br />
==Перевод==<br />
<br />
Для каждого языка должен быть создан свой файл <b>.po</b>. В LCL используются стандартные коды для поиска языков (en=английский, de=немецкий, ru=русский, ...). Например, в русском переводе unit1.po будет unit1.ru.po. Это означает, что нужно скопировать файл unit1.po в unit1.ru.po, unit1.de.po и т.д. для всех языков, которые вы хотите использовать, а затем переводчики могут редактировать <b>.po</b> файл для конкретного языка.<br />
<br />
==Настройки IDE для автоматического обновления .po файлов==<br />
<br />
*Модули, содержащие строки ресурсов должны быть добавлены в пакет или проект.<br />
*Вы должны создать каталог для <b>.po</b> файлов. Например: создать подкаталог '''языка''' в каталоге проекта/пакета. Для проектов перейти в меню IDE <i>Проект>Параметры проекта</i> и на вкладке <i>i18n</i> выбрать <i>Включить i18n</i> и указать созданный вами каталог. В случае пакета соответственно <i>Параметры пакета</i>.<br />
<br />
При включённом <b>i18n</b> IDE автоматически создаёт или обновляет <b>.po</b> файлы используя информацию содержащуюся в <b>.rst</b> и <b>.lrt</b> файлах (использовать в этом случае утилиту rstconv не нужно). Процесс обновления начинается со сбора всех записей из файлов <b>.rst</b> и <b>.lrt</b> и запись их в <b>.po</b> файл, так же автоматически обновляются и все файлы с переводами <b>.xx.po</b>.<br />
<br />
===Удаление устаревших записей===<br />
<br />
Записи файла <b>.po</b> не найденные в <b>.rst</b> и <b>.lrt</b> файлах автоматически удаляются. Также они удаляются из файлов перевода <b>.xx.po</b>, потому что нет смысла переводить записи, которые не используются.<br />
<br />
===Повторяющиеся записи===<br />
<br />
Повторяющиеся записи могут появиться, если один и тоже текст используется для разных строковых ресурсов. Например, возьмём файл <i>lazarus/ide/lazarusidestrconst.pas</i> в нём текст 'Gutter' встречается у нескольких строковых констант:<br />
<syntaxhighlight><br />
dlfMouseSimpleGutterSect = 'Gutter';<br />
dlgMouseOptNodeGutter = 'Gutter';<br />
dlgGutter = 'Gutter';<br />
dlgAddHiAttrGroupGutter = 'Gutter'; <br />
</syntaxhighlight><br />
После преобразования из <b>.rst</b> файла содержимое <b>.po</b> файла будет примерно следующее:<br />
<br />
#: lazarusidestrconsts.dlfmousesimpleguttersect<br />
msgid "Gutter"<br />
msgstr ""<br />
#: lazarusidestrconsts.dlgaddhiattrgroupgutter<br />
msgid "Gutter"<br />
msgstr ""<br />
и т.д.<br />
<br />
Если строка начинается с "#:" то она считается комментарием и инструменты, используемые для перевода увидев многократное повторение msgid "Gutter" будут считать их дублирующимися записями и выдавать ошибку или предупреждение. Повторяющиеся записи считаются нормальными для <b>.po</b> файла, если они имеют контекст определённый ключевым словом msgctxt. Данное ключевое слово добавляет контекст дублирующимся записям для автоматического обновления и перевода. Имя для контекста берётся из строки после префикса "#:". Смотрите пример ниже:<br />
<br />
#: lazarusidestrconsts.dlfmousesimpleguttersect<br />
msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect"<br />
msgid "Gutter"<br />
msgstr ""<br />
#: lazarusidestrconsts.dlgaddhiattrgroupgutter<br />
msgctxt "lazarusidestrconsts.dlgaddhiattrgroupgutter"<br />
msgid "Gutter"<br />
msgstr ""<br />
и т.д.<br />
<br />
В переведённые файлы <b>.xx.po</b> дублирующиеся записи автоматически не добавляются. Если в файле присутствует запись с таким же msgid что и добавляемая, то считается, что добавляемая запись уже переведена, и она просто не добавляется.<br />
<br />
Автоматическое обнаружение дублируемых строк ещё не совершенно. Дубликаты как элементы добавляются в список, и может случиться так, что некоторые непереведённые записи могут прочитаться первыми.<br />
<br />
===Нечёткие записи===<br />
<br />
Изменения в строковых ресурсах влияет на переводы, например, если строка сначала бала определена так:<br />
<syntaxhighlight><br />
dlgEdColor = 'Syntax highlight';<br />
</syntaxhighlight><br />
после преобразования получим следующую <b>.po</b> запись<br />
#: lazarusidestrconsts.dlgedcolor<br />
msgid "Syntax higlight"<br />
msgstr ""<br />
которые после перевода на русский язык примет, следующий вид<br />
#: lazarusidestrconsts.dlgedcolor<br />
msgid "Syntax higlight"<br />
msgstr "Подсветка синтаксиса"<br />
Предположим, что позднее строка была изменена на<br />
<syntaxhighlight><br />
dlgEdColor = 'Colors';<br />
</syntaxhighlight><br />
в результате запись в <b>.po</b> файле будет<br />
#: lazarusidestrconsts.dlgedcolor<br />
msgid "Colors"<br />
msgstr ""<br />
Обратите внимание, что хотя идентификатор остаётся неизменным lazarusidestrconsts.dlgedcolor строку изменили с 'Syntax highlight' на 'Colors', так как строку уже перевели, перевод будет не совпадать с новым смыслом. <br />
Утилита автоматического обновления сообщит об этом факте и запишет запись следующего вида:<br />
#: lazarusidestrconsts.dlgedcolor<br />
#, fuzzy<br />
#| msgid "Syntax highlight"<br />
msgctxt "lazarusidestrconsts.dlgedcolor"<br />
msgid "Colors"<br />
msgstr "Подсветка синтаксиса"<br />
С точки зрения формата <b>.po</b> файла префикс "#," означает, что запись имеет флаг (нечёткой) и программа перевода может оповестить пользователя, что нынешний перевод является сомнительным и необходимо повторно перевести данную запись. В свою очередь префикс "#|" указывает предыдущую непереведённую строку.<br />
<br />
==Перевод Форм, Модулей данных и Фреймов==<br />
<br />
Когда опция i18n включена IDE автоматически создаёт <b>.lrt</b> файлы для каждой формы, модуля данных и фрейма. Если вы включили эту опцию в первый раз, то вы должны открыть каждую форму и немножко переместить её для того чтобы можно было сохранить её. После сохранения автоматически создаются <b>.lrt</b> фалы (если модуль с формой unit1.pas, то создастся соответственно файл unit1.lrt). При компиляции будет создан файл projectname.po или packagename.po в каталоге .po файлов, в данный файл будут помещены все записи из всех <b>.lrt</b> фалов проекта.<br />
<br />
Для форм, которые должны быть переведены во время выполнения, вы должны назначить транслятор LRSTranslator (определён в модуле LResources) в разделе инициализации одного из модулей.<br />
<br />
<syntaxhighlight><br />
...<br />
uses<br />
...<br />
LResources;<br />
...<br />
...<br />
initialization<br />
LRSTranslator:=TPoTranslator.Create('/path/to/the/po/file');<br />
</syntaxhighlight><br />
<br />
Однако в LCL нет никакого класса TPoTranslator (т.е. класса который умеет читать <b>.po</b> файлы). Его можно создать самому, подсмотрев реализацию класса TDefaultTranslator в модуле DefaultTranslator.pas.<br />
<br />
<syntaxhighlight><br />
unit PoTranslator;<br />
<br />
{$mode objfpc}{$H+}<br />
<br />
interface<br />
<br />
uses<br />
Classes, SysUtils, LResources, typinfo, Translations;<br />
<br />
type<br />
<br />
{ TPoTranslator }<br />
<br />
TPoTranslator=class(TAbstractTranslator)<br />
private<br />
FPOFile:TPOFile;<br />
public<br />
constructor Create(POFileName:string);<br />
destructor Destroy;override;<br />
procedure TranslateStringProperty(Sender:TObject; <br />
const Instance: TPersistent; PropInfo: PPropInfo; var Content:string);override;<br />
end;<br />
<br />
implementation<br />
<br />
{ TPoTranslator }<br />
<br />
constructor TPoTranslator.Create(POFileName: string);<br />
begin<br />
inherited Create;<br />
FPOFile:=TPOFile.Create(POFileName);<br />
end;<br />
<br />
destructor TPoTranslator.Destroy;<br />
begin<br />
FPOFile.Free;<br />
inherited Destroy;<br />
end;<br />
<br />
procedure TPoTranslator.TranslateStringProperty(Sender: TObject;<br />
const Instance: TPersistent; PropInfo: PPropInfo; var Content: string);<br />
var<br />
s: String;<br />
begin<br />
if not Assigned(FPOFile) then exit;<br />
if not Assigned(PropInfo) then exit;<br />
{Нужно ли нам это?}<br />
if Instance is TComponent then<br />
if csDesigning in (Instance as TComponent).ComponentState then exit;<br />
{:)}<br />
if (AnsiUpperCase(PropInfo^.PropType^.Name)<>'TTRANSLATESTRING') then exit;<br />
s:=FPOFile.Translate(Content, Content);<br />
if s<>'' then Content:=s;<br />
end;<br />
<br />
end.<br />
</syntaxhighlight><br />
<br />
Или же вы можете конвертировать файл <b>.po</b> в <b>.mo</b> используя утилиту msgfmt и просто использовать модуль DefaultTranslator<br />
<br />
<syntaxhighlight><br />
...<br />
uses<br />
...<br />
DefaultTranslator;<br />
</syntaxhighlight><br />
<br />
который будет автоматически искать <b>.mo</b> фалы в нескольких стандартных местах. (Недостатком является то что вам придется с программой поставлять сразу два файла: <b>.mo</b> для модуля DefaultTranslator и <b>.po</b> файл для TranslateUnitResourceStrings).<br />
Если вы все-таки решили воспользоваться DefaultTranslator. Определение языка будет производиться автоматически по переменной окружения <b>LANG</b> или по параметру командной строки <b>--lang</b>. <b>.mo</b> файлы должны иметь следующие и мена и каталоги размещения:<br />
<br />
* <Application Directory>/LANG/<Application Filename>.mo<br />
* <Application Directory>/languages/LANG/<Application Filename>.mo<br />
* <Application Directory>/locale/LANG/<Application Filename>.mo<br />
* <Application Directory>/locale/LC_MESSAGES/LANG/<Application Filename>.mo<br />
<br />
в Unix-подобных система файл может ещё находится в<br />
<br />
* /usr/share/locale/LANG/LC_MESSAGES/<Application Filename>.mo<br />
<br />
а также поиск будет производиться по короткому идентификатору языка (например, если локаль "ru_RU" или "ru_RU.UTF-8" и файла с данным языком не найдено, то поиск также будет производиться для "RU").<br />
<br />
==Перевод при старте программы==<br />
<br />
Для каждого <b>.po</b> файла вы должны вызвать функцию TranslateUnitResourceStrings для перевода каждого модуля. Например:<br />
<br />
<syntaxhighlight><br />
{Прежде всего добавьте модули "gettext" и "translations"}<br />
procedure TForm1.FormCreate(Sender: TObject);<br />
var<br />
PODirectory, Lang, FallbackLang: String;<br />
begin<br />
PODirectory := '/path/to/lazarus/lcl/languages/';<br />
GetLanguageIDs(Lang, FallbackLang); // определено в модуле gettext<br />
TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang);<br />
MessageDlg('Title', 'Text', mtInformation, [mbOk, mbCancel, mbYes], 0);<br />
end;<br />
</syntaxhighlight><br />
<br />
==Добавление .po файлов в ресурсы программ==<br />
<br />
Если вы хотите поместить <b>.po</b> файлы в исполняемый файл, то выполните следующие действия:<br />
<br />
*Создайте новый модуль (не модуль формы!).<br />
*Конвертируйте <b>.po</b> файл(ы) в <b>.lrs</b> с помощью утилиты tools/lazres:<br />
<pre><br />
./lazres unit1.lrs unit1.ru.po<br />
</pre><br />
Создастся файл unit1.lrs начинающийся строкой<br />
<syntaxhighlight><br />
LazarusResources.Add('unit1.ru','PO',[<br />
...<br />
</syntaxhighlight><br />
*Добавьте в код:<br />
<syntaxhighlight><br />
uses LResources, Translations;<br />
<br />
resourcestring<br />
MyCaption = 'Caption';<br />
<br />
function TranslateUnitResourceStrings: boolean;<br />
var<br />
r: TLResource;<br />
POFile: TPOFile;<br />
begin<br />
r:=LazarusResources.Find('unit1.ru','PO');<br />
POFile:=TPOFile.Create;<br />
try<br />
POFile.ReadPOText(r.Value);<br />
Result:=Translations.TranslateUnitResourceStrings('unit1',POFile);<br />
finally<br />
POFile.Free;<br />
end;<br />
end;<br />
<br />
initialization<br />
{$I unit1.lrs}<br />
<br />
</syntaxhighlight><br />
*Выполните функцию TranslateUnitResourceStrings в начале программы. Вы можете это сделать в секции initialization.<br />
<br />
==Локализация IDE==<br />
<br />
===Файлы===<br />
Файлы <b>.po</b> находятся в каталогах исходников IDE Lazarus:<br />
*lazarus/languages перевод для IDE<br />
*lcl/languages/ перевод для LCL<br />
*ideintf/languages/ перевод для интерфейса IDE<br />
<br />
===Переводчики===<br />
*Немецкий перевод поддерживает Joerg Braun.<br />
*Финский перевод поддерживает Seppo Suurtarla<br />
*Русский перевод поддерживает Максим Ганецкий<br />
<br />
Если вы хотите начать новый перевод, задайте вопрос в рассылку, может уже кто-то над ним работает.<br />
<br />
Пожалуйста, прочитайте внимательно: [[Lazarus_Documentation#Translations|Переводы]]<br />
<br />
==Future work / ToDos==<br />
<br />
[[IDE_Development/ru#Переводы.2C_i18n.2C_lrt_файлы.2C_po_файлы|IDE Development: Переводы, i18n, lrt файлы, po файлы]]<br />
<br />
<br />
[[Category:Tutorials/ru]]<br />
[[Category:Localization/ru]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Lazarus_Documentation&diff=83232Template:Lazarus Documentation2014-09-26T03:49:35Z<p>Alexrus: </p>
<hr />
<div><small><br />
{{MenuTranslate | page=Lazarus Documentation}}<br />
[http://wiki.freepascal.org/index.php?title=Template:Lazarus_Documentation&action=edit Translate]<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Adventures_of_a_Newbie&diff=83230Template:Adventures of a Newbie2014-09-26T03:35:14Z<p>Alexrus: </p>
<hr />
<div><small> <br />
{{MenuTranslate| page=Adventures of a Newbie}}<br />
[http://wiki.freepascal.org/index.php?title=Adventures_of_a_Newbie&action=edit Translate]<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Category:Components/ru&diff=83229Category:Components/ru2014-09-26T03:28:26Z<p>Alexrus: </p>
<hr />
<div>{{Translate category}}<br />
Различные компоненты, библиотеки, классы, ...</div>Alexrushttps://wiki.freepascal.org/index.php?title=Template:Components_and_Code_examples&diff=83228Template:Components and Code examples2014-09-26T03:23:51Z<p>Alexrus: +MenuTranslate</p>
<hr />
<div><small> <br />
{{MenuTranslate| page=Components and Code examples}}<br />
[http://wiki.freepascal.org/index.php?title=Components_and_Code_examples&action=edit Translate]<br />
</small></div>Alexrushttps://wiki.freepascal.org/index.php?title=Components_and_Code_examples/it&diff=83227Components and Code examples/it2014-09-26T03:22:42Z<p>Alexrus: Created page with "{{Components and Code examples}} ==Lazarus-CCR Released Components== ===Multimedia=== * ACS - Audio Component Suite port da [http://acs.ullihome.de/ ACS] ===Graphics===..."</p>
<hr />
<div>{{Components and Code examples}}<br />
<br />
==Lazarus-CCR Released Components==<br />
<br />
===Multimedia===<br />
* [[ACS]] - Audio Component Suite port da [http://acs.ullihome.de/ ACS]<br />
<br />
===Graphics===<br />
* [[GLScene]] - port della libreria grafica visual OpenGL [http://www.glscene.org GLScene]<br />
* [[SMNetGradient]] - Un Gradient Fill per Lazarus.<br />
* [[TAChart]] - Componente charting per Lazarus<br />
* [[PlotPanel]] - Componente per grafici e charting per immagini animate<br />
* [[LazRGBGraphics]] - pacchetto per elaborazione veloce in memoria e manipolazione pixels (come scan line).<br />
* [[TMetafile_/_TMetafileCanvas|TMetafile/TMetafileCanvas]] - Estensione EnhMetafile API per Windows.<br />
<br />
===Tools===<br />
* [[FpSystools]] - Conversione di TurboPower's Systools per Kylix pacchetto per Lazarus/FPC<br />
* [[DCPcrypt]] - DCPcrypt Cryptographic Component Library<br />
* [[RXfpc]] - Alcuni dei più usati componenti RXlib per Lazarus<br />
* [[MultiLog]] - Un Log system per FPC-Lazarus<br />
* [[OnGuard]] - port di Turbo Power OnGuard<br />
* [[UniqueInstance]] - componente per permettere solo in'istanza alla volta<br />
<br />
===Archiviazione===<br />
* [[Zlibar]] - Objects per creare ed estrarre archivi zlib contenenti files multipli<br />
* [[FreePascalArchivePackage]] - Conversione di TurboPower Software's Abbrevia libreria per il compilatore Free Pascal<br />
* [[ZipFile]] - Componente che comprime zipfile, puoi leggere e scrivere come se fosse un filesystem<br />
* [[libtar]] - Classi per archivi .TAR di Stefan Heymann, con la licenza per FPC 2.1.1 e successivi. può essere combinato con gzstream per creare .tar.gz files.<br />
<br />
===Editors and viewers===<br />
* [[PowerPDF]] - port per Lazarus di componenti (visual) PowerPDF <br />
* [[RichView]] - Port per Lazarus di componenti TRichView Freeware Edition<br />
* [[Fshcomp]] - componenti di Edit<br />
* [[SynEdit]] - Source Editor component (used by the IDE)<br />
<br />
===Networking===<br />
* [[Sockets]] - componenti Socket TCP/IP<br />
* [[lNet]] - componenti per il networking con connessioni TCP e UDP<br />
* [[fpc:FPC and Apache Modules|FPC and Apache Modules]] - Headers per creare moduli Apache con FPC<br />
* [[Web_Service_Toolkit|Web Services Toolkit]] - Web Services authoring and consumption<br />
<br />
===Databases===<br />
* [[TPSQL]] - Componenti per la connessione con database servers PostgreSQL<br />
* [[tiOPF]] - TechInsite Object Persistent Framework (Ver. 2)<br />
* [[TParadoxDataSet]] - Un'espansione TDataSet che può leggere eile Paradox fino alla Versione 7 (e oltre ??)<br />
<br />
===Slstema===<br />
* [[EpikTimer]] - Timer di precisione scritto specificamente per Lazarus.<br />
* [[TrayIcon]] - Un System Tray multipiattaforma<br />
* [[TPopupNotifier]] - Come usare TPopupNotifier per mostrare "balloon help"<br />
* [[MultiDoc]] - Un componente per scrivere applicazioni pseudo-MDI con Lazarus.<br />
* [[MDButtonsBar]] - ButtonsBar per MultiDoc Component.<br />
<br />
===Visual components===<br />
* [[VirtualTreeview]] - port del veloce componente Virtual Treeview di [http://www.soft-gems.net/index.php?option=com_content&task=view&id=12&Itemid=33 SoftGems]<br />
* [[RingChart and AnalogWatch]] - un altro grafico a torta e un orologio analogico per Lazarus e FPC<br />
* [[ColorBox]] - color picker con anteprima<br />
* [[Spook's Panel Components]] - raccolta di componenti "panel" <br />
* [[HistoryFiles]] - componente per salvare l'elenco file recenti in un file .ini e ricaricarlo in un menu.<br />
* [[ColorPalette]] - una griglia di tavolozze colori con la possibilità di utilizzare tavolozze personalizzate<br />
* [[OrphPort]] - Subset of TurboPower's Orpheus controls.<br />
<br />
==Packages for FPC/Lazarus (not hosted here)==<br />
* Starting with version 32, Lucas Gebauer's outstanding [http://www.ararat.cz/synapse/ Synapse] TCP/IP library is now compatible with Free Pascal and Lazarus. Lucas has also just released version 12 of his Synaser serial port communications suite that also runs under Free Pascal.<br />
* Indy <br />
** Original (now dormant) effort: [http://indy4lazarus.sourceforge.net/ Indy for Lazarus project] 119 components Indy for FPC/Lazarus. <br />
** Newer attempt [[Indy with Lazarus]] (Both Indy9 and Indy10)<br />
* [http://cups4lazarus.sourceforge.net/ CUPS for Lazarus project] Common UNIX Printing System for FPC/Lazarus.<br />
* [http://sourceforge.net/projects/fibl/ FIBL] FreeIBComponents package porting for Lazarus.<br />
<br />
==Example programs==<br />
* [[SysRec]] - Video Capturing and Recording application, you can download it [http://sourceforge.net/project/showfiles.php?group_id=92177 here].<br />
* [[Micro-mainframe Transmission Command Generator for IBM Mainframes]]<br />
* [[Sudoku]] - A Sudoku solver.<br />
* [[Libview]] - Views all exported function names of a given library.<br />
* [[Contacts Database]] - An expanded version of the address book example with reports.<br />
* [[OpenGL Tutorial]] - Example code for the OpenGL tutorial<br />
* [[Robot - The Game]] - Very easy written sample for beginners<br />
* [[Kaldemonia]] - Google Searcher shows simple threading, using Synapse networking library.<br />
<br />
==Original contributors and changes==<br />
This page has been imported from the epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=CodeAndComponents version].<br />
* Page created, initial content - T. Lisjac 9/22/2003 [[User:VlxAdmin]]<br />
* Moved Synapse package info to here from the [[Main Page]] - [[User:VlxAdmin]] 10/1/2003</div>Alexrushttps://wiki.freepascal.org/index.php?title=Category:Pascal/ru&diff=83224Category:Pascal/ru2014-09-26T03:09:47Z<p>Alexrus: Created page with "{{Translate category}} Category:Main/ru"</p>
<hr />
<div>{{Translate category}}<br />
<br />
[[Category:Main/ru]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=Install_Packages/ru&diff=83223Install Packages/ru2014-09-26T02:55:03Z<p>Alexrus: /* Файлы устанавливаемые с Lazarus'ом */</p>
<hr />
<div>{{Install Packages}}<br />
== Описание ==<br />
<br />
По многочисленным просьбам вот небольшое руководство по "Установка пакетов HOW-TO".<br />
<br />
Мы будем рассматривать установку компонентов баз данных, которые не устанавливались ранее по умолчанию в предыдущих версиях Lazarus. Их до сих пор нет в минимальной установке IDE но они есть в полной инсталляции среды разработки.<br />
Поскольку последние компоненты баз данных по умолчанию присутствуют в Lasarus, принцип поиска и установки пакетов все ещё актуален и может быть полезен.<br />
<br />
Мы будем рассматривать и установку компонентов для соединения с базами данных (серверами) и получение данных с баз.<br />
<br />
Что ж, давайте посмотрим, что мы можем найти если поискать.<br />
<br />
== Файлы устанавливаемые с Lazarus'ом ==<br />
<br />
В среде Linux Lasarus устанавливается по умолчанию в каталог '''/usr/bin/lazarus''', В MacOS X Lazarus устанавливается в <br />
'''/usr/local/share/lazarus''' и конечно же в Windows установщик предлагает вам на выбор куда установить файлы без пробелов в имени пути. В моей Windows Lasarus установлен в '''G:/Lazarus'''. Не важно куда бы не был установлен Lasarus у Вас, Вы найдете некоторые поддиректории там. В данном случаем многообещающая перспектива исходит от каталога под названием '''components'''.<br />
<br />
Как вы можете видеть в директории есть четыре поддиректории, которые напоминают нам о базах данных. Это '''Interbase''', '''mysql''', '''sqlite''' и '''sqldb'''. Первые три содержат компоненты для соединения с базами данных и TDataset потомки для соответствующих баз данных. Последняя, '''sqldb''', является более общим, так как она состоит из TSQLQuery (TDataset) и TSQLTransaction которые используются для всех типов баз данных и Т??Connection, чтобы сделать подключение к базе данных.<br />
В этой статье мы установим пакет SQLDB вместе с Interbase.<br />
<br />
== Adding packages using the IDE ==<br />
=== Adding known packages ===<br />
Open "Package -> Install/Uninstall Packages".<br />
The list on the left shows already installed packages or packages marked for installation (which have a green plus sign in their icon). The list to the right shows packages that you can install.<br />
Simply double-click on a package in either list to move them to the other - and mark them for installation/uninstall.<br />
<br />
Finally, click "Save and Rebuild" to rebuild the IDE and the packages.<br />
<br />
You can also compile and install packages the IDE knows nothing about. See below.<br />
<br />
=== Adding new packages ===<br />
To install a new package one goes to "Components -> Open Package File (.lpk)".<br />
In our example scenario, in the following dialog you navigate to '''/usr/share/lazarus/components/sqldb''' or the corresponding directory under OS X or Windows and choose the '''sqldblaz.lpk''' file. If everything works out as planned you will see the Package Manager. The Package Manager shows a treeview with the files in the package and the required packages.<br />
<br />
If you don't want to install the component into the IDE, e.g. because it is a non graphical component, press '''Compile'''.<br />
Otherwise you should press '''Use >>''' and then choose '''Install'''. Next we get a warning about Lazarus only supporting static linked libraries and the question if you want to rebuild Lazarus. Just press Yes and sit back. Lazarus will be rebuilt, and depending on your configuration restarted.<br />
<br />
If everything went well you'll see a new tab called '''SQLdb'''. This tab will contain two components: a TSQLConnection and a TSQLQuery. What we need next is a Connection component. Once again go to Components -> Open Package File and navigate to '''/usr/share/lazarus/components/sqldb/interbase'''. Open the ibconnectionlaz.lpk file and again press Compile and Install and Yes. :)<br />
<br />
Next time Lazarus is started the SQLdb tab also contains a component TIBConnection.<br />
<br />
=== New versions ===<br />
When receiving a new source version of an already installed package, you must<br />
#overwrite the previous source version with the new version<br />
#either open the new .lpk and press '''Use >>''' and then choose '''Install''' as above,<br>or rebuild the IDE using the menu "Tools" -> "Build Lazarus with Profile [...]" if you want more control on how the package is compiled.<br />
<br />
== Compile an IDE with packages at command line ==<br />
You can use [[lazbuild]] to compile and install your package, and add --build-ide to rebuild the IDE.<br />
<br />
== Questions ==<br />
If you have any questions, go to the lazarus [http://www.lazarus.freepascal.org/index.php?name=PNphpBB2&file=index forum] or post it to the Lazarus mailing list.<br />
<br />
==See also==<br />
<br />
* [[Lazarus Packages]]<br />
* [[Install IDE packages without the IDE]]<br />
<br />
[[Category:Lazarus]]<br />
[[Category:Tutorials]]</div>Alexrushttps://wiki.freepascal.org/index.php?title=GLScene/ru&diff=83222GLScene/ru2014-09-26T02:40:31Z<p>Alexrus: </p>
<hr />
<div>{{GLScene}}<br />
<br />
=== О GLScene ===<br />
GLScene это основанная на OpenGL 3D библиотека. Изначально была написана для Delphi, но теперь спокойно работает с C++ Builder, Kylix, Delphi и Lazarus.<br />
<br />
Основные характеристики :<br />
<br />
Описание сцены<br />
*иерархическая структура объектов с множеством объектов (количество зависит от ОЗУ) и простотой расширения<br />
*интерактивное управление сценой (numerous Delphi experts) <br />
*простые функции вращения и перемещения для каждого объекта<br />
*предопределенные объекты (все стандартные от куба до чайника и спрайтов), легко расширяемые <br />
*структурные объекты (каркасный куб, прокси-объект) для управления композитными объектами<br />
*процедурные объекты (heightfield, вращение твердых тел, трубы, tesselators...) <br />
*поддержка 2D и 1D объектов (спрайты, линии с поддержкой сплайнов) полностью интегрирована <br />
*HUD-объекты (спрайты визуализированные в 2D координатах) <br />
*утилитные объекты (сетки, небо, стрелки...) <br />
*поддержка классов для прямого доступа OpenGL<br />
*объекты камеры и света могут быть использованы в любом месте иерархии объектов сцены<br />
*поведенческие объекты могут быть привязаны к объектам для их анимации с возможностью расщирения<br />
*специальные эффекты на объект (до/после визуализации объекта и сцены), с возможностью простого расширения<br />
*поддержка систем частиц, любые объекты или структуры объектов могут выступать в роли частиц<br />
*импорт 3D Studio файлов с автоматическим вычислением векторов нормалей (using the given *smoothing groups of the file) и текстурных координат <br />
*поддержка других форматов импорта: OBJ/OBJF, SMD, MD2, STL, TIN, PLY <br />
<br />
Материалы<br />
*простые в использовании, оптимизированные, объекты материалов <br />
*библиотека материалов для совместного использования <br />
*поддержка света: окружающего, диффузного, излучаемого, отраженного и светимости<br />
*поддержка режимов смешивание (прозрачность, наложения...) <br />
*автогенерация альфа-канала<br />
*поддержка форматов OpenGL текстур, включающих сжатие (DXT, S3TC и т.д.) <br />
*общая поддержка шэйдеров<br />
*высокоуровневая поддержка классов Cg шэйдеров<br />
*полиморфные изображения для текстурирования (позволяют использовать множество форматов также хорошо как и процедурные текстуры, с простым расширением <br />
*более чем 150 предопределенных цветов таких как clrCornflowerBlue или clrCoolCopper (легко расширяемые) *в дополнение к стандартным цветам и прямому использованию спецификации RGBA<br />
*простое использование перемещения и масштабирования свойств текстур, независимо от координат текстур<br />
*поддержка 32-битны растровых классов<br />
<br />
Визуализация<br />
*автоматическое использование аппаратных возможностей OpenGL, при их наличие<br />
*использование с моделью камеры, фокуса, расстояния и цели<br />
*множество точек обзора для одной или больше сцен, простая смена вида через выбор камеры<br />
*поддержка тумана и глубины вида<br />
*визуализация в файл в виде растровой картинки или на принтер в любом цвете и разрешениии<br />
*поддержка полноэкранного режима с динамической сменой разрешения<br />
*эффекты отражения и зеркала<br />
*динамические тени<br />
*высокопроизводительная поддержка системы прозрачных частиц во всей сцене<br />
*automatic frustrum culling (hierarchical or per-object) <br />
<br />
Анимация<br />
*propagation of time progression events <br />
*скелетная анимация (множество костей на вершину) <br />
*кадровая интерполяция и морфинг целей<br />
*простое расширяемое Поведение<br />
*динамика: инерция, ускорение, затухание и применение силы<br />
*автоматическая модуляция сцены<br />
<br />
Интерфейс <br />
*простые функции для определения выбранных объектов<br />
*вспомогательные функции для перемещения камеры<br />
*вспомогательные функции для для перемещения выбранных объектов<br />
*вспомогательные функции для для конвертирования экранных координат в мировые<br />
<br />
Утилиты <br />
*оптимизированные геометрические функции и утилиты (вектор, [http://ru.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D1%82%D0%B5%D1%80%D0%BD%D0%B8%D0%BE%D0%BD кватернион] и матрицы...) <br />
*поддержка функций [http://ru.wikipedia.org/wiki/%D0%9A%D1%83%D0%B1%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%BF%D0%BB%D0%B0%D0%B9%D0%BD кубических сплайнов] и классов<br />
*манипуляции с [http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%88 мэшами] и оптимизация (stripification, vertex-cache awareness, и т.д.) <br />
*компонент для создания полноценнхы хранителей экрана в несколько щелчков<br />
*точное определение скорости смены кадров<br />
*асинхронный таймер (многопоточный) <br />
*поддержка джойстика<br />
*асинхронный доступ к клавиатуре и поддержка раскладок клавиатуры<br />
<br />
=== Снимики экрана (Screenshots) ===<br />
[[Image:Gl effect.jpg]]<br />
[[Image:Gl cel.jpg]]<br />
[[Image:Gl trinity.jpg]]<br><br />
[[Image:Gl ode.jpg]]<br />
<br />
=== Автор ===<br />
Author: изначально Mike Lischke<br><br />
at time maintained by Eric Grange<br><br />
Порт LCL: [[User:Christian|Christian Ulrich]]<br />
<br />
=== Скачать ===<br />
==== Последняя версия (v1.0.0.2) ====<br />
* Новый снэпшот релиза можно найти на [http://sourceforge.net/project/showfiles.php?group_id=92177&package_id=185641 Lazarus CCR Files page].<br />
Этот снэпшот в основном совпадает с оригинальным cvs репозиторием по функциоанальности и исправлению ошибок, но до сих пор отсутствуют некоторые части, которые не появятся в "Lazarus-with-GLScene-Installer", пока кто нибудь не создаст их.<br />
<br />
--[[User:Crossbuilder|Crossbuilder]] 20:16, 18 Июля 2007 (CEST)<br />
<br />
==== Устаревшая версия ====<br />
Старый релиз (версия 0.9.1.6) можно найти по ссылке [http://sourceforge.net/project/showfiles.php?group_id=92177&package_id=98986&release_id=364007 Lazarus CCR Files page] вместе с инсталятором lazarus и интегрированным в него GLScene.<br />
ОБНОВЛЕНИЕ: Это старая версия. Постарайтесь использовать версию из svn (см. ниже).<br />
<br />
=== SVN ===<br />
Вы можете проверить последнию версию здесь:<br><br />
http://svn.freepascal.org/svn/fpcprojects/glscene/trunk/<br><br />
<br />
Команда для проверки/получения: <br><br />
<pre>svn co http://svn.freepascal.org/svn/fpcprojects/glscene/trunk glscene</pre><br />
<br />
Эта команда скачает основной репозиторий в каталог "glscene".<br />
<br />
В операционной системе Windows вы можете воспользоваться любым клиентом-SVN, например [http://tortoisesvn.tigris.org tortoise].<br />
<br />
=== Отчет об ошибках ===<br />
<br />
[http://www.freepascal.org/mantis/ Bug Reporting/Featurerequest] Пожалуйста выберите Проект "Packages" и Категорию "glscene" для своего отчета. Спасибо.<br />
<br />
=== Изменения ===<br />
* 18.07.2007 Snapshot release version 1.0.0.2<br />
** adjusted some things, so it works with latest lazarus svn version<br />
** added object bitmaps for the SceneEditor<br />
** fixed another AV in SceneEditor<br />
** incorporated all patches and bugfixes from original glscene cvs repo like dynamic textures ..<br />
* 13.06.2007 Snapshot release version 1.0.0.1<br />
** incorporated all patches and bugfixes from original glscene cvs repo<br />
** improved scene editor (crashes less, but still needs some love)<br>'''Tip:''' Save your project frequently ;-)<br />
** seperated mmsystem dependent stuff from generic sound support so e.g. FMOD is available in linux, too<br />
** many more ..<br />
*01.12.06 Added support for ODE, gtk2 and Cg shaders in Linux (ODE is limited to normal release, unsupported are cone, ccylinder and terrains)<br />
*10.08.05 Too many changes to post here see cvs history<br />
*16.07.05 GLScene 0.9.X Port<br />
*look at GLScene Sourceforge Account for complete Changelog<br />
<br />
Статус: Beta<br />
<br />
=== Установка версии 1.0.0.2 ===<br />
'''Требуется fpc 2.1.4 или новее и lazarus 0.9.23 rev. 11348 или новее !!'''<br />
<br />
* '''распаковка исходного кода'''<br />
** ZIP:<br />
*** в каталоге "lazarus/components/" выполните "unzip glscene-1.0.0.2.zip" <br>При этом будет создан каталог lazarus/components/glscene/<br />
** SVN:<br />
*** в каталоге "lazarus/components/" выполните <pre>svn co http://svn.freepascal.org/svn/fpcprojects/glscene/trunk glscene</pre>При этом будет создан каталоге lazarus/componets/glscene/<br />
**Tortoise SVN: <br />
***добавьте каталоге "glscene" вручную, так чтобы получилось lazarus/components/glscene. После этого выполните команду контекстного меню "SVN Checkout..." на созданном каталоге. Введите в поле "URL of repository"<pre>http://svn.freepascal.org/svn/fpcprojects/glscene/trunk</pre>Подтвердите кнопкой "OK".<br />
<br />
<br />
<br />
* '''Завершение установки:'''<br />
** скопируйте "lazarus/components/glscene/globallinks/*.lpl" в "lazarus/packager/globallinks/" (только для *nix)<br />
** запустите lazarus<br />
** выполните команду "Найстройка установленных пакетов..." из меню "Пакет" (Пакет/Найстройка установленных пакетов...)<br />
** выберите "glscenelazarus" из списка "Доступные пакеты"<br />
** щелкните по кнопке "Установить выбранное"<br />
** щелкните по кнопке "Сохранить и перезапустить IDE"<br />
*** ВНИМАНИЕ: Может появится ошибка о том что пакет "jpegforlazarus" не найден. Если такая ошибка появилась, то выполните следующие действия:<br />
*** выполните команду Пакеты/Открыть загруженный пакет...<br />
*** выберите "glscenelazarus" и щелкните "Открыть..."<br />
*** в самом низу появившегося списка "Требуемые пакеты" удалите зависимость от "jpegfromlazarus".<br />
*** отредактирйте модуль "jpeg" в каталоге /lazarus/components/glscene/Source/base и удалите "LazJPEG" (в разделе uses) в модуле "LazJPG" (из пакета ImagesForLazarus).<br />
*** сохраните и повторите последние 4 шага опять.<br />
*** ПОДСКАЗКА: Вам следует установить пакет "ImagesForLazarus" (тем же самым способом что и пакет "glscenelazarus"). <br />
** повторите последние 4 шага для остальных пакетов, которые вы собираетесь использовать.<br />
*** Заметка: glsceneode и glscenecgshader требуют наличия их библиотек в системе во время инсталяции!<br />
** '''Заметка:''' вы также можете попробовать выбрать и установить все пакеты одновременно.Тем не менее, я предпочитаю делать это шаг за шагом, чтобы видеть где произошла ошибка, если она произошла ;)<br />
** '''Ошибки при установке "glscenelazarus":''' (только для glscene-1.0.0.2.zip, в версии из svn это уже исправлено)<br />
***Исправьте в модуле GLLCLViewer: измените procedure TGLSceneViewer.CreateParams(var Params: TCreateParams); - на procedure TGLSceneViewerLCL.CreateParams(var Params: TCreateParams); <br />
***Исправьте в модуле GLLCLViewer: procedure TGLSceneViewer.EraseBackground(DC: HDC); - на procedure TGLSceneViewerLCL.EraseBackground(DC: HDC); <br />
***Исправьте в модуле GLLCLFullscreenViewer: измените "RegisterClasses([TGLSceneViewer, TGLFullScreenViewer]);" на "RegisterClasses([TGLFullScreenViewer]);"<br />
<br />
* '''Список пакетов:'''<br />
** '''glscenelazarus''' Основной пакет.<br />
** '''glscenecgshader''' Компоненты Cg-шейдеров<br />
** '''glsceneode''' ODE компоненты<br />
** '''glss_fmodlaz''' FMOD компоненты<br />
** '''gls_winonly''' Только для Windows. Содержит поддержку звука через mmsystem, BASS и поддержку компонента GLScreenSaver <br />
<br />
* '''Ошибки при компиляции "демок":'''<br />
**Если не найден класс - TGLSceneViewer, то следует изменить в разделе uses GLLCLViewer на GLViewer<br />
<br />
=== Установка версии 0.9.6.1 ===<br />
* Создайте каталог lazarus\components\GLScene<br />
* В созданном каталоге распакуйте/разархивируйте файлы из архива<br />
* Запустите Lazarus<br />
* Откройте пакет glscenelazarus.lpk командой Компоненты/Открыть пакет(.lpk) из каталоге lazarus\components\glscene\Lazarus<br />
* (Щелкните по кнопке Компилировать при необходимости, если не хотите установки компонент в IDE)<br />
* Щелкните по кнопке Установить<br />
* Повторите эти шаги (открыть .lpk, щелкните по кнопке Установить) для остальныъ пакетов, которые хотите использовать. Заметка: эти дополнительные пакеты требуют дополнительных библиотек (fmod, [http://www.ode.org ode], [http://developer.nvidia.com/object/cg_toolkit.htm Cg]). <br />
** glscenecgshader.lpk : Cg шейдеры (только для карт nVidia)<br />
** glsceneode.lpk : поддержка библиотеки ode<br />
** glsss_fmodlaz.lpk : поддержка библиотеки fmod<br />
** gls_winonly.lpk : может быть установлено только в операционной системе Windows. Содержит средства создания хранителей экрана.<br />
<br />
Подсказка: sometimes an Error "GLGraphics not found" occurs. Don't worry, just do Tools->Build Lazarus again and it should be ok.<br />
<br />
A full install of Lazarus with GLScene already in the IDE is available as [http://sourceforge.net/project/showfiles.php?group_id=92177&package_id=185641&release_id=405739 binary win32 release] or [http://www.skinhat.com/lazarus http://www.skinhat.com/lazarus]<br />
<br />
Just a warning for (new) Linux users:<br />
GLScene in its current state is not working "out of the box" (lots of modifications/additions needed).<br />
UPDATE: this is not true anymore. glscene for lazarus is pretty up-to-date and most things work good right out of the box for windows as well as for linux.<br />
<br />
As of latest trunk version (see svn above) the linux version is working well. Some demos (about 20%) are still broken but the majority of glscene is now working. We're also moving towards making it work in other Unix platforms like FreeBSD.<br />
<br />
The missing/nonworking parts on non-windows are: glKeyboard (uses winapi, but is not required mostly), glSound(which uses mm, we need to use openal or somesuch)<br />
<br />
Пока в разработке [[Lazarus- Game Developers Edition|fully featured windows installer]].<br />
<br />
=== Помощь ===<br />
<br />
* можно найти на [http://www.glscene.org на основной странице GLScene]<br />
* присоедениться к каналу #glscene на сервере freenode.net<br />
* [http://www.glscene.ru/ русский сайт GLScene]</div>Alexrushttps://wiki.freepascal.org/index.php?title=Roadmap/ru&diff=83215Roadmap/ru2014-09-25T09:10:21Z<p>Alexrus: Created page with "{{Roadmap}} This document gives an idea of the current status of the various parts of Lazarus and also helps new contributors to find a suitable place where they can help. It..."</p>
<hr />
<div>{{Roadmap}}<br />
<br />
This document gives an idea of the current status of the various parts of Lazarus and also helps new contributors to find a suitable place where they can help. It also shows the people implementing the various parts and the targets.<br />
<br />
__TOC__<br />
<br />
{{Template:Development Status}}<br />
<br />
==Общее состояние widgetsets==<br />
<br />
{{Template:Widgetset Roadmap}}<br />
<br />
==Современное состояние различных частей Lazarus==<br />
<br />
<br />
{| class="wikitable sortable"<br />
! Unit !! Item !! State !! Target !! Skills !! Responsible !! Comments<br />
|---- class="working"<br />
|IDE||TCollection Editor||Работает||0.9.x||FCL, RTTI, IDE||-||A generic TCollection editor for the various TCollections in the LCL/FCL.<br />
|---- class="working"<br />
|IDE||TActionList||Работает||0.9.x||-||-||-<br />
|---- class="working"<br />
|IDE||Doc Editor||Работает||-||fpdoc||-||The doc editor will be an integrated fpDoc editor similar to fpde. It will be a process of its own, so that it can show help for dialogs as well. It should also be able to write help for packages.<br />
|---- class="working"<br />
|IDE||Export LFM as xml||Работает||-||-||-||Load and save LFM files to XML.<br />
|---- class="partial"<br />
|IDE||[[Icon Editor Roadmap]]||in progress||post 1.0||-||-||A simple icon editor with the ability to create lrs files. It will be a good example and can help newbies to create icons for their components.<br />
|---- class="working"<br />
|LCL||Borderspacing||Работает||0.9.x||-||-||for aligned controls<br />
|---- class="working"<br />
|LCL||Drag&Drop||Работает||||-||-||<br />
|---- class="working"<br />
|LCL||Port to Darwin Power PC, Mac OS X||Работает||0.9.x||-||-||depends on FPC 1.9.5<br />
|---- class="working"<br />
|LCL||Port to Mac OS X x86||Работает||-||-||-||depends on FPC 2.1.1<br />
|---- class="working"<br />
|LCL||TSplitter||Работает||0.9.x||easy||-||-<br />
|---- class="working"<br />
|LCL||TFindDialog||Работает||-||-||-||Implemented in 0.9.16<br />
|---- class="working"<br />
|LCL||TReplaceDialog||Работает||-||-||-||Implemented in 0.9.16<br />
|---- class="working"<br />
|LCL||TControl.Font||in progress||0.9.x||-||-||-<br />
|---- class="working"<br />
|LCL||TTabControl||in progress||0.9.x||-||-||-<br />
|---- class="partial"<br />
|LCL||Docking (= the combination of forms)||partially working, in progress||post 1.0||deep LCL and interfaces||Mattias||-<br />
|---- class="working"<br />
|LCL||Frames (= forms as children)||Работает||0.9.28||deep knowledge of LCL||Mattias, Paul||-<br />
|---- class="working"<br />
|IDE||Visual Form Inheritence||Работает||post 1.0||IDE||Mattias||Properties are not yet propagated to open descendants<br />
|---- class="partial"<br />
|LCL||MDI - Multiple Documents Interfaces Putting fo ...||in progress||1.2||deep LCL and interfaces||[[User:Zeljan|Zeljan]]||An MDI LCL emulator for widgetsets which does not support MDI, also native implementation of MDI for qt and win32/64. Currently only qt has full MDI support, others are in progress.<br />
|---- class="not"<br />
|LCL||Palette support||not implemented||-||-||-||Required to correctly show colors on a 256 colors display<br />
|---- class="partial"<br />
|LCL||TCoolBar||partially working, in progress||post 1.0||LCL and anchoring||[[User:JuhaManninen|Juha]]||-<br />
|---- class="partial"<br />
|LCL||TControlBar||skeleton implementation to prevent errors in Delphi conversion, in progress||post 1.0||LCL and anchoring||[[User:JuhaManninen|Juha]]||-<br />
|---- class="working"<br />
|LCL||TMaskEdit||Работает||-||-||[[User:Bart|Bart]]||-<br />
|---- class="not"<br />
|LCL||TDirectoryTreeView||not implemented||-||-||-||-<br />
|---- class="not"<br />
|LCL||Constrain maximization to specific area||not implemented||-||winapi, gtk||-||When maximizing a window, the left, top, width and height can all be constrained to a specific rectangular area on the screen/desktop. After this is done, constrain the source editor and maybe other windows<br />
|---- class="working"<br />
|Components||TIcon||Работает||0.9.26||-||Marc||-<br />
|---- class="working"<br />
|Components||CUPS Package||Работает||0.9.x||easy||-||<br />
|---- class="working"<br />
|}<br />
<br />
==Статус функций на каждом widgetset==<br />
<br />
{| class="wikitable sortable"<br />
! Компонент !! win32 !! gtk !! gtk2 !! carbon !! qt !! wince !! fpgui !! cocoa !! customdrawn<br />
|----<br />
|Accelerator Keys<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="unknown"|Not Applicable<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|Caret<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="unknown"|Unknown<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|Clipboard<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="partial"|Implemented in Android<br />
|----<br />
|Cursors<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|Drag & Drop<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="not"|Not Applicable<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|[[Drop files event]]<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="not"|Not Applicable<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|MDI Support<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|class="not"|Not Implemented||class="working"|Работает||class="not"|Not Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|Printing<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="unknown"|Unknown<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|Regions<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TCustomControl descendents<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|Unicode Support<br />
|class="working"|Работает||class="not"|Impossible to Implement||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|----<br />
|[[BidiMode]]<br />
|class="working"|Работает||class="not"|Not Implemented||class="partial"|Partially Implemented<br />
|class="not"|Not Implemented||class="working"|Работает||class="not"|Not Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|Application||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="partial"|Partially Implemented||class="partial"|Partially Implemented||class="working"|Работает<br />
|----<br />
|TTimer||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TApplication.QueueAsyncCall||class="working"|Работает||class="unknown"|Unknown||class="working"|Работает<br />
|class="unknown"|Unknown||class="working"|Работает||class="unknown"|Unknown<br />
|class="not"|Not Working||class="unknown"|Unknown||class="not"|Not Implemented<br />
|----<br />
|TThread.Synchronize||class="working"|Работает||class="unknown"|Unknown||class="working"|Работает<br />
|class="unknown"|Unknown||class="working"|Работает||class="unknown"|Unknown<br />
|class="working"|Работает||class="unknown"|Unknown||class="not"|Not Implemented<br />
|----<br />
|PostMessage||class="working"|Работает||class="unknown"|Unknown||class="working"|Работает<br />
|class="unknown"|Unknown||class="working"|Работает||class=""unknown"|Unknown<br />
|class="not"|Not Working||class="unknown"|Unknown||class="not"|Not Implemented<br />
|----<br />
|PostThreadMessage||class="working"|Работает||class="unknown"|Unknown||class="unknown"|Unknown<br />
|class="unknown"|Unknown||class="unknown"|Unknown||class="unknown"|Unknown<br />
|class="unknown"|Unknown||class="unknown"|Unknown||class="not"|Not Implemented<br />
|}<br />
<br />
==Статус Graphics на каждом widgetset==<br />
<br />
{| class="wikitable sortable"<br />
! Компонент !! win32 !! gtk !! gtk2 !! carbon !! qt !! wince !! fpgui !! cocoa !! customdrawn<br />
|----<br />
|TBitmap/TPixmap/TIcon/etc||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="partial"|Partially Implemented||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TBrush||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TFont||class="working"|Работает||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TPen||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|ExtTextOut||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="unknown"|Unknown||class="working"|Работает<br />
|}<br />
<br />
==Статус собственных элементов управления на каждом widgetset==<br />
Родные элементы управления потомки TWinControl, которые не происходят от TCustomControl.<br />
<br />
{| class="wikitable sortable"<br />
! Компонент !! win32 !! gtk !! gtk2 !! carbon !! qt !! wince !! fpgui !! cocoa !! customdrawn<br />
|----<br />
|TBitBtn||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="partial"|Partially Implemented||class="partial"|Partially Implemented<br />
|----<br />
|TButton||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|----<br />
|TCalendar||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TCheckBox||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|----<br />
|TCheckGroup||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TCheckListBox||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TComboBox||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Implemented in Android<br />
|----<br />
|TEdit||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|----<br />
|TForm||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|----<br />
|TGroupBox||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TIdleTimer||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TImageList||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает|| class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TListBox||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TListView||class="working"|Работает||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TMainMenu||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Implemented in Android<br />
|----<br />
|TMemo||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|----<br />
|TMenuItem||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Implemented in Android<br />
|----<br />
|TPageControl and TTabSheet||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="working"|Работает||class="not"|Not Implemented<br />
|----<br />
|TPairSplitter||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="not"|Not Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TPanel||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|----<br />
|TPopupMenu||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TProgressBar||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|----<br />
|TRadioButton||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="partial"|Partially Implemented||class="partial"|Partially Implemented<br />
|----<br />
|TRadioGroup||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TScrollBar||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="partial"|Partially Implemented<br />
|----<br />
|TScrollBox||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="unknown"|Unknown<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TSpinEdit||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="unknown"|Unknown<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="partial"|Partially Implemented<br />
|----<br />
|TSplitter||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="unknown"|Unknown<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TStaticText||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TStatusBar||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TToggleBox||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TTrackbar||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="working"|Работает||class="working"|Работает<br />
|----<br />
|TTrayIcon||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="not"|Not Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|}<br />
<br />
==Статус диалогов на каждом widgetset==<br />
<br />
{| class="wikitable sortable"<br />
! Компонент !! win32 !! gtk !! gtk2 !! carbon !! qt !! wince !! fpgui !! cocoa !! customdrawn<br />
|----<br />
|LCLIntf.MessageBox||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="partial"|Partially Implemented||class="working"|Работает<br />
|class="working"|Работает||class="unknown"|Unknown||class="partial"|Implemented for Android<br />
|----<br />
|Application.MessageBox, MessageDlg, LCLIntf.PromptUser||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="unknown"|Unknown||class="partial"|Implemented for Android<br />
|----<br />
|LCLIntf.AskUser||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="unknown"|Unknown||class="not"|Not Implemented<br />
|----<br />
|TColorDialog||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="not"|Not Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TFontDialog||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="not"|Not Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TOpenDialog||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TPrinterSetupDialog||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="working"|Работает||class="not"|Not Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TSaveDialog||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="not"|Not Implemented||class="not"|Not Implemented<br />
|}<br />
<br />
==Статус элементов управления на основе TCustomControl на каждом widgetset==<br />
Обратите внимание, что будучи потомком TCustomControl не гарантирует, что контроль не имеет реализации widgetset. TArrow имеет его, хотя он имеет хорошую реализацию по умолчанию. TNotebook будет полностью реализована в LCL.<br />
<br />
{| class="wikitable sortable"<br />
! Компонент !! win32 !! gtk !! gtk2 !! carbon !! qt !! wince !! fpgui !! cocoa !! customdrawn<br />
|----<br />
|TArrow ||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TNoteBook||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TUpDown||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="partial"|Partially Implemented<br />
|----<br />
|TStringGrid||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="partial"|Partially Implemented<br />
|----<br />
|TDrawGrid||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="unknown"|Unknown<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="partial"|Partially Implemented<br />
|----<br />
|TToolBar||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TTreeView||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|----<br />
|TValueListEditor||class="partial"|Partially Implemented||class="partial"|Partially Implemented||class="partial"|Partially Implemented<br />
|class="partial"|Partially Implemented||class="partial"|Partially Implemented||class="partial"|Partially Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="not"|Not Implemented<br />
|}<br />
<br />
==Статус элементов управления на основе TGraphicControl на каждом widgetset==<br />
'''Примечание:''' Они предназначены для заворачивания в LCL компоненты, а '''не''' для конкретных самостоятельных функций GUI инструментария.<br />
<br />
{| class="wikitable sortable"<br />
! Компонент !! win32 !! gtk !! gtk2 !! carbon !! qt !! wince !! fpgui !! cocoa !! customdrawn<br />
|----<br />
|TBevel||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="not"|Not Implemented||class="working"|Работает||class="not"|Not Implemented<br />
|----<br />
|TLabel||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="not"|Not Implemented||class="working"|Работает||class="partial"|Implemented for Android<br />
|----<br />
|TShape||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="partial"|Partially Implemented||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TSpeedButton||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="unknown"|Unknown<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TPaintBox||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="unknown"|Unknown<br />
|class="not"|Not Implemented||class="not"|Not Implemented||class="working"|Работает<br />
|----<br />
|TImage||class="working"|Работает||class="working"|Работает||class="working"|Работает<br />
|class="working"|Работает||class="working"|Работает||class="partial"|Partially Implemented<br />
|class="not"|Not Implemented||class="working"|Работает||class="working"|Работает<br />
|}<br />
<br />
==Статус LazDeviceAPIs на каждом widgetset==<br />
<br />
{| class="wikitable sortable"<br />
! Компонент !! customdrawn-android<br />
|----<br />
|Accelerometer||class="working"|Работает<br />
|----<br />
|Messaging (SMS, MMS and E-Mail)||class="partial"|SMS Implemented<br />
|----<br />
|PositionInfo||class="working"|Работает<br />
|}<br />
<br />
==Смотри также==<br />
<br />
*[[LCL Internals]]<br />
*[[TAChart Roadmap]]<br />
<br />
[[Category:Lazarus]]<br />
[[Category:Roadmaps]]</div>Alexrus