|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.02.2011, 01:07 | #1 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
свой текстовый компонент
хочу попробовать сделать компонент для работы с текстом.
с возможностью показывать текст без фона (прозрачный), а так же, разумеется, выделения и форматирования. чтоб можно было указать с какого по какой символы текст выделен, с какого по какой символы текст красный или синий, ну и все прочие параметры - шрифт, размер и т.д. в практическом плане мне до создания компонентов еще копать и копать, но меня пока волнует теоретическая сторона вопроса, а именно: как работают TLabel, TMemo и прочие текстовые компоненты? каким макаром в них появляются символы, выделение и курсор? как определяется длина строки (визуальная) для переноса? я наслышан про всякие там canvas, и в принципе представляю как можно это реализовать, но(!) меня мучает вопрос - насколько это рационально, и вообще адекватно ли? Вобщем... допустим наш компонент получает фокус, и теперь в нем должны появляться символы нажатых кнопок. цвет текста синий. нажата кнопка "n" и shift, т.е. в поле ввода дожна появиться большая синяя буква "N" (ну в общем на основании нажатых кнопок и текущего языка, вычислить какой из 256 символов должен появиться) хорошо, выяснили что это "N", рисуем его на canvas в координате 0 (по х) получаем длину этой буквы - length = d и следующий символ рисуем (нужным цветом) в координате 0 + d + расстояние между символами (которое также указывается) если какие-то символы выделены, то на их фоне сначала прямоугольник нужного цвета, а потом сами символы... мигающий курсор, видимо берется из текущей темы виндовс... ----------------------------------- я прав? или предложеный вариант - неадекват полный в плане скорости, и есть что-то более эффективное? и еще вопрос, возможно фундаментальный: все стандартные компоненты делфи рисуются на canvas? и эти дурацкие серые кнопочки тоже, да? p.s. очень прошу не швыряться в меня ссылками на "готовые" компоненты, ибо все они так или иначе не будут подходить для моих целей. |
27.02.2011, 01:15 | #2 | |
DelphiProger
Участник клуба
Регистрация: 14.11.2010
Сообщений: 1,023
|
мне самому етот компонент оч интересен,
я выходил из ситуации 2 способами, или ето лабел, которому можно приделать все кроме Цитата:
второи вариант ето прозрачныи едит, о котором как минимум 3 темы с большим количеством постов, и только 1 минус, в некоторых ситуациях получаеца так что после выделения текста, остаеца оттенок до тех пор пока не начнеш редактировать текст
VirusN13
|
|
27.02.2011, 01:24 | #3 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
про курсор - чисто теоретические представления...
понятия не имею, как это делается. "остаеца оттенок до тех пор пока не начнеш редактировать текст " вот именно поэтому меня и не интересует три темы с большим кол-вом постов , а интересует как сделать свой компонент, который будет работать как мне (да и не только мне) надо. надеюсь модераторы не закроют тему, мол типа есть уже такие же... нету таких же, ребята, нету... да, да, да, почитал я темы про прозрачный edit... но моя тема все-таки не про edit, а про создание нового компонента ------------------------------- 40 человек шарахнулись от моей темы = )) неужели все так страшно? ну да ладно, не дождавшись ответа, начинаю делать описанным способом.. буду рисовать текст на канвасе лабела, ибо из того что я пробовал - это единственный компонент, адекватно поддерживающий прозрачность. кстати, я заметил, что курсор в текстовых полях не является универсальным, т.е. не надо ниоткуда ничего выцеплять. можно просто рисовать любую палку. кстати, заметил что у TPanel нету канваса, хотя везде кричат что она есть... Последний раз редактировалось xrob; 27.02.2011 в 20:54. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi. Компонент-предок, компонент-родитель | amico | Помощь студентам | 1 | 23.09.2015 21:20 |
От какого класса унаследовать свой компонент? | spamer | Общие вопросы Delphi | 9 | 19.02.2010 22:24 |
Как добавить свой компонент в палитру Делфи? | Utkin | Софт | 20 | 04.02.2010 14:25 |
Как создать свой компонент? | Д'якон | Компоненты Delphi | 1 | 21.05.2008 16:37 |
Текстовый файл в текстовый массив | Kimimaru | Общие вопросы C/C++ | 1 | 02.12.2007 11:55 |