Советы по Delphi. Версия 1.0.6
Шрифт:
ScrollBox
Синхронизация двух компонентов Scrollbox
Решить задачу помогут
Splitter
Конструирование Splitter
У меня есть форма с расположенными на ней компонентами TreeView и Memo. Значение свойства align обоих компонентов позволяет им занимать всю форму. Я хотел бы расположить между ними движок типа Splitter, пропорционально меняющий их размеры (один шире, другой меньше и наоборот), но к сожалению я обладаю лишь дистрибутивом Delphi2 (Splitter вошел в палитру только в Delphi3). Какой компонент мог бы сымитировать поведение Splitter и как это реализовать?
Предположим, Ваш TreeView расположен в левой, а Memo в правой части формы. Вам нужно сделать следующее:
• Установите свойство Align компонента TreeView на alLeft.
• Вырежьте (Ctrl-X) компонент TMemo из вашей формы.
• Добавьте компонент Panel и присвойте его свойству Align значение alClient.
• Внутри панели разместите другой компонент Panel.
• Установите его ширину, равной 8 пикселам, свойству Align присвойте значение alLeft.
• Скопируйте вырезанный компонент TMemo в панель Panel1 и присвойте свойству Align значение alClient.
Panel2 – движок: теперь вам необходимо добавить процедуры, приведенные ниже. Ваш код будет выглядеть приблизительно так:
Код может быть модифицирован для получения горизонтального движка – идея, надеюсь, понятна…
StatusBar
Обработчик события OwnerDraw в компоненте StatusBar
Обработчик должен выглядеть примерно так:
StringGrid
Установка атрибутов –=Только для чтения=– у столбцов компонента StringGrid
Манипулирование вышеуказанным атрибутом возможно в обработчике события OnSelectCell:
Помещение изображения в ячейку StringGrid
Возможно ли поместить изображение в одну из ячеек компонента StringGrid?
Такое позволяет обработчик события OnDrawCell. Приводим скелет кода, демонстрирующий принцип вывода изображения в ячейке компонента:
Достичь цели позволяют методы Draw и StretchDraw объекта TCanvas. В приведенном примере переменная Image1 класса TImage содержит заранее загруженное изображение.