Страница: 1 |
Страница: 1 |
Вопрос: выделить заданную область лэйбла другим цветом
Добавлено: 15.10.08 01:22
Автор вопроса: busha
Как выделить заданную область лэйбла другим цветом?
Например 2-3 символа слева
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 15.10.08 02:50
Для этого надо забить на лейбл как минимум Он тут вообще ни к чему... Тут надо рисовать на устройстве, ИМХО.
Номер ответа: 2
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #2
Добавлено: 15.10.08 08:22
Т.е. сабклассируем окошко формы (или контейнера внутри формы) и отрисовываем поверхность TextOut или DrawText. А сам лейбл нам тут не пригодится, т.к. это неоконный контрол.
Или есть более тупой способ: для каждой надписи создать массив контролов-лейблов одинакового размера и находящихся в одном и том же месте. Лейблы сделать с прозрачным фоном. Цвет лейблов сделать разный, строку надо разбивать на куски и учитывать z-index для того, чтобы знать, какой лейбл выше или ниже другого. Нижний лейбл показывает всю строку целиком, скажем синего цвета. Верхний лейбл показывает первые несколько символов, допустим красным. Примерно так. Выглядит странновато, но новичкам этот подходж освоить будет проще.
Номер ответа: 3
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #3
Добавлено: 15.10.08 21:28
Ну а почему бы не так:
1 Создаем переменную типа Имейдж. (размер картинки равен размеру лейбла)
2 заливаем на картинке прямоугольник с размерами и положением, как нам надо.
3 Указываем, что Лейбл.БекграундИмейдж=наш Имейдж-переменная.
Все это было бы неплохо поместить в событие формы Paint, тогда если форма была свернута или перекрыта другой, наша отрисовка никуда не пропадет.
Тут только такой момент: выделяем определенным цветом не посимвольно, а точечно (например область шириной 15 может перекрыть не 3 а 3,2 символа).
Номер ответа: 4
Автор ответа:
busha
Вопросов: 22
Ответов: 18
Профиль | | #4
Добавлено: 15.10.08 22:28
Спасибо, мне нужно выделять либо "1." либо "10." т.е. номера стоящие перед самим текстом
Просто можно вычислить число знаков до точки, а там с помощью If ... Then ... можно
указать ширину Image
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 16.10.08 09:02
Ты знаешь, я бы на твоем месте и в данном случае не придумывал бы ничего сверхсложного, а тупо бы создал два массива контролов - лейблов: один для номеров, а другой для текста. А всего-то. Заполнить эти массивы можно динамически при создании формы и, соответственно их позиционировать на форме в цикле. Или же, если текст не меняется, то просто сделать это в режиме конструктора и все.
Номер ответа: 6
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #6
Добавлено: 16.10.08 19:42
+1