Я реализовал саморастущий TMemo как хороший пример LiveBindings (один из немногих полезных примеров, которые я мог придумать для LiveBindings в VCL).
Цитата из моего руководства по курсу Delphi XE2 Development Essentials:
«Чтобы построить этот пример, поместите компонент TMemo в форму VCL, откройте свойство LiveBindings и выберите параметр «Новый LiveBinding». Выберите вариант TBindExpression. Откройте BindExpressionMemo11 в инспекторе объектов и установите для SourceComponent значение Memo1, а для SourceExpression — Lines. Count * 22. Чтобы получить лучший результат во время выполнения, установите для SourceExpression более точное выражение.
Font.Size - 4 + (Lines.Count + 1) * -1 * (Font.Height - 3)
Наконец, в обработчике события OnChange TMemo напишите одну строку кода:
BindingsList1.Notify(Отправитель, '');
Вот и все. Скомпилируйте и запустите, чтобы увидеть растущую памятку в действии.
[снимок экрана]
Первоначально элемент управления TMemo будет иметь высоту в две строки (строка с содержимым и следующая строка), и всякий раз, когда мы нажимаем клавишу ввода или перенос слов переводит нас на следующую строку, элемент управления TMemo будет увеличиваться в высоту (фактически, уменьшаясь, поэтому не забудьте оставить достаточно места в форме для расширения TMemo)».
Гротьес, Боб Сварт
person
Bob Swart
schedule
04.11.2011