Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2010, 11:57   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Алгоритм создания TEdit.

В общем, т.к. завершил создание кнопок по одной команде, их обработку и прочее, решил заняться следующей важной элементарной частицей IT мира - полем TEdit (для начала - одностроковым). Как-то смутно вырисовывается алгоритм его создания (имею в виду не часть вывода, а внутреннюю структуру). Это осложняется тем, что я хочу сделать TRichEdit - поддержку разных цветов и шрифтов, а далее и вставку изображений с гиперссылками.

Буду рад, если натолкнете на мысль.

Пока план, имеющийся в наличии такой:

1) Рисуется текстура "фона" :
- Либо стандартная:
- Либо любая пользовательская:
2) В строке типа String хранится вся информация о содержимом - текст + спецразметка для вставки дополнительных фич типа ссылок, другого шрифта и пр.
3) Начиная с первого символа парсится строка и на спецтекстуре (промежуточной, размером с текстуру из пункта 1.) рисуется текст (координаты первого символа зависят от текущего активного символа в поле и могут быть отрицательными) и фичи.
4) Промежуточная рисуется поверх фона.

В чем минусы подхода и что изменить?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 05.12.2010, 12:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В строке типа String хранится вся информация о содержимом - текст + спецразметка для вставки дополнительных фич типа ссылок, другого шрифта и пр.
Рекомендую спецразметку по стандартам НТМL. т.е. принятые в интернете теги форматирования. Все равно ты хочешь это сделать, так почему не взять проверенный временем стандарт вместо выдумывания своего.
Насчет минусов... постарайся сделать парсинг такого один раз, а не каждый раз при отрисовке.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.12.2010, 12:28   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Наверное потому, что это будет адский труд, портировать все спецификации HTML. Думаю, что после такого извращения dll разрастется килобайт на 300.
Или Вы имеете в виду портировать только нужные?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 05.12.2010, 12:32   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Вы надеюсь понимаете что смешали две совсем разные части HTML/или какая то другая разметка и сам контрол Edit/TextBox/TextField ?

Создаете иерархию. Дочерний элемент содержит общие поля, от него наследуются классы картинка, ссылка, текст и другие элементы. Сам котрол имеет список дочернего элемента. Таким образом у вас хранится в одном списке вся структура совершенно различных элементов.

Логику разметки на текстуре, можно взять как уже сказали, от HTML. Но делать структуру хранения на основе String, само убийство, о скорости и подвижности (перемещения, удаления, редактирования) можно сразу забыть.
BOBAH13 вне форума Ответить с цитированием
Старый 05.12.2010, 12:41   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Но делать структуру хранения на основе String, само убийство
С этим согласен, план был пятиминутный, непродуманный.
Цитата:
Создаете иерархию.
Т.к. классов у меня не предвидится, рекомендуете использовать динмассивы с индексами позиции?
Изображения
Тип файла: png classes.png (57.7 Кб, 124 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 05.12.2010 в 12:47.
Alex Cones вне форума Ответить с цитированием
Старый 05.12.2010, 12:45   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
С этим согласен, план был пятиминутный, непродуманный.
Т.к. классов у меня не предвидится, рекомендуете использовать динмассивы с индексами позиции?
ну тут легко заменить, к примеру
Код:
struct a { int a; int b; int c; ... }; struct aList { struct a data; structa *next; }
короче говоря, лучше не надо массивы использовать, используйте связные списки, каждый элемент содержит данные о элементе, и ссылки/адреса на предыдущий и следующий элемент. Соответственно, если предыдущий = null, то это первый элемент, если следующий = null, то это последний элемент. Так же глобально, или где у вас там в коде, хранить ссылку на первый элемент. Так у вас образуется низкоуровневый список.
BOBAH13 вне форума Ответить с цитированием
Старый 05.12.2010, 12:52   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А сами элементы списка где хранить?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 05.12.2010, 12:58   #8
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Стоп, как это без классов?
По моему ООП чуть ли не наиболее удачно подходит для таких штук.
Levsha100 вне форума Ответить с цитированием
Старый 05.12.2010, 12:59   #9
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Стоп, как это без классов?
А вот так. Они сильно по размеру бьют.

Сравните фреймворк размером 26 кб или 300
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 05.12.2010, 13:33   #10
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Разве 200 кило при текущем уровне техники- много?
Levsha100 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм создания генеалогического древа NSV Общие вопросы Delphi 22 08.06.2018 04:58
алгоритм создания частотного словаря (двумерные массивы) Blueyeska Помощь студентам 1 09.06.2010 17:31
Алгоритм создания дерева Delphi VadEr Помощь студентам 5 03.11.2009 08:45
TEdit green Компоненты Delphi 17 16.03.2008 07:13