Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress (часть 4)

Автор: Pint pot
Дата сообщения: 06.02.2013 14:55
marser

Спасибо за указание нужного направления! Это то, что надо
Автор: reenoip
Дата сообщения: 07.02.2013 06:09
На Form1 настроил Quick Access Toolbar (QAT), следом на Form2 сделал то же самое. Но при вызове Form2 идентично настроенная QAT почему-то съезжает вниз (условно - на место Main Menu). Это фича? Или QAT может использоваться только на одной форме?



Добавлено:
Хм... После некоторых экспериментов нашёл решение (но, скорее всего, не самое правильное). Добавлять уже готовую форму:



Тогда QAT работает как надо на всех формах вне зависимости от их количества.
Автор: regkz
Дата сообщения: 07.02.2013 09:03
reenoip
а у Form2 какой класс? должен быть TdxRibbonForm
Автор: reenoip
Дата сообщения: 07.02.2013 10:35
regkz
вот в этом-то и была моя ошибка.
Автор: X11
Дата сообщения: 08.02.2013 14:15
Нужно организовать цикл по дереву TcxDBTreeList. Но в новых версиях уже не рекомендуют использовать vNode := tree.Root;



Код: Procedure HideNodes(Tree: TcxDBTreeList);
Var
vNode: TcxTreeListNode;
begin
if not Tree.DataController.DataSource.DataSet.Active then Tree.DataController.DataSource.DataSet.Open;

vNode := tree.Root;

while vNode <> nil do
begin
vNode.Visible := vNode.HasChildren;
vNode := TcxDBTreeListNode(vNode.GetNext);
end;//While

end;
Автор: mdid
Дата сообщения: 08.02.2013 14:34
X11
а что именно делает цикл? у вас же DB дерево, и гораздо быстрее будет поиск/фильтрация sql запросом.
Автор: X11
Дата сообщения: 08.02.2013 14:53
Кто-нибудь ещё может подсказать?

Добавлено:
Нужен цикл по узлам дерева.

Добавлено:
Код показывает "-1", а по идее должен показывать 1

tree.GotoBOF;
vNode := TcxDBTreeListNode(tree.root);
ShowMessage(vNode.Level);


Добавлено:
Вернее 0
Автор: makz
Дата сообщения: 09.02.2013 01:26
X11
ProcessChildren
_http://www.devexpress.com/Support/Center/Question/Details/A973
Автор: Pint pot
Дата сообщения: 09.02.2013 21:44
Можно ли в TcxDBTreeList обратиться напрямую к конкретной Cell по индексу Column и индексу Node, т.е. по "координатам" Cell ?
Автор: X11
Дата сообщения: 10.02.2013 10:04
Ребята, посмотрите на дату сообщений. 9 лет назад

а я написал:

Цитата:
в новых версиях



Добавлено:
Мало того, TopNode возвращает NIL

Добавлено:

Цитата:
Можно ли в TcxDBTreeList обратиться напрямую к конкретной Cell по индексу Column и индексу Node, т.е. по "координатам" Cell ?


Задай вопрос по другому, может нужно что-то вроде FocusedNode.Values[ColumnIndex]?
Автор: Pint pot
Дата сообщения: 10.02.2013 13:59
[more]
Цитата:
Цитата:
Можно ли в TcxDBTreeList обратиться напрямую к конкретной Cell по индексу Column и индексу Node, т.е. по "координатам" Cell ?

Задай вопрос по другому, может нужно что-то вроде FocusedNode.Values[ColumnIndex]?

Не совсем так. Как мне здесь подсказали уже, я по событию MouseMove через cxDBTreeList.HitTest запомнил индексы колонок и веток дерева для каждой обработанной (закрашиваемой по обработке события OnCustomDrawDataCell) Cell и выделил цветом эти Cell-ы.

Собственно мне это необходимо для реализации "своего" селекта, который позволял бы выделять область не целыми ветками. Дальше значения выделенной области ячеек пишутся в буфер (для дальнейшей выгрузки в Excel). Ранее значения из ячеек читались как Selections(i).Value[ColumnIndex]. Теперь в качестве опознавательных знаков нужных ячеек будут использоваться индексы (либо цвет/стиль).

Мне необходимо также очищать выделенную область перед следующим нажатием левой кнопки мыши и новым выбором некоторой области. Как быстро обратить цвета (стиль) всех ячеек в дефолтный цвет (стиль)?

Вот есть событие StylesGetContentStyle, в аргументах которого содержатся как раз индексы Column и Node перерисовываемой ячейки. Через это событие можно поменять стиль у конкретной ячейки.

У меня просто незнание всех свойств и событий этого компонента, поэтому не знаю как обращаться вот к конкретным ячейкам в моем случае. Возможно ли это не в рамках события StylesGetStyleContent?
[/more]
Автор: makz
Дата сообщения: 10.02.2013 15:10
X11
В новых, старых - один черт - без рекурсии дерево не обежишь. Доберусь до работы, попытаюсь сделать.
Автор: X11
Дата сообщения: 10.02.2013 16:23
в старых можно было начинать от ROOT, а в новых уже по другому
Автор: makz
Дата сообщения: 11.02.2013 04:29
X11
Проверил. Код прекрасно работает. Все что понадобилось - заменить TdxTreeListNode на TсxTreeListNode.
Автор: marser
Дата сообщения: 11.02.2013 06:02
Pint pot

Цитата:
Можно ли в TcxDBTreeList обратиться напрямую к конкретной Cell по индексу Column и индексу Node, т.е. по "координатам" Cell ?

Что значит к Cell? Если к значениям ячейки, то
cxDBTreeList1.Items[Index].Values[Index]
cxDBTreeList1.AbsoluteItems[Index].Values[Index]

Добавлено:
X11
Элементарно пишется и без Root. cxTreeList1.Items - ноды верхнего уровня.

Добавлено:
Pint pot

Цитата:
Вот есть событие StylesGetContentStyle, в аргументах которого содержатся как раз индексы Column и Node перерисовываемой ячейки. Через это событие можно поменять стиль у конкретной ячейки.

Конечно можно. В качестве опознавательных знаков выделенных ячеек можно использовать свойства Node.ImageIndex и Column.Tag, например, Node.ImageIndex := -100 и Column.Tag := 1, а в обработчике события OnCustomDrawDataCell написать:

Код: procedure TForm1.cxTreeList1CustomDrawDataCell(Sender: TcxCustomTreeList; ACanvas: TcxCanvas; AViewInfo: TcxTreeListEditCellViewInfo; var ADone: Boolean);
begin
if (AViewInfo.Node.ImageIndex = -100) and (AViewInfo.Column.Tag = 1) then
begin
ACanvas.Brush.Color := clHighlight;
ACanvas.Font.Color := clHighlightText;
end;
end;
Автор: X11
Дата сообщения: 11.02.2013 10:37
Хорошо, у вас есть работающий пример получения ключевых значений (KeyValue) отмечанных чекбоксами узлов?

Пользователь отметил несколько узлов чекбоксами, нужно пройтись по дереву и получить у отмеченных узлов значения ключевого поля ID.
Дерево привязано к НД.
Автор: marser
Дата сообщения: 11.02.2013 11:27
X11

Код: procedure TForm1.cxButton1Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to cxDBTreeList1.AbsoluteCount - 1 do
begin
if cxDBTreeList1.AbsoluteItems[I].HasChildren and (cxDBTreeList1.AbsoluteItems[I].CheckState = cbsChecked) then
ShowMessage(VarToStr(cxDBTreeList1.AbsoluteItems[I].Values[0]));
end;
end;
Автор: tanaseduard
Дата сообщения: 11.02.2013 15:05
Есть cxDBCardView.
И вот забавная с ним фишка. Если не помещается на экран то показывает свои скролы, но если хоть 1 поле имеет значение False для BeginsLayer то скроллы пропадают намертво.
Как лечить?
Автор: Pint pot
Дата сообщения: 11.02.2013 17:31
marser

Благодарю за помощь! Всё получилось (маркировку ячеек дерева делал всё же через StylesGetContentStyle)
Автор: eddoc
Дата сообщения: 11.02.2013 22:18
Eсли положить на dxBar кнопки с картинками, то картинки выглядят монохромными, пока не наведешь на любую из них мыша. Как вернуть им жизнерадостный вид подобно стандартным VCL-ским собратьям?
Автор: makz
Дата сообщения: 12.02.2013 00:28
X11

Цитата:
нужно пройтись по дереву и получить у отмеченных узлов значения ключевого поля ID

Это две не связанные друг с другом задачи.
eddoc
AutoGrayScale свойство кнопки.
Автор: X11
Дата сообщения: 12.02.2013 09:05

Цитата:
Это две не связанные друг с другом задачи.


очень даже связанные
Автор: eddoc
Дата сообщения: 12.02.2013 22:20
makz
спасибки

зы. если ты не против, то я дальнейшие респекты в личку буду слать, чтоб тут не мусорить
Автор: makz
Дата сообщения: 13.02.2013 04:54
X11
Связанные они только в том случае, если надо обойти ветвь, а не дерево целиком, как у тебя.

Добавлено:
eddoc
Да мне и в личку ни к чему, и тут необязательно . Просто пиши если не сработало.
Автор: reenoip
Дата сообщения: 13.02.2013 07:39
Как-то странно себя cxDBMemo ведёт, блин, никак не могу его приручить
Прикрутил к нему скин Office2010Silver, и выглядит с ним компонент отлично ровно до тех пор, пока к cxDBMemo не подключишь DataSource:




Страшно выглядит что в XP, что в Windows 7 (и с Aero, и без него).


Подключение других скинов не помогает - со всеми комплектными скинами наблюдаются те же самые... как бы их назвать... "графические артефакты".

Добавлено:
Чёрная полоска на компоненте в левом верхнем углу - не фотошоп, если что. У меня прямо так и выглядит компонент после подключения к нему DataSource и определения поля.
Автор: X11
Дата сообщения: 13.02.2013 10:50
makz, мне нужно обойти все узлы, и собрать в список все отмеченные галочками. В датасете этой информации нет. Мало того, дерево может быть отфильтровано как-то. В общем в датасете и в дереве визуально могуть быть немного разные данные.
Автор: makz
Дата сообщения: 13.02.2013 14:53
X11
marser привел способ собрать все галочки не обходя дерево, что не так?
Автор: X11
Дата сообщения: 13.02.2013 15:08
всё так
Автор: Marcello_TLT
Дата сообщения: 14.02.2013 14:43
Использую TcxPivotGrid для отображения информации по количеству товара (rb_count: TcxPivotGridField) и сумме (rb_price: TcxPivotGridField ). Оба поля лежат в области faData. Можно ли как-нибудь отобразить рядом столбец с "ценой за штуку"? Т.е. по сути нужно отобразить поле, аналогичное rb_price, но безо всякого суммирования.

И еще один вопрос про TcxPivotGrid. Сейчас очищаю таблицу так:
Код:
PivotGrid.BeginUpdate;
while PivotGrid.DataController.RecordCount > 0 do PivotGrid.DataController.DeleteRecord( 0 );
PivotGrid.EndUpdate;
Автор: Ruslang
Дата сообщения: 15.02.2013 15:02
Вопросы по планировщику:
1. Как в cxScheduler перекрыть/обработать самому срабатывание напоминалки?
2. Нашел код как создавать событие:

Код: var AEvent: TcxSchedulerEvent;
begin
AEvent := cxStorage.CreateEvent;
with AEvent do
begin
    Caption := 'Встреча';
    Start := Date + 10 * HourToTime;
Duration := 30 * MinuteToTime;
State := tlsBusy;
Post;
end;
end;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.