Delphi. Уменьшение изображения. Обобщение и нюансы

Я уже писал об уменьшении изображения.  Здесь про true уменьшение изображений. То есть прямо, чтобы окрыл файл в проводнике, а оно там стало меньше)) Простой способ уменьшения изображения для UniGUI Как уменьшить много картинок и сохранить их на диске? По сути, у меня всего 2 способа, которые я для себя открыл и пытался использовать. Но сегодня я узнал об их нюансах. Способ №1 – через GDI+ (для idHTTP сервера или основного потока) Нюанс в том, […]

Delphi. Читаем ориентацию из Exif для Jpg файлов и ориентируем правильно

Каждый программист встречается с “Battle”. Иногда сидишь сутками, решая проблему и как прекрасен тот момент, когда понимаешь, как это можно решить. Столкнулся с тем, что если загрузить методом idHTTP.Get jpg файл , у которого в exif данных указана ориентация, скажем “Rotate 90°”, то эта ориентация слетает, и это никак не вписывалось в мои планы. Хотелось нормальной ориентации) Помучившись какое-то время с этим вопросом, я понял следующее. 1. Нужно научиться читать exif информацию 2. Нужно научиться […]

Delphi. TRichView. Обходим глюк с выравниванием таблиц при загрузке HTML при помощи TrvHTMLImporter

Всем привет, давненько ничего не писал в блог. Итак, столкнулся с таким глюком. В чем суть? При загрузке html контента методом RvHtmlImporter1.LoadHtml(s) выравнивание таблиц слетает. Если, скажем, она была выравнена по центру, то она выравнивалась по левому краю. Просидел с этим 2 дня, так как такой вариант меня не устраивал. Решение Использовать компоненты TRVHTMLViewImporter THTMLViewer   У RVHTMLViewImporter1 прописать свойство HTMLViewer и загрузить контент, например таким образом…

 

MySQL. Вставка с инкрементом

Если одно из полей должно возрастать при определенных условиях, можно при вставке выполнить такие инструкции

 

Delphi. Как сделать Ribbon меню на DevExpress?

Делая меню для одной из своих программ, я экспериментировал со встроенными Риббонами из стандартной библиотеки Delphi. Но, скажу честно, отказался от этой идеи. Местами были глюки. Всё настроил, но оно слетает. Пожелание разработчикам стандартных Риббонов Delphi – довести до ума. Остановился на риббонах от DevExpress. Скажу честно, мне эта библиотека очень понравилась, но в неё нужно “вьезжать” какое-то время. Чтоб это время сэкономить тем, кто хочет сделать себе красивое меню для VCL программы, предлагаю данный […]

MySQL. Добавляем хранимые процедуры и функции ( “рутину” ) в модель и физическую базу данных

Добрый день, сегодня простая и интересная тема.  Добавление хранимых процедур и функций, или как их называют в документации MySQL “рутин” в модель и физическую базу данных. Добавление хранимой функции в физическую базу данных Здесь всё просто. Открываем WorkBench Добавляем хранимую функцию. Скажем это будет проверка логина, пароля и роли при входе.

Функция проверяет логин, пароль и роль, если они одновременно подходят, значит возвращает единицу. Если нет, или таких записей больше чем 1, то возвращает […]

Delphi.MySQL.Мои компоненты.TPSDBTreeView

Вот что у нас получится.  Дерево работает над базой MySQL. В примере 2 дерева, работающие над одной таблицей базы. 3-й ряд кнопок сам определяет какое дерево активно. Исходники прилагаю. Типовая таблица для дерева. Это минимальный набор полей. Всё остальное можно добавлять по необходимости. При этом копирование-вставка записей будут происходить корректно.

Delphi. MySQL. InsertSelect всех полей для реализации Copy Paste

Делал для своего компонента TPSDBTreeView функцию “вырезать, копировать, вставить” на основе InsertSelect. Проблема в том, что если пытаться копировать все поля, скажем так

то получим

Что же делать в таком случае? Нашёл такой выход Вот пример из проекта

  При вставке в Delphi TFDQuery

Что происходит в коде? Мы просто составляем запрос на уровне базы, выкидывая ненужные колонки, в нашем случае id и исполняем его там. И далее обращаться, скажем так […]

Delphi. Архитектура приложения. Видимость объектов

Увидел на DelphiMaster, решил сохранить себе Вот несколько принципов, соблюдая которые навсегда избавишься от проблем “видимости”: 1. Объекты, переменные, методы ОБЩЕГО ПОЛЬЗОВАНИЯ всегда размещать в датамодуле, причем сам код датамодуля не должен “ведать” ни о каких переменных извне – все, что ему надо, должно передаваться в параметрах. Ссылку на датамодуль располагать в инфтерфейсной части всех юнитов – “клиентов”, там, где перечисляются VCL-ные юниты. Датамодуль так же, как и гл.формы, должен быть включен в список автосоздаваемых. […]

Delphi. Передаем ссылку на Owner через (Self.Owner as TOwnerType) а не через UnitVar

Проблема Разрабатывал компонент. Ссылку на Owner всегда передавал в inherited конструкторе так

Компонент визуальный. Разместил несколько его экземпляров на форме, стал тестировать. Начались глюки. Скажем, если заполняю какое-то свойство у SomeComponentName1.SomeProperty, то оно заполняется у SomeComponentName2.SomeProperty, а у первого не заполняется. В общем стал копать и похоже SomeUnitVar работает как глобальная переменная, от которых все бегут. Решение Обращаться в локальных методах к Owner через (Self.Owner as TOwnerType), например так…

Такой подход дал положительный результат. Сделать […]

« Older posts