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

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

Автор: HowToDoIt
Дата сообщения: 04.03.2011 02:55

Цитата:
подскажите, по сумированию колонки в View...


Попробуй так:

В событии OnGetText элемента футера (залезть в него можно через редактор футера)

Код:
procedure TFMoneyList.cxGrid3DBBandedTableView1TcxGridDBDataControllerTcxDataSummaryFooterSummaryItems34GetText
...
for i:=0 to cxGrid3DBBandedTableView1.DataController.RecordCount-1 do begin
s0:=cxGrid3DBBandedTableView1.DataController.GetValue(i,cxGrid3DBBandedTableView1Name.Index);
If (not VarIsNull(s0)) then if s0=4 then s1:=s1+s0;
end;
AText:=IntToStr(s1);
Автор: Czechoslovak
Дата сообщения: 04.03.2011 15:27
sldaac
Используй события по обрабоке суммирования значений
FooterSummaryItemsSummary
DefaultGroupSummaryItemsSummary

что то типа

Код:
procedure TForm1.View1DataControllerSummaryFooterSummaryItemsSummary(
ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments;
var OutArguments: TcxSummaryEventOutArguments);
begin
if (View1.DataController.Values[Arguments.RecordIndex,Column1.Index]<>4)
then
OutArguments.Value := 0;
end;
Автор: Klaypeda
Дата сообщения: 04.03.2011 17:22

Цитата:
Klaypeda
Цитата:
Подскажите, пожалуйста! В TreeList как выровнять ширину столбцов по содержимому? Все обшарила - не могу найти. Заранее благодарна!

Используй метод ApplyBestFit

Спасибо, попробую!




Добавлено:
Подскажите, можно как-нибудь узнать у RichEdit-а, редактировался ли в нем текст или просто открыли и ничего не трогали?
Заранее благодарю!
Автор: FunCode
Дата сообщения: 05.03.2011 06:55
Klaypeda

Цитата:
Подскажите, можно как-нибудь узнать у RichEdit-а, редактировался ли в нем текст или просто открыли и ничего не трогали?
Заранее благодарю!

Только через обработку события OnEditValueChanged
Автор: X11
Дата сообщения: 06.03.2011 21:19
Использую TcxDBTreeList. Редактировать ничего не нужно. Нужно только отобразить узлы и рядом чекбоксы, чтобы пользователь мог отметить нужные узлы дерева. У меня там одна колонка и всё.


Вот нашёл код, как отрисовать чекбоксы


Цитата:
Поразмыслив немного, нашел способ прикрутить CheckGroups к TcxDBTreeList
После загрузки дерева в <YourDBTreeList> выполните:



Код: var
vNode: TcxTreeListNode;
begin
vNode := <YourDBTreeList>.Root;
while vNode <> nil do
begin
vNode.CheckGroupType := ncgCheckGroup;
if (vNode.Level > -1) and (vNode.Index mod 2 = 0) then
vNode.CheckState := cbsChecked
else vNode.CheckState := cbsUnchecked;
vNode := vNode.GetNext;
end;
end;
Автор: vladman
Дата сообщения: 07.03.2011 00:36
X11

Цитата:
уважаемого vladman`a

За уважаемого, спасибо )).

Цитата:
Неужели без специального кода нельзя отобразить дерево чекбоксами или радиокнопками? Если можно, то как? (доп. колонку использовать не хочется)

Ну а как без специального кода и без доп. колонки компонент будет знать который из нодов пометить чекбоксом?
Автор: X11
Дата сообщения: 07.03.2011 09:41

Цитата:
Ну а как без специального кода и без доп. колонки компонент будет знать который из нодов пометить чекбоксом?

Я думал, что есть спец. свойство, которое может отобразить перключатели или радиокнопки.

А есть ещё способ, чтобы пройтись циклом по дереву с возможностью оперировать чекбоксами?
Автор: GeXamin
Дата сообщения: 07.03.2011 11:19
Подскажите, а можно ли в cxGrid'e на задний фон кинуть картинкую.
Пробую через BackgroundBitmaps, но там картинка замощает собой всю заднюю область, а хотелось чтоб картинка выводилась справа внизу..

Примеры:
http://s2.ipicture.ru/uploads/20110307/zUyknY6s.png ,
http://s2.ipicture.ru/uploads/20110307/VcDL7ERp.png
Автор: X11
Дата сообщения: 07.03.2011 11:31
Можно. См. свойство Styles. Можно создать стиль, в котором определить картинку:


А потом этот стиль присвоить в гриде:
Автор: GeXamin
Дата сообщения: 07.03.2011 11:42
X11

Вот что получается - http://s1.ipicture.ru/uploads/20110307/YSNf11RR.png

Хотелось бы чтоб так - http://s2.ipicture.ru/uploads/20110307/WWJC7niM.png . Спасибо.
Автор: vladman
Дата сообщения: 07.03.2011 13:06
X11

Цитата:
Я думал, что есть спец. свойство, которое может отобразить перключатели или радиокнопки.

Конечно есть -

var
vNode: TcxTreeListNode;
...
vNode.CheckGroupType := ncgCheckGroup;

т.е.
TcxTreeListNodeCheckGroupType = (ncgNone, ncgCheckGroup, ncgRadioGroup);
property CheckGroupType: TcxTreeListNodeCheckGroupType;

Цитата:
А есть ещё способ, чтобы пройтись циклом по дереву с возможностью оперировать чекбоксами?

Так вы же сами его привели выше.
Автор: X11
Дата сообщения: 07.03.2011 13:29

Цитата:
Конечно есть -

var
vNode: TcxTreeListNode;
...
vNode.CheckGroupType := ncgCheckGroup;


Не нашёл
http://i17.fastpic.ru/big/2011/0307/01/4e4b1b8036d35fdbc74f587851a1d001.png

или это свойство только во время исполнения программы доступно?


Добавлено:
А, понял, не у Column, а у Node и поэтому доступно только во время исполнения и включить у всех записей можно только с помощью цикла, так?
Автор: vladman
Дата сообщения: 07.03.2011 13:52
X11

Цитата:
А, понял, не у Column, а у Node и поэтому доступно только во время исполнения и включить у всех записей можно только с помощью цикла, так?

Для TcxDBTreeList именно так.

Добавлено:
Для любознательных
The Developer Express 2011 Roadmap
Автор: Hydrolisk
Дата сообщения: 07.03.2011 14:36
Необходимо программно в зависимости от выбора пользователя установить параметры фильтра для вьюшки грида.
Данные загружаются из flt-файлов.
Пробую использовать несколько TcxFilterControl, каждый из которых загружает данные из своего файла.
При загрузке данных использую LoadFromFile.
Выдается ошибка: "Невозможно построить фильтр из источника".
Причём flt-файл был ранее создан из редактора FilterControl-а, и в редакторе это контрола нормально загружается.

Заранее большое спасибо!
Автор: X11
Дата сообщения: 07.03.2011 18:09
Извините, переспрошу.
Как можно организовать цикл по дереву TcxDBTreeList? И при это оперировать чекбоксами. Как минимум - это определять состояние переключателя.
Автор: vladman
Дата сообщения: 07.03.2011 19:03
Hydrolisk

Цитата:
Необходимо программно в зависимости от выбора пользователя установить параметры фильтра для вьюшки грида.
Данные загружаются из flt-файлов.
Пробую использовать несколько TcxFilterControl...

Зачем же так сложно, попробуйте использовать <Your>cxGridTableView.DataController.Filter.ReadData(); т.е.

Код: var
vStream: TFileStream;
...
vStream := TFileStream.Create('YourSavedFilter.flt', fmOpenRead);
<Your>cxGridTableView.DataController.Filter.BeginUpdate;
try
<Your>cxGridTableView.DataController.Filter.ReadData(vStream);
finally
<Your>cxGridTableView.DataController.Filter.EndUpdate;
<Your>cxGridTableView.DataController.Filter.Active := True;
vStream.Free;
end;
Автор: X11
Дата сообщения: 07.03.2011 19:08
Вопрос по TcxCheckListbox и автоматической ширине колонки.
Есть ли у TcxCheckListbox что-то вроде column autowidth?
И как устанавливать ширину колонки?
Автор: vladman
Дата сообщения: 07.03.2011 19:47
X11

Цитата:
Извините, переспрошу.
Как можно организовать цикл по дереву TcxDBTreeList? И при это оперировать чекбоксами. Как минимум - это определять состояние переключателя.


Код: var
vNode: TcxTreeListNode;
begin
vNode := <YourDBTreeList>.Root;
while vNode <> nil do
begin
if vNode.CheckGroupType = ncgCheckGroup then
begin
if vNode.CheckState = cbsChecked then ShowMessage('Checked');
if vNode.CheckState = cbsUnchecked then ShowMessage('Unchecked');
if vNode.CheckState = cbsGrayed then ShowMessage('Grayed');
end;
vNode := vNode.GetNext;
end;
end;
Автор: X11
Дата сообщения: 07.03.2011 20:09
Этот код я уже видел и использую. Я имел ввиду, есть ли другой способ пройтись циклом по дереву?
Автор: Hydrolisk
Дата сообщения: 07.03.2011 21:20
vladman

Спасибо огромное! Всё заработало.
Автор: vladman
Дата сообщения: 07.03.2011 21:26
X11
А чем этот плох?

Добавлено:

Цитата:
Вопрос по TcxCheckListbox и автоматической ширине колонки.
Есть ли у TcxCheckListbox что-то вроде column autowidth?

Так поведение TcxCheckListbox при значении поля Columns > 0 и реализовано как column autowidth.
Автор: X11
Дата сообщения: 07.03.2011 22:20

Цитата:
Так поведение TcxCheckListbox при значении поля Columns > 0 и реализовано как column autowidth.

Но снимок показывает обратное


Добавлено:

Цитата:
А чем этот плох?

Я не сказал, что плох. Всё работает.
Ну во первых хотелось бы ещё один способ.
Например, без объявления дополнительной переменной, а также с использованием FOR
Автор: vladman
Дата сообщения: 08.03.2011 12:38
X11

Цитата:
Но снимок показывает обратное

Для начала - в общем случае, ColumnAutoWidth определяет, должна ли автоматически меняться ширина колонок в зависимости от ширины контрола для исключения появления горизонтального скролинга.
Так вот, у TcxCheckListbox именно так и реализовано при Columns > 1.
Поэтому и происходит обрезание текста из вашего примера, т.е. из-за того, что свойство Columns установлено в 2. Попробуйте установить его в 0.


Цитата:
Ну во первых хотелось бы ещё один способ.
Например, без объявления дополнительной переменной, а также с использованием FOR

Действительно, интересно, чем вызвано такое желание?
Автор: X11
Дата сообщения: 08.03.2011 12:53

Цитата:
Поэтому и происходит обрезание текста из вашего примера, т.е. из-за того, что свойство Columns установлено в 2. Попробуйте установить его в 0.

У меня одна колонка. И на снимке видна одна колонка.

Добавлено:

Цитата:
Попробуйте установить его в 0.

Установил в ноль. Проблема не исчезла.

Вот значение свойств:


Вот код заполнения:

Код:
procedure TfmMain.FeelCxCheckListBox(clb: TcxCheckListBox; fibds: TpFibDataSet);
begin
clb.EditValueFormat := cvfCaptions;

if not fibds.Active then
fibds.Open
else
fibds.First;

fibds.DisableControls;
clb.Items.BeginUpdate;
try
While not fibds.Eof do
begin
with TcxCheckListBoxItem.Create(clb.Items) do
begin
Text := fibds.FBN('NAME').AsString;
Tag := fibds.FBN('ID').AsInteger;
end;//with
fibds.Next;
end;//while
finally
clb.Items.EndUpdate;
fibds.EnableControls;
end;
end;
Автор: Hydrolisk
Дата сообщения: 09.03.2011 19:06
Подскажите, пожалуйста, как ограничить список колонок, который выпадает в диалоге задания характеристик фильтра (TcxFilterControl)? Т е как оставить в этом списке только нужные колонки, по которым должна происходить фильтрация?
Автор: vladman
Дата сообщения: 09.03.2011 23:51
Hydrolisk

Цитата:
Подскажите, пожалуйста, как ограничить список колонок, который выпадает в диалоге задания характеристик фильтра (TcxFilterControl)? Т е как оставить в этом списке только нужные колонки, по которым должна происходить фильтрация?

У "ненужных" колонок установите свойство Options.Filtering в False.
Автор: mdid
Дата сообщения: 10.03.2011 11:36
драсте...вроде детская проблема но я завис...
есть cxLookupComboBox1 к нему прикручен датасорс
так вот мне надо что бы этот самый cxLookupComboBox1 разрешал писать в поле значение
которого нет в кверине...то есть задача выбрать документы за период...если документов на эту дату нет - создать.. .вот только cxLookupComboBox1 упорно не дает вносить в эдит поле значение которого нет
Автор: FunCode
Дата сообщения: 10.03.2011 11:52
mdid
Под рукой нет среды чтобы точно написать, смотрите у cxLookupComboBox.Properties свойство вроде EditStyle, ну точно начинается с Edit и там выбираете Edit, а не Fixed, после этого можно вводить значения, которые отсуствуют в выпадающем списке. Если надо контролировать новые значения, чтобы, например добавлять их в выпадающий набор значений, то в обработчиках событий - Properties.OnNewLookup ... что-то такое ...
Автор: mdid
Дата сообщения: 10.03.2011 12:00
FunCode
пасиб нашел...а свойство DropDownListStyle
Автор: Man_Without_Face
Дата сообщения: 10.03.2011 12:07
Добрый день. Подскажите как можно динамически всем компонентам поменять скин? dxSkinController меняет только саму форму. DevExpress 52.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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