Визуальный компонент на самом деле является классом. Но чтобы написать управление, вы должны использовать пакет. Выберите новый в меню «Файл» и создайте новый пакет. Затем нажмите кнопку «Добавить» в окне пакета, чтобы добавить компонент (блок).
Выберите новый компонент в верхней части диалогового окна всплывающего окна. Поскольку все атрибуты, методы и события управления не могут быть составлены сами по себе, вам необходимо выбрать класс предков (или «родительский класс» или «базовый класс»), а затем добавить свои собственные атрибуты, методы и события. Полем Выберите желаемый класс предков в раскрывающейся коробке после типа предка. Поскольку вы должны нарисовать картинку, написав визуальный контроль, TgraphicControl выбирается в качестве класса предков. Затем введите имя нового элемента управления (класс) в поле имени класса, которое обычно начинается с «t». Страница палитры используется для выбора названия страницы управления новым элементом управления в окне Delphi, таких как «Стандарт», которое можно взять на себя. Добавьте имя пути и файл нового файла управления в имени файла единицы и нажмите кнопку OK. Новые элементы управления добавлены. Теперь вы можете написать код для этого элемента управления.
Ниже приведен пример написания полосы прокрутки, которая может настроить изображение, чтобы проиллюстрировать, как написать визуальный контроль.
Следуйте приведенному выше методу, выберите TGraphicControl в качестве класса предков, и название нового элемента управления - tpighorizontalscroller (горизонтальная полоса прокрутки свиней). После выбора пути файла и имени файла нажмите кнопку OK, чтобы начать запись кода.
Каждый элемент управления будет создан и удален, поэтому вы должны сначала написать эти два процесса. Для каждого процесса в управлении он должен быть определен сначала, а затем записан позже. Есть три типа процессов или атрибутов, которые определены:
1. Определенное после частного использования используется внутренне для контроля, и человек, который использует контроль, не видит его;
2. То, что определено после защиты, обычно невидимо и может быть замечено только тогда, когда другие используют элемент управления в качестве класса предка для написания других элементов управления;
3. Только другие могут быть вызваны в программе после публики;
4. Определено после публикации можно увидеть в окне свойства (инспектор объектов). Поскольку процесс создания и удаления не только автоматически выполняется, когда элемент управления создается во время процесса программирования, его также можно вызвать, когда элемент управления создается динамически во время работы программы, поэтому он определяется после публики. (Этот номер последовательности указывает местоположение кода в прикрепленной исходной программе, то же самое ниже), возможно, я не знаю, что писать в этих двух процессах и как ее редактировать. Мы поговорим об этом ниже.
Давайте сначала добавим некоторые свойства к этому управлению. Мы определяем свойство MAX, чтобы установить или прочитать максимальное значение прокрутки. Поскольку атрибуты не используются непосредственно в программах, вам необходимо определить переменную, которая соответствует атрибуту, при изменении или чтении ее значения. Поскольку он используется только внутри контроля, мы определяем его после частного ⑵. (Как правило, переменные, связанные с атрибутами, начинаются с «F», таких как FMAX) После определения переменной определите атрибуты. Это свойство должно быть видно в окне инспектора объектов, поэтому определите его и опубликуйте его после ⑶. Определенный синтаксис:
Свойство <Имя свойства>: <Тип> Читать <Адаптивная переменная при чтении этого свойства> Написать <Адаптивную переменную или процесс при написании этого свойства>
Другие переменные и атрибуты также определяются аналогичным образом (например, минимальное значение min, значение тока значения и т. Д.). Ниже мы определяем несколько атрибутов и переменных, чтобы установить изображение прокрутки (поскольку переменные изображения являются особенными, я расскажу о них отдельно). Мы определяем левую кнопку (изображение левой кнопки), Leadsbuttondownpicture (нажатие на левую кнопку) и т. Д.
Каждый должен заметить, что в прикрепленной исходной программе при определении этих свойств соответствующая переменная при чтении свойств, указанных после чтения, является f ... и соответствующая переменная при написании свойств, указанных после написания, не является переменным, а что -то вроде Установить…, это пользовательский процесс. Процесс как эта функция определяется как:
Процедура <Имя процесса> (значение: <тип значения установленного свойства>)
Поскольку другие вещи должны быть сделаны при написании атрибутов этого класса, его нельзя обрабатывать только одной переменной, но следует обрабатывать с помощью процесса. Этот процесс обычно определяется после защиты. В этом классовом процессе оператор, подобный этому при ⑷, используется для назначения значений переменной типа TBITMAP, которая принята, поскольку переменные этого типа не могут быть назначены напрямую.
После определения свойств этих переменных типа TBITMAP код должен быть записан в процессе создания и уничтожения, упомянутого выше. Поскольку TBITMAP также является классом, он должен быть создан в процессе создания ⑸, и Free должен быть выпущен во время процесса уничтожения. Унаследованное утверждение, упомянутое здесь, используется для указания, что процесс унаследован от класса предков. (Это не должно быть отброшено).
Поскольку мы пишем визуальные элементы управления, мы должны рисовать изображения на элементах управления. Класс предка нашего контроля TgraphicControl, инкапсулирует объект Canvas, который мы можем использовать непосредственно для рисования изображений. Если вы не знакомы с использованием холста, лучше всего найти книгу, чтобы прочитать ее.
Следующая задача - рисовать картинки. Как рисовать картинки на управлении? В TGraphicControl есть событие краски, которое автоматически запускается, когда управление необходимо перекрасить. Теперь мы должны написать программу для этого события. Во -первых, определите объект Canvas после защиты. Поскольку он уже находится в классе предков, нет необходимости добавлять никаких объяснений. Мы будем использовать этот объект для рисования. Затем вам нужно определить процесс краски и написать код, чтобы нарисовать управление. Сначала определите процесс краски на публике. Поскольку он запускается классом предков, а не пользователем, переопределение должно быть добавлено впоследствии, в противном случае элемент управления не станет визуальным управлением, поскольку процедура краски никогда не будет вызвана. Давайте напишем код для процесса краски.
Переменные, такие как T_Height в процессе краски исходной программы, прикрепленной к этой статье, используются для сохранения размера кнопок, ползунков и т. Д. В панели прокрутки. , большинство из которых верны, я считаю, что все поймут работу холста с первого взгляда. Стоит отметить, что следующее суждение о переменной fautosize⑾
FAUTOSIZE - это логическая переменная, связанная с свойством, автозирует управление. Обратите внимание, что в коде управления атрибут не вызывается напрямую, но используется соответствующая переменная.
После того, как программа была составлена здесь, даже если я наконец посмотрел на свой новый контроль, она не может прокрутить. Теперь давайте напишем событие мыши, чтобы мы могли манипулировать им. Определение процесса события мыши очень похоже на процесс краски, за исключением того, что описания параметров должны быть добавлены позже.
События мыши делятся на Mousedown, MouseMove и MouseUp, и после определения необходимо добавить переопределение. Затем напишите его код позже. Примечание: мышь здесь - мышь ... не обычная онмуса…. Но для чего определение в ⒀? Определения событий здесь предназначены для использования пользователями, то есть при использовании этого элемента управления они будут отображаться на странице событий в инспекторе объектов.
Код для этих событий мыши также очень прост. Стоит отметить, что при вызове пользовательского события вы должны сначала использовать такое оператор в ⒁, чтобы определить, есть ли пользователь написанный код для мероприятия. Это очень важно, в противном случае в вызове произойдет ошибка.
Все заметили, что все, что называемые только сейчас, все настроены, и метод определения очень прост, что похоже на атрибут определения, но при наборе.
TnotifyEvent - это событие по умолчанию, которое определяется как:
Tnotifyevent = процедура (отправитель: tobject)
Если вы хотите определить другую форму события, вы должны сделать это: сначала напишите ее в типе, а затем
<Имя типа события> = Процедура (<Параметр>: <Тип>)
Например:
Tcustomevent = процедура (a: integer; b: string);
Затем после публичного определения:
<Имя события>: <Имя типа события>
Например:
Anevent: tcustomevent;
Прочитав их, вы должны понять всю программу. Если есть ошибка в компиляции или операции, проверьте следующие баллы:
1. Есть ли унаследованные заявления в процессе создания и уничтожения;
2. Созданы или бесплатно, созданы ли переменные типа TBITMAP типа TBITMAP;
3. Есть ли управляющее имя перед процессом, например: tpighorizontalscroller.mosemove
Как определить, входит ли мышь или оставляет контроль:
Определите следующий процесс:
Процедура MouseEnter (var msg: tmessage);
Процедура MouseLeave (var msg: tmessage);
Просто напишите код ниже!
Этот метод очень полезен для написания кнопок с тремя государствами!