Купить devExpress
Если вы не любите читать сообщения, которые время от времени выдает вам IDE, то, возможно, данный пост сэкономит вам некоторое количество времени. Речь пойдет о скинах DevExpress. В меню Delphi выберите пункт Project | Modify Skin Options. на экране появится следующий диалог.
По умолчанию, включена поддержка всех скинов. Теперь, предположим, что вы, по каким-то причинам, не хотите использовать все скины. Все же бинарник разрастается, при их использовании. Здесь вы их можете отключить. Но, прежде чем это сделать внимательно прочтите Note.
В секции Uses модуля каждой формы объявления модулей с уже ненужными скинами останутся, и их нужно вычистить руками. Выглядят описания модулей так:
dxSkinOffice2010Blue, dxSkinOffice2010Green….
Что же произойдет, если этого не сделать? Во-первых, размер бинарника не уменьшится. Далее… Вполне вероятно, что в IDE ваш проект будет вести себя вполне пристойно. Чудеса начнутся как только вы попытаетесь запустить приложение вне среды разработки. Так у меня проект, упакованный с помощью ASPack, вообще не стартовал. Я долго не мог разобраться в чем причина, и только запустив редактор ресурсов и обнаружив в нем все скины из набора DevExpress Skin Library, догадался в чем дело.
Так что, будьте внимательны с объявлениями скинов.
Другие статьи серии:
DevExpress. TIPS & TRICKS #0
DevExpress. TIPS & TRICKS #1
DevExpress. TIPS & TRICKS #3
DevExpress. TIPS & TRICKS #4
DevExpress. TIPS & TRICKS #5
DevExpress. TIPS & TRICKS #5.5
DevExpress. TIPS & TRICKS #6
DevExpress. TIPS & TRICKS #7
В предыдущих постах серии я упоминал о том, что разработка новой версии приложения велась в Delphi 2007. Теперь настала очередь перевода проекта на Delphi с поддержкой юникод. В принципе об этой процедуре написано довольно много. Поэтому я остановлюсь только на тех моментах, которые вызвали у меня затруднения. Как обычно в формате “заметок на полях”.
Прежде всего, ASProtect. Я уже писал о том, как правильно осуществлять вызов функций ASProtect API. Это не сложно:
CheckKeyAndDecrypt( PChar(ansistring(eCode.Text)), PChar(ansistring(eName.Text)), True )
Однако, описание функции CheckKeyAndDecrypt выглядит следующим образом:
function CheckKeyAndDecrypt ( Key, Name : PChar; SaveKey: Boolean ): Boolean; external aspr_ide name ‘CheckKeyAndDecrypt';
Проблема же может возникнуть при вызове функций подобных этой:
function GetRegistrationInformation ( ModeID : Byte; var Key : PChar; var Name : PChar ): Boolean; external aspr_ide name ‘GetRegistrationInformation';
Параметры Key и Name – модифицируемые и передать выражение в качестве параметра уже нельзя.
Что делать в этом случае? Да просто изменить заголовки в файле aspr_api.pas.
function GetRegistrationInformation ( ModeID : Byte; var Key : PANSIChar; var Name : PANSIChar ): Boolean; external aspr_ide name ‘GetRegistrationInformation';
Вызов остается предельно простым:
var
pchKey, pchName: PANSIChar;
…
GetRegistrationInformation(0, pchKey, pchName);
Собственно, данный пример наглядно показывает, как работать с функциями, реализованными в dll.
Я покупал ASProtect SKE в 2006-м году и на последние версии продукта моя лицензия не распространяется. Однако, как выяснилось, самый простой вариант – скачать последнюю версию протектора и взять оттуда aspr_api.pas. Все исправления в заголовки там внесены, и с предыдущими версиями продукта работает прекрасно.Там же можно посмотреть и обновленные примеры использования.
Кроме этого, я обнаружил пару проблем с cxGrid (сохранение и восстановление заголовков полей). Но, об этом я напишу по факту решения данной проблемы.
Другие статьи серии:
Редизайн интерфейса приложения. #0
Редизайн интерфейса приложения. #1
Редизайн интерфейса приложения. #2
Редизайн интерфейса приложения. #4
Редизайн интерфейса приложения. #5
Редизайн интерфейса приложения. #6
Редизайн интерфейса приложения. #7
Редизайн интерфейса приложения. #8
Вышел Update 1 для Delphi XE и C++Builder XE. Три способа обновления:
- с помощью автоматического механизма обновления;
- ручная проверка обновления;
- скачивание обновления со страницы загрузок для зарегистрированных пользователей.
Подробнее в блоге Andreano Lanusse.
Дополнительная информация:
Пока я заканчиваю опыты с DataSnap (а там не совсем все просто) , развлеку вас постом о том, какой софт я использую в работе.
Понятное дело, что речь пойдет не обо всем, “что шевелится”, а о лицензионных продуктах. Поскольку в наших условиях можно взять отлом практически на любой софт, то и смысла в таком посте будет мало. Этическую сторону вопроса “покупать или воровать?” я оставлю в стороне.
IDE
Delphi 2007 Architect
На сегодня это мой основной рабочий инструмент, предоставленный работодателем. До этого я использовал Delphi 7 Architect. В настоящий момент эти продукты уже сняты с продажи. Читать далее
Рассказ о TcxGridDBTableView будет не полным, если не упомянуть о полях, а точнее, о столбцах, привязанных к полям набора данных. При подключении View к источнику данных такие столбцы создаются автоматически. В данном случае я имею ввиду объекты TcxGridDBColumn. Проще всего набором столбцов управлять в редакторе View. Но это несложно сделать и с помощью кода.
2-го июня 2010-го года компания Embarcadero Technologies выпустила новую версию Delphi для .Net – Delphi Prism 2011. Новая версия Delphi Prism является расширением Visual Studio 2010. По утверждению разработчиков, в данном продукте реализованы возможности аспектно-ориентированного программирования и параллельного программирования, которые не реализованы ни в одном другом языке программирования для .Net.
Основные нововведения (по версии Марко Кэнту): Читать далее
Фильтрация
Фильтрация TcxDBGridDBTableView позволяет отображать некоторую выборку из общего набора данных, отображаемого в гриде, заданную по некоторому условию. По умолчанию данная возможность, так же как и возможность сортировки, включена. Отключить фильтрацию можно с помощью свойства OptionsCustomize.ColumnFiltering:
cxGrid1DBTableView1.OptionsCustomize.ColumnFiltering:= False;
Собственно, конечный пользователь приложения имеет возможность задать фильтр несколькими способами: Читать далее
Думаю, что перед тем, как продолжить рассмотрение функциональных возможностей Table View будет уместным немного отвлечься и чуть подробнее рассмотреть структуру View. Как видно из диаграммы, приведенной в предыдущем посте, все Grid View наследуются от класса TcxCustomGridView. И именно в этом классе описано ключевое свойство View – DataController:
property DataController: TcxCustomDataController;
Это свойство отвечает за подключение View к источнику данных. Кроме этого, DataController реализует функции управления данными, их сортировки, фильтрации и подсчета сумм. Естественно, в каждом наследнике TcxCustomGridView свойство DataController может описываться по-разному, но это всегда будет класс-наследник TcxCustomDataController. Например, для TcxGridDBTableView свойство DataController будет иметь тип TcxGridDBDataController, который наследуется от класса TcxDBDataController, являющегося, в свою очередь, наследником TcxCustomDataController.
Читать далее
В рамках масштабной акции от компании Embarcadero с 26 апреля по 28 июня 2010 года пользователям предоставляется возможность приобрести RAD Studio по цене стандартных средств разработки!
В рамках акции, покупая Delphi 2010 или C++Builder 2010, каждый пользователь бесплатно получит программное решение RAD Studio 2010, включающее в себя Delphi, C++Builder и Delphi Prism и позволяющее значительно быстрее и качественнее создавать приложения для Windows и баз данных. Читать далее
ExpressQuantumGrid
Если бы мне пришлось придумывать название для ExpressQuantumGrid, то я бы назвал его челябинский грид, ведь он настолько крут, что зачастую руководство нужно не только разработчикам, но и конечным пользователям приложений, в которых он используется.
Сразу попытаюсь оговорить отдельные моменты. Коммерческое название продукта ExpressQuantumGrid, хотя класс в Delphi называется TcxGrid. Кроме этого грида в состав ExpressQuantumGrid Suite входят еще несколько гридов и сопутствующих им компонентов. Но пока здесь речь пойдет только о cxGrid. Я буду использовать слово “грид”, хотя его фактически не в русском языке. Но изобретать переводы как-то сетка, табличный элемент управления и т.д. я не буду. Грид, он и в Африке грид. Читать далее