Архив рубрики: WinAPI

Delphi. WinAPI. Получение дескриптора безопасности файла

Получение дескриптора безопасности файла

По мотивам обсуждения на форуме

Способ №1

Способ №2 – дает информацию не только о DACL_SECURITY_INFORMATION, но и о SID владельца объекта и группы Читать далее

Delphi.WinAPI. Доступен ли файл для чтения?

Способ № 1 (Рабочий, почти всегда)

 

Способ №2 (Не рабочий, если доступ к файлу закрыт)

Данная функция НЕ РАБОТАЕТ, так как нужно проверять атрибуты безопасности файла, насколько я понимаю.

Простая проверка возможности прочитать файл. //True – файл открыт для чтения. Иначе – False.

 

Delphi. Scrollbox. MousewheelUp and MousewheelDown. Делаем прокрутку разными способами

TScrollBox,

Если мы говорим о классе TScrollBox, то наиболее простой и эффективный код – обработать MousewheelUp и MouseWheelDown у компонента ScrollBox, но этого недостаточно, нужно ещё присвоить SetFocus, компоненту ScrollBox, тогда это удовольствие будет работать.

Вот простой пример обработки данных событий

При разработке компонента со ScrollBox

Я столкнулся c тем, что где попало SetFocus не поставишь. Это какая-то внутренняя кухня VCL. Control has no ParentWindow. У меня TScrollBox был на фрэйме, который я динамически добавлял. Поэтому приходилось выкручиваться. В итоге SetFocus я поставил в одну из процедур, которая вызывается извне, после создания компонента.

TForm with TForm.VertScrollBar.Visible:=true

Стандартный код, который можно встретить на многих форумах вот такой…

Но это в случае, если у нас scrollbox находится на форме. У меня же, например, он находился на фрэйме и там такого добра не было. Поэтому пришлось углубляться в WinAPI и смотреть как это всё работает изнутри. Получились следующие варианты. Возможно не идеальные, но начало положено.

TScrollBox, again

Вариант 1

Кладем на форму TApplicationEvents и в событии OnMessage…

Есть ещё и 2 вариант – через написание процедуры, при котором программа у меня работала более стабильно – не было “подергиваний” при обработке сообщений.

Вариант 2

Читать далее