|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.04.2009, 00:11 | #1 |
Регистрация: 09.04.2009
Сообщений: 9
|
Кнопка с вертикальной надписью
Здраствуйте!
Подскажите пожалуйста как создать компонент кнопку с вертикальной надписью! Надо ли использовать Canvas и как получить Hadle у TButton!? Или надо наследовать у TBitBut?! Надо ли делать это через редактор свойств и как это сделать?!) Код процедур или примерный код проги очень бы помог, спасибо! |
10.04.2009, 08:39 | #2 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Вывод вертикальной надписи на кнопке (пример отображает надпись в левой части кнопки снизу-вверх, поворот против часовой стрелки на 90 гр.)
Код:
Высоту кнопки надо устанавливать такой, чтобы надпись поместилась. Код выполнен и проверен на D7. Последний раз редактировалось Скандербег; 10.04.2009 в 09:08. Причина: Уточнение среды |
11.04.2009, 00:41 | #3 |
Регистрация: 09.04.2009
Сообщений: 9
|
Оуо! Спасибо!
А если создавать Компонент, то надо писать в конструкторе класса, от наследуемого TBitBut?! Или отдельную процедуру?! Попробовал запустить просто так, без создания компонента, просто на форме, пишет системную виндусовую ошибку Project Project1.exe raised exeption class EReadError with message "Error reading Form1.OnCreate: Invalid Property value" ?! Что за инвалидное значение?! |
11.04.2009, 09:54 | #4 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
А событию OnCreate формы присвоена процедура FormCreate?
Может быть форма (Form1) у вас называется не так как в приведенной процедуре. Компонент лучше создавать наследником от класс TBitBtn, т.к. он имеет все свойства кнопки, что, собственно, и требуется и имеет свойство Glyph, на котором можно нарисовать что-то свое. Если интерес к такой кнопке не академический, а прикладной, есть смысл поискать уже готовый компонент, а такие есть. Хотя бы на torry.net, т.к. чтобы сделать такую кнопку нужно хорошо знать множество деталей Delphi. Все не так просто. А мой пример - это лишь демонстрация возможностей. ---------- Несколько переработанный код отображающий вертикальную надпись на кнопке, который можно вставить в событие OnClick кнопки на форме (не той с которой экспериментируем). Код:
Последний раз редактировалось Скандербег; 11.04.2009 в 12:09. Причина: Добавлена отредактированная процедура |
11.04.2009, 23:27 | #5 |
Регистрация: 09.04.2009
Сообщений: 9
|
Класс! Заработало)))
А как сделать оцентровку надписи по ширине и длине кнопки?! И что бы выводилась в середине, такое возможно?! |
11.04.2009, 23:48 | #6 |
Регистрация: 09.04.2009
Сообщений: 9
|
и если не на 90 градусов а на 270?!
меняя LogFont.lfEscapement := 90 * 10; на LogFont.lfEscapement := 270 * 10; он мне белую кнопку рисует! и после 2 нажатия на кнопку она белая становиться, можно что бы она надпись сохраняла?! |
12.04.2009, 23:25 | #7 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Центрирование надписи на кнопке. Выравнивание надписи действительно только для угла 270 гр., для надписи повернутой на другой угол необходимо делать и другой расчет.
Код:
"Белый прямоугольник": для эксперимента можно кинуть на форму XPManifest (закладка Win32 в палитре компонентов). У меня кнопка белой не становиться сколько бы не нажимать на нее. Класс TBitBtn только дельфийская обертка стандартной кнопки Windows. Например, у нее нет даже свойства Color. Цвет фона кнопки и надписи устанавливает Windows и управлять этим сложно. Может проще сделать свою кнопку, где все под контролем. Или поискать в Сети, где туча библиотек с какими угодно кнопками. |
12.04.2009, 23:47 | #8 |
Регистрация: 09.04.2009
Сообщений: 9
|
С TextOut-ом понял!
XPManifest на форму бросил, св-в у него маловато,то есть вообще нет, ничего не менял в нем, но все также и остается, при 2-ом нажатии кнопка становится белой полностью( |
13.04.2009, 00:22 | #9 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Проект надо посмотреть. Упакуйте файлы проекта: .dpr, .res, .dfm и .pas и отправьте мне на мыло или сюда вложением. Какая версия Delphi?
|
13.04.2009, 00:42 | #10 |
Регистрация: 09.04.2009
Сообщений: 9
|
Delphi 7
высылаю код |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отобразить левую половину матрицы на правую зеркально симметрично относительно вертикальной оси | durachok) | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 26.12.2008 16:03 |
Отобразить левую половину матрицы на правую зеркально симметрично относительно вертикальной оси. Заполнит | durachok) | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 26.12.2008 16:03 |
Шифр вертикальной перестановки | funny | Общие вопросы C/C++ | 0 | 27.09.2008 18:59 |
Кнопка пуск | Черничный | Общие вопросы Delphi | 2 | 07.08.2008 08:30 |
Ограничение вертикальной прокрутки | valerij | Microsoft Office Excel | 11 | 18.06.2008 18:00 |