понедельник, 15 декабря 2014 г.

Укрощение автопрокрутки

Люблю я Delphi. И нравятся мне в ней такие фичи, как: Ctrl+Shift+Enter (Find Local References), Ctrl+Shift+E (Refactor \ Rename), и многие другие. Вот окошки озвученных фич у меня расположены как-то так:
image
Мне так удобнее – слева от редактора кода. А когда результаты поиска большие (или список для рефакторинга большой) – то на экране так больше помещается. Есть один минус – при клике в строчку, которая не помещается на экране по ширине – происходит автоматическая прокрутка по горизонтали (на картинке выше такая строчка выделена подчёркиванием). Т.е. дерево уезжает влево и родительские узлы прячутся за прокруткой – меня это сильно отвлекает и раздражает.
Не секрет, что эти деревья реализованы на VirtualTreeView-компоненте, поэтому такое “лечится” в одно действие:
  VTV.TreeOptions.AutoOptions := VTV.TreeOptions.AutoOptions + [toDisableAutoscrollOnFocus];
Добавляем в пакет, устанавливаем – и готово!
Исходники доступны по ссылке.

воскресенье, 16 ноября 2014 г.

Общее оформление файла

Эта заметка является продолжением к заметкам Стиль оформления кода. Вместо вступления, Настройки окружения и Регистр букв.

(Я планировал немного другой порядок публикаций, но отсутствие времени (ну т.е. лень) не даёт мне возможности навести порядок в некоторых промежуточных моментах.)

пятница, 31 октября 2014 г.

Настройки окружения

Эта заметка является продолжением к предыдущей.

Программное окружение, в котором работает программист, а точнее его настройки – сугубо индивидуальная вещь. Но есть несколько моментов, которые прямо или косвенно влияют на результат. Ниже приведены рекомендации, которые будут частью будущего документа; на них будут ссылаться другие разделы документа.

четверг, 23 октября 2014 г.

Стиль оформления кода. Вместо вступления

Читая чужой код, или даже свой собственный (спустя неделю-месяц-год), наверняка каждый хоть раз да испытывал это ощущение “вырви глаз”. Ощущение, когда не покидает мысль: “да это проще переписать заново, чем разбираться в этом”. Речь конечно идёт о стиле оформления кода.

понедельник, 22 сентября 2014 г.

Переход с Delphi 2010 на Delphi XE7

Чуть больше года назад я писал об успешном переходе с Delphi 7 на Delphi 2010 приложений в нашей компании (Вот и мы перешли на Юникод).

В этой заметке кратенько опишу об особенностях перехода с Delphi 2010 на Delphi XE7.

пятница, 19 сентября 2014 г.

Про OCIBreak и принудительное прерывание обращения к БД

Я как-то уже не раз писал о том, что мы не используем стандартные компоненты доступа к БД. Почти всё самописное. И работаем мы с Oracle.

Недавно я, наконец-таки, сделал “фишку”, без которой вполне можно жить, но с ней приятнее.

Представьте, что у вас есть запрос к БД, который выполняется длительное время. Ну, например, пользователь указал слишком мягкие критерии для фильтрации данных. Или индекса в БД нет. Или запрос изначально “кривой”. Или всё вместе взятое… Для прерывания выполнения текущего обращения к серверу в OCI есть стандартная функция – OCIBreak.

среда, 17 сентября 2014 г.

Коррекция шрифта в Object Inspector’е

Пробую Delphi XE7. Пока нравится. Поставил GExperts – очень уж я привык к сочетаниям Ctrl+Alt+Down и Ctrl+Alt+Up – переход к следующему/предыдущему объявлению идентификатора. CnPackWizards пока не вышел, но и без него вполне можно жить.
И тут вдруг бросилось в глаза, что у Object Inspector’а шрифт не такой, как везде… (везде – Tahoma 8, а тут – Segoe UI 9)

воскресенье, 14 сентября 2014 г.

Helper для TMessage

В предыдущей заметке я упомянул о хелпере для отладки сообщений Windows. Эта заметка будет предельно краткой: ссылки на исходники и скриншот демки.

пятница, 12 сентября 2014 г.

Используем макросы в IDE-редакторе Delphi

Занимаясь отладкой процедур, связанных с обработкой сообщений, постоянно приходится делать сопоставление между кодом сообщения и его строковым наименованием. Ну, к примеру, "прилетает" код 6 - это WM_ACTIVATE. Или сложнее: код 274 (0x0112) = WM_SYSCOMMAND.
Мне это порядком надоело - решил сделать Helper для TMessage (попутно и для TMsg). Ну и в планах попробовать сделать Debugger Visualizer.

Однако о самом хелпере я постараюсь написать в следующий раз. В этой заметке хочу описать, как можно использовать кнопочки Record Macro и Playback Macro, которые находятся в левом нижнем углу строки состояния редактора кода.

понедельник, 4 августа 2014 г.

Простой текстовый итератор. Пример использования record в Delphi

Задача: осуществить перебор строковых значений в исходной строке, разделённых символом-разделителем, с учётом символа-кавычки.
Решение:

пятница, 28 февраля 2014 г.

VCL: Show vs Visible

У котнролов в VCL есть свойство Visible, которое как называется, за то и отвечает. Если Visible = False, то контрол скрыт и пользователь его не увидит. Если Visible = True, то есть вероятность, что пользователь его увидит.

А есть ещё два метода – Hide и Show, которые взаимодействуют со свойством Visible.

А теперь вопрос: как же правильно скрывать/отображать контрол?

На самом деле вопрос с небольшим подвохом, на него ответить однозначно нельзя, но… давайте по порядку

среда, 12 февраля 2014 г.

Вопросик про Show, Hide и Visible

Бывает, знаете ли, полезно скрывать часть информации от пользователя, если она ему в данный момент не нужна. Для этого у контролов в VCL есть свойство Visible, и есть ещё два метода – Show и Hide. Эта троица призвана управлять видимостью контролов на форме.
А вопрос такой. Как лучше писать:
LabelSomeInfo.Visible := True;
или
LabelSomeInfo.Show;
?
Как пишете Вы? Почему?

 

Ответ в следующей заметке.

воскресенье, 19 января 2014 г.

Tap-Tap on Google Play

Ура! Конкурс завершён, поздравляю победителей с победой!

Обещанный нехус 7 в оригинальной футболке приехал прямо ко мне домой курьерской доставкой. Достойный приз требует достойного завершения, а именно – размещения конкурсной программы в Google Play.

Ниже я опишу, что для этого мне потребовалось сделать.

.

.