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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2014, 19:25   #1
PsihoBolt
Пользователь
 
Регистрация: 03.05.2012
Сообщений: 23
Вопрос Создание и визуализация компонента

Здравствуйте, дорогие программисты.
Необходима ваши советы и наставления, а возможно и исходные коды для решения моей проблемы.

Предисловие.
Есть система, написанная мною, для работы с технической документацией и её структурой. Для понимания, структура документации представляет вид:
-Техническая документация
---Подпапка
------Документ 1
------Документ 2
---Подпапка
------Подпапка
---------Документ 3
---------Документ 4
------Подпапка
и т.д.

В целом, я думаю понятно. Чем то похоже вложенность в папках, в которых есть документация.

Фунционал большой и возникла проблема в визуазации выбора документации с помощью компонета.

Задача какая:
Необходимо создать/взять компонент, который будет похож по фунционалу на OpenDialog, но отличается тем что данные о папках/подпапках/документах храниться в БД, ибо требование заказчиков. Все бы ничего, можно было бы выгружать документацию и т.д. и использовать OpenDialog, но проблема в том, что объемы документации достигают бывает десятки гигабайт и это уж сильно всё долго и затратно. И поэтому хотелось бы компонент, визуально похож на OpenDialog, но на вход поступали данные, которые из БД.
Сразу скажу, использование различных компонентов типа TreeList и другие деревоотображающие не очень хорошо, ибо слишком большая вложенность и отображение получается слишком громостким. А хочется красиво и удобно.

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

И так основные вопросы:
1) Что использовать в основе совего компонента TCustomControl или что-то конкретнее?
2) Как реализовавывать рисование по сетке или как сделать так, чтобы мои объекты отрисовывались по порядку?
3) Как правильно рисовать на компоненте?
4) Может у кого то есть идеи как меньшей кровью это сделать?
5) Как правильно сделать, чтобы объекты на компоненте выделялись/открывались как это реализовано в OpenDialog

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

Я в добавок приложу скрины как бы хотелось чтобы это выглядело, выручайте, очень надо.
Если что то не понятно, пожалуйста, задавайте вопросы, я очень хочу решить данный вопрос.


PsihoBolt вне форума Ответить с цитированием
Старый 19.08.2014, 19:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В просторах Интернет ничего похожего и приближенно похожего не нашел
Обычный ListView на такое способен. Я когда-то на его основе делал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2014, 19:40   #3
PsihoBolt
Пользователь
 
Регистрация: 03.05.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Обычный ListView на такое способен. Я когда-то на его основе делал.
Не представляю как это сделать в ListView. Была идея, пробывал сделать, ничего дельного не получилось
PsihoBolt вне форума Ответить с цитированием
Старый 19.08.2014, 21:29   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попробую примерно намекнуть:
Код:
// Задаем стиль проводника
  ListView1.ViewStyle:=vsIcon;
// Задаем список иконок для разных элементов
  ListView1.LargeImages:=ImageList1;
...
// Проход по набору из БД
  Query.First;
  while not Query.Eof do begin
//Добавляем новый элемент в списке
   with ListView1.Items.Add do begin
//Задаем ему название из БД
    Caption:=Query.FieldByName('Название').AsString;
//И иконку в зависимости от типа
    if Query.FieldByName('Каталог').AsBoolean then ImageIndex:=0 else ImageIndex:=1;
   end;
   Query.Next;
  end;
Хоть примерно понятна идея?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание компонента Roman1295 Общие вопросы Delphi 4 07.01.2013 18:19
Визуализация битовой карты, нужна компонента newuserim Компоненты Delphi 1 13.08.2011 15:30
Динамическое создание компонента из компонента)) Impuls1989 Компоненты Delphi 8 22.10.2009 00:08
Создание компонента Neobrat Компоненты Delphi 3 01.05.2009 09:52
Создание компонента. Черничный Компоненты Delphi 2 01.06.2008 23:28