Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Tree (дерево) для Firebird/Interbase, FIBExTrees / IBXExTrees library 
:(
    Опции темы
Akella
Дата 4.12.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Компоненты для работы с таблицами/деревьями Interbase/Firebird.

http://home.mts-nn.ru/~mapnn/delphi_news_ru.html

Страница скачивания демо

Дерево может быть с чекбоксами или радиокнопками, или без оных
user posted image




Дерево, как выпадающий список - очень удобно для экономии места на диске.
user posted image


В середине окно "Типы" - это тоже дерево. Можно задать в свойствах начальный уровень показа (Root) и в дереве будут показаны только дочерние ветви, это дерево с чекбоксами:
user posted image


Контекстный поиск. Встроенное собственное контекстное меню. Встроен механизм перетаскивания.

Сам использую несколько лет. Просто понравились компоненты. А тут ещё и обновились. Очень недорогие. Решил и вам посоветовать.

Это сообщение отредактировал(а) Akella - 9.4.2009, 14:38
PM MAIL   Вверх
Bose
Дата 25.12.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: нет
Всего: 51



Праздный вопрос, Akella, а они умеют дерево с несколькими колонками показывать?
PM MAIL WWW Skype   Вверх
Akella
Дата 26.12.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Да, умеют.

Добавлено через 42 секунды
Хотя мне это не понадобилось, если найду время, обязательно покажу, но там есть свойство UserField, что-то вроде этого. Точно не помню
PM MAIL   Вверх
Akella
Дата 28.12.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Там ещё прикол в том, что компонента сама создаёт нужную структуру в базе без лишних телодвижений.
PM MAIL   Вверх
Akella
Дата 28.12.2008, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата

В FIBExTreeView ты не сможешь показать доп. колонки - только читать их значения.
Показать их можно в TFIBExTreeColumnList и в TFIBExTreeList (в режиме report).
Для этого надо перечислить названия полей в свойстве TableTreeUserFields
и соответственно перечислить названия колонок для отображения значений полей
в свойстве TitleColumns.
Каждая колонка должна соответствовать своему полю.
Если кол. колонок (TitleColumns) > кол. полей (TableTreeUserFields) то лишние колонки
будут отображаться пустыми.
Если TitleColumns пустое - колонки не будут отображаться совсем.
Если TableTreeUserFields пустое - колонки будут пустые и т.д.
 
Как только TableTreeUserFields не пустое, при чтении дерева из БД
перечисленные поля будут дополнительно грузится из таблицы и размещаться
в памяти для каждого узла + отображаться в колонках дерева (если заданы колонки TitleColumns).
(Для FIBExTreeView они визуально отображаться не будут, но их можно
будет прочитать/изменить).
Для чтения полей используется метод
function  UserField(Node: TTreeNode; FieldName: String): String;
например
FIBExTreeView.UserField(FIBExTreeView.Selected,'FIELD_NAME');
или
FIBExTreeColumnList.Tree.UserField(FIBExTreeColumnList.Tree.Selected,'FIELD_NAME');
 
Для изменения доп. полей используй
procedure UpdateUserFields(Node: TTreeNode; UserParams: TStrings);
а также
TBeforeInsertNodeEvent = procedure(Sender: TObject; ParentNode: TTreeNode; var S: String;
                           var ImIndex, StIndex: Integer; UserParams: TStrings) of object;
 
Посмотри в DEMO - там есть примеры использования.

PM MAIL   Вверх
Akella
Дата 4.8.2010, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Недавно понадобилось раскрашивать дерево FibExTree разными цветами. Цветной FibExTree. Может кому пригодиться код на Delphi

Для изменения цвета текста текста узла Вам надо использовать событие
OnCustomDrawItem примерно так (вот набросал побыстрому):
 
Код

procedure TF_main.FIBExTreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var Rect: TRect;
    MyColor: TColor;
begin
  Rect:=Node.DisplayRect(True);
  with (Sender as TCustomTreeView) do begin

    if Node.Level = 0 then     // здесь можно проверять Node.StateIndex или Node.Level  или еще что-то ...
       MyColor:=clRed
    else
       MyColor:=clGreen;
//    Canvas.Font.Style:=[fsBold];    // если жирный
 
    if (cdsSelected in State) then
       Canvas.Font.Color:=clWindow
    else
       Canvas.Font.Color:=MyColor;
    Canvas.TextRect(Rect,1,1,Node.Text);  // рисуем текст
  end;
end;

 
Вот примерно так. Вместо Node.Level  проверяйте Node.StateIndex ...
Здесь-же можно управлять стилем фонта (жирность, подчеркивание и т.д.)
 
С уважением, Игорь Ильинский

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0961 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.