dsp8195 Опубликовано 9 января, 2008 Жалоба Опубликовано 9 января, 2008 (изменено) Название: [Delphi] team Описание сообщества: Тим, объединяющий любителей программирования на Pascal / Object Pascal / Delphi и других схожих языках. Дельфийщики и программеры - это несколько разные понятия. :lol: "Как в пустыне поймать льва и посадить его в клетку?" Вот как решают эту задачу различные деятели эпохи информационных технологий: Программист на Pascal: просматривает пустыню полным перебором. Обнаружив льва, строит вокруг него клетку. Продвинутый программист на Pascal: сортирует пустыню по возрастанию, после чего ищет льва двоичным поиском и строит вокруг него клетку. Если в процессе работы лев уходит, бросает работу с криком "Range Check Error". Программист на C: ищет в пустыне камень и помещает его в клетку. Присваивает камню значение "лев". Программист на C++: проектирует клетку так, чтобы лев был её составной частью. При инициализации клетки лев автоматически генерируется внутри. Программист на Ada: говорит, что лев и клетка - объекты разных типов и нечего морочить ему голову некорректными задачами. Программист на Delphi: пишет во все конференции: "Народ, где взять компонент, который ищет в пустыне льва и помещает его в клетку?" Что можно делать в этой теме? Обсуждать наработки, приёмы, любимые компоненты и библиотеки, делиться своими впечатлениями. Сильно флудить не стоит, ибо можно разгневать администрацию. :) Руководитель сообщества: WinKi-тян Способ вступления: просто отпишитесь в теме и Вы приняты. Желательно указать, какой средой программирования пользуетесь (Turbo Pascal (Borland Pascal), Delphi (+номер версии), Kylix (+аналогично) и т.п.). Участники:0. WinKi-тян1. Un4given2. Маста3. Гримджо4. AngryMouse Изменено 2 июля, 2009 пользователем WinKi-тян (смотреть историю редактирования) Цитата
dsp8195 Опубликовано 11 января, 2008 Автор Жалоба Опубликовано 11 января, 2008 (изменено) Ну чтож, пока никто не пришёл, дам пару *очень* простых советов, которые пригождаются довольно таки часто (и не только новичкам). Хотите сделать лаунчер\авторанку для игрушки\диска с картинками\музыкой, но не знаете, как заставить программу запускать другие программы\открывать картинки? Нет ничего проще. В составе Delphi есть замечательная библиотека ShellAPI, а в ней в свою очередь функция ShellExecute. Пример использования: Добавьте в uses строку ShellAPI. Далее, в код кнопки\надписи\картинки: ShellExecute(handle, nil, '<относительный путь к файлу>', '<аргументы для запуска (если это программа)>', '<рабочая папка (программы)>', <стиль окна (программы)>); Особенно важен последний пункт. Вот его возможные значения (не все, остальные дублируют нижеуказанные): sw_shownormal - открывает окно программы в таком виде, в котором изначально задумал разработчик.sw_showminimized - открывает окно программы в свёрнутом состоянии.sw_showmaximized - принудительно растягивает окно программы во весь экран (может вызвать непредсказуемые побочные эффекты).sw_shownoactive - открывает окно на заднем плане (неактивное окно)sw_showminnoactive - делает тоже самое, только ещё и в свёрнутом состоянии Допустим, у нас на диске есть 2 папки, в которых располагаются Winamp (autoplay) и наши треки (mp3). Сам исполняемый файл авторанки лежит в корне диска. Тогда, вот что у нас получится: ShellExecute(handle, nil, 'autoplay/winamp.exe', 'mp3/playlist.m3u', 'autoplay', sw_shownormal); Пояснение: в качестве рабочей папки мы указали 'autoplay', иначе Winamp при запуске мог просто не обнаружить собственные плагины и модули. Но, а что если нам необходимо запрограммировать гиперссылку? Никаких проблем: ShellExecute(handle, nil, 'https://www.animeforum.ru', nil, nil, sw_shownormal); Если необходимо, чтобы ссылка характерно подсвечивалась при наведении указателя на TLabel или TButton: Добавляем в свойство OnMouseEnter примерно следующий код: Label_Hyperlink.Font.Color := clHighlight; // Также можно использовать и HTML-цвета, просто заменить префикс # на $ и поменять местами первые два и последние два символа (в Дельфи цвет записывается не как #RRGGBB, а $BBGGRR) А затем в свойство OnMouseLeave: Label_Hyperlink.Font.Color := clDefault; Изменено 11 января, 2008 пользователем WinKi-тян (смотреть историю редактирования) Цитата
Un4given Опубликовано 11 января, 2008 Жалоба Опубликовано 11 января, 2008 хех ) вообщем работаю с Паскалем и C++ билдер довольно плотнопопутно изучаю Clips и Ассемблер =) Цитата
dsp8195 Опубликовано 11 января, 2008 Автор Жалоба Опубликовано 11 января, 2008 Un4given, добро пожаловать. ^_^ Цитата
dsp8195 Опубликовано 29 марта, 2008 Автор Жалоба Опубликовано 29 марта, 2008 (изменено) Эх... давненько что-то тема простаивает... Вот ещё несколько крохотных советов по дизайну. 0. Если Вы хотите придать каждой форме собственный значок, но при этом желаете, чтобы всё было сделано "по правилам", то есть через Windows-ресурсы, необходимо выполнить следующее: а. Создать res-файл (это можно сделать через программы Restorator, ResHacker или через встроенный редактор ресурсов Delphi) и залинковать его в тело приложения директивой {$R Имя_файла.res} (обычно это делается в модуле главной формы). b. Для того, чтобы вызвать этот значок, вставьте в процедуру OnCreate следующий код: try Имя_Формы.Icon.Handle := LoadIcon(MainInstance,'Имя_ресурса_значка'); except // Молчим насчёт отсутствующего значка end; А на вопрос "зачем так извращаться", есть простой ответ - оптимизация. Windows-ресурсы весят меньше, чем те же данные, встроенные в форму Delphi. +упрощает перерисовку графических элементов программы - достаточно лишь отредактировать ресурс, а затем запустить Delphi для компиляции. ;) 1. Мною были испробованы несколько компонентов, заменяющих SpeedButton, но обнаружилась одна маленькая проблема - в моём случае вся графика загружается из Windows-ресурсов в формате PNG. Это сделало невозможным использование полупрозрачности (TPNGSpeedButton работает с ошибками -- если на кнопке ЕСТЬ подпись, то глиф при загрузке из Windows-ресурса рендерится ПОВЕРХ неё :(, что в моём случае было просто неприемлимо). Но, оказалось что нет ничего невозможного, и мя удалось придумать вполне неплохо работающий способ загрузки и рендеринга полупрозрачного глифа на обычный SpeedButton! :lol: Собственно, код (Лицензия - GPL v3): Примечание: в качестве первого входного параметра подставляем КОМПОНЕНТ, а точнее нечто вида TSpeedButton.Glyph или TImage.Bitmap. В качестве второго -- любой TGraphic, будь то BMP, JPG, PNG, GIF или другой вид ресурсов, совместимый с TGraphic. Далее ширину и высоту в пикселях. Ну, и последнее - цвет для рендеринга, как в виде константы Delphi, так и в виде цвета $AAGGBBRR. { Draws translucent graphics (hack for TSpeedButton & other native Delphi 7 components). ^___^ } procedure Skin_DrawButtonIcon(Glyph : TBitmap; Source : TGraphic; GlyphWidth : integer = 48; GlyphHeight : integer = 48; DrawColor : TColor = clBtnFace); begin Glyph.Create; // Инициализируем контейнер картинки Glyph.Width := GlyphWidth; // Присваиваем ширину... Glyph.Height := GlyphHeight; // ...и высоту { Fixing color "bug" } Glyph.Canvas.Pen.Color := DrawColor; // Назначаем фоновый цвет для рендеринга if GlyphWidth > GlyphHeight then Glyph.Canvas.Pen.Width := GlyphWidth else Glyph.Canvas.Pen.Width := GlyphHeight; // Присваиваем инструменту "ручка" толщину линии по ширине или высоте картинки Glyph.Canvas.Rectangle(0,0,GlyphWidth,GlyphHeight); // рендерим фон Glyph.Canvas.Draw(0,0,Source); // накладываем картинку end; А вот и пример использования (укороченный): procedure LoadSkin; var Icon_Archive_Open : TPNGObject; begin // Создаём контейнер Icon_Archive_Open := TPNGObject.Create; // Загружаем ресурс в контейнер Icon_Archive_Open.LoadFromResourceName(HInstance,'Icon_Archive_Open'); // Вызываем вышеописанную процедуру Skin_DrawButtonIcon(SB_OpenArchive.Glyph,Icon_Archive_Open); // Высвобождаем память от контейнера FreeAndNil(Icon_Archive_Open); end; Теперь несколько слов о том, почему строка Icon_Archive_Open.LoadFromResourceName(HInstance,'Icon_Archive_Open'); не вызвала ошибки. Дело в том, что перед её использованием необходимо внести небольшое исправление в библиотеку pngimage.pas (пакет TPNGImage 1.4): Найдите этот участок кода... try ResStream := TResourceStream.Create(Instance, Name, RT_RCDATA); except RaiseError(EPNGCouldNotLoadResource, EPNGCouldNotLoadResourceText); exit; end; ...замените его на... // WinKi: this version will try to load from PNG resdata type first try ResStream := TResourceStream.Create(Instance, Name, 'PNG'); except try ResStream := TResourceStream.Create(Instance, Name, RT_RCDATA); except RaiseError(EPNGCouldNotLoadResource, EPNGCouldNotLoadResourceText); exit; end; end; На этом всё, до новых встреч. ^___~ Изменено 29 марта, 2008 пользователем WinKi-тян (смотреть историю редактирования) Цитата
Маста Опубликовано 17 ноября, 2008 Жалоба Опубликовано 17 ноября, 2008 WinKi-тян, Респект, отличный обзорчик даже захотелось вступить в тим.Если конечно вы немного расширите существующие рамки, я в последнее время отошел от Pascal, но не далеко.. Цитата
dsp8195 Опубликовано 17 ноября, 2008 Автор Жалоба Опубликовано 17 ноября, 2008 Маста, mochiron! :rolleyes: Одно "но": напиши пожалуйста, какой средой программирования пользуешься. :) Цитата
Маста Опубликовано 1 декабря, 2008 Жалоба Опубликовано 1 декабря, 2008 (изменено) Arigatou WinKi-тян 1С язык встроенной конфигурации одноимённой программы, среда тоже одноимённая ^_^А ещё С++, и скрипты PHP, SQL, JavaScript, CSS, XML, HTML/DHTML.. Тут любимой среды нет, но есть небольшая колекция компиляторов, отладчиков.. :wub:Пробовал немного Delphi, но с Unix она не дружит.. Изменено 1 декабря, 2008 пользователем Маста (смотреть историю редактирования) Цитата
Гримджо Опубликовано 30 июня, 2009 Жалоба Опубликовано 30 июня, 2009 Знаю паскаль, изучаю делфи) Цитата
dsp8195 Опубликовано 30 июня, 2009 Автор Жалоба Опубликовано 30 июня, 2009 Гримджо, weRcome! :mad: Цитата
Angrymouse Опубликовано 1 июля, 2009 Жалоба Опубликовано 1 июля, 2009 Всем привет, хочу вступить =)Немного (совсем немного) кодю на паскале (Turbo 7 и PascalABC) и делфи (Borland Delphi 7) Цитата
dsp8195 Опубликовано 2 июля, 2009 Автор Жалоба Опубликовано 2 июля, 2009 AngryMouse, добро пожаловать. :rolleyes: Цитата
niiro dzyaki Опубликовано 3 июля, 2009 Жалоба Опубликовано 3 июля, 2009 Пробовал немного Delphi, но с Unix она не дружит..Lazarus же. В последнее время, кстати, ввиду того, что программирую исключительно для себя, а пользуюсь исключительно линуксом, пользуюсь только им. Ну, за исключением мелочей на С и скриптов на bash/perl. Цитата
Mаru Опубликовано 13 ноября, 2009 Жалоба Опубликовано 13 ноября, 2009 (изменено) nevermind Изменено 17 ноября, 2009 пользователем Maru-sempai (смотреть историю редактирования) Цитата
Leoparrd Опубликовано 30 декабря, 2009 Жалоба Опубликовано 30 декабря, 2009 Меня всегда поражала подобная некомпетентность. Delphi не язык программирования, и никогда им не был. Есть Паскаль. Это язык. А всё остальное - это это просто вариации сред разработки. Delphi - это визуальная среда разработки. Её свободный клон - Лазарус. являеещейся визуальной средой FreePascal. Тurbo Pascal - это древняя среда разработки....Но Паскаль всегда остаётся Паскалем... Ну и конечно-же каждая фирма выпускающая эти продукты вводит свои фишки и расширения.... Ну а Кайликс - это среда для Линукс. Надо же и там программы на Паскале писать...А куда же отнести библиотеку KOL? Она работает и под Delphi И в других средах... В общем да... У меня есть Delphi 7-ая... Работаю в основном c KOL. VCL использую очень редко...И зачем гнатся за другими версиями? Ничего хорошего в них нет, кроме одной фишки в 2009-ой...Пока не будет поддержки 64-бит, и смотреть на новые версии не стоит...В принипе для КOL и тройки за глаза и за уши... PS Да. Delphi это не язык, а среда разработки. Кто хочет, возится с компанентами. Кто хочет, пишет просто код... И включает Delphi три языка. Паскаль Си++ и Джаву. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.