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

» Использование DevExpress 2

Автор: X11
Дата сообщения: 27.08.2008 19:38
Подскажите. Не могу найти в дебрях свойств cxGrida нужное свойство, но думаю, что оно есть: нужно сортировать столбец согласно отображаемого текста.
Автор: jicoff
Дата сообщения: 27.08.2008 19:40
Есть ли у кого мысли, как заставить в произвольный момент перерисовывать заголовки в гриде?
Автор: X11
Дата сообщения: 27.08.2008 19:47
Всё, нашёл наконец-то: DataController->Options->dcoSortByDisplayText

Добавлено:
Жаль, что нельзя сортировать по выводимому тексту только какую-то конкретную колонку

Добавлено:
jicoff, а что-нить типа header.repaint... update... columt.header.repaint

Добавлено:
а если так:
cxGridDBCPTEL.HeaderAlignmentHorz := cxGridDBCPTEL.HeaderAlignmentHorz;

cxGridDBCPTEL.HeaderAlignmentHorz := taCenter;
а потом вернуть в прежнее положение

типа обманки
Автор: X11
Дата сообщения: 28.08.2008 00:43
Такая проблема с фильтрованием данных.
Нужно фильтровать данные согласно видимом тексту в колонке, т.к. физически в таблице (FIBDataset/firebird) шифрованные. Хотелось бы фильтр чтобы работал, так же как и сортировка, такое возможно в cxGrid?
Автор: jicoff
Дата сообщения: 28.08.2008 04:08
X11


Цитата:
что-нить типа header.repaint... update... columt.header.repaint


уже предпринимал, но перерисовка не происходит. В общем случае отрисовка вызывается на отображение и скрытие окна, на котором лежит грид.
Автор: X11
Дата сообщения: 28.08.2008 09:38
Ну значит вызвать перерисовку грида или панели, на которой он лежит
Автор: sergiuz1303
Дата сообщения: 28.08.2008 10:06
korobovmax
Извиняюсь за наглость но немогли бы вы скинуть действительно рабочий пример кода для зарисовки грида, желательнро не тот что используеться в примере Девов.
Автор: korobovmax
Дата сообщения: 28.08.2008 10:39
sergiuz1303
ADone в True не надо, если не полностью своя прорисовка.

Тогда, в обработчике OnCustomDrawCell:
var
val: String;
...

val := VarAsType(AViewInfo.GridRecord.DisplayTexts[<НазваниеСтолбца>.Index], varString);
if val = 'SPORTS' then
ACanvas.Canvas.Font.Color := clRed
else
if val = 'SALOON' then
ACanvas.Canvas.Font.Color := clBlue
else
if val = 'TRUCK' then
ACanvas.Canvas.Font.Color := clGreen;
ACanvas.Canvas.FillRect(ARec);

Все.

Добавлено:
sergiuz1303
Хм.
От вашего кода принципиально не отличается, а так как на примере прекрасно работает (при изменении значения прорисовывается на нужной записи), смотрите, чтобы грид подхватывать индексное поле.
Автор: jicoff
Дата сообщения: 28.08.2008 14:27
X11


Цитата:
Ну значит вызвать перерисовку грида или панели, на которой он лежит


Не самое хорошее решение, особенно если часть данных запрашивается из базы в момент перерисовки, а вернее в момент отработки CustomDraw, а событие будет вызываться при таком подходе.
Автор: korobovmax
Дата сообщения: 28.08.2008 15:48
Dennica, afiget
Насчет прогрессбаров - я, вместо указания RepositoryItem, в OnGetEditProperties написал условие, чтобы устанавливать эдитор в прогрессбар только если значение не пустое.
То есть:
if (ANode.Values[<Столбец>.ItemIndex]) <> 0) then
EditProperties := edtrepsI.Properties;

Иначе - показывать поумолчанию (TextEdit).

В OnGetDisplayText написал:
if Value = '0' then
Value := '';

В итоге:
1. Заметно ускорилось, так как далеко не на всех нодах (сейчас) есть значения для отображения прогрессбара по ним;
2. Стало более наглядно, так как куча бесполезных (показывающих 0%) надписей исчезло.

Конечно, с течением времени скорость будет падать, так как прогрессбары все-равно медленные, но, глядишь, к тому времени уже выйдет обещанный QuantumTreeList 5.0 (!)
Автор: sergiuz1303
Дата сообщения: 30.08.2008 11:52
Такой вот маленький вопрос как подсщитать сумму занчения в во всей детайл таблице.
Дело в том что подключаюсь в FB через фибсы потом использую фильтры а оказалось что нужно узнать сумму по полю по всей таблице.
Автор: X11
Дата сообщения: 30.08.2008 12:18
А при чём здесь DevExpress?
Используй запрос вида:
select sum(pole1) where masterkey = :masterkey в FibDataBase.QueryValue(.....)
Автор: sergiuz1303
Дата сообщения: 30.08.2008 13:46
X11
Дело в том что я сначала использую селект в ФИбДатаСет а потом н анего налаживаю фильтры. А как сделать выборку типа сум с ФибДатаСет я не зная как?
Так что задаю вопрос как можно просумиролвать значения в детайл таблице.
Автор: afiget
Дата сообщения: 30.08.2008 14:33

Цитата:
я сначала использую селект в ФИбДатаСет а потом н анего налаживаю фильтры

Т.е. сначала что-то типа select * from, а потом фильтрами делаешь то, что обычно делается с помощью where?
Жесть...
Автор: sergiuz1303
Дата сообщения: 01.09.2008 09:01

Цитата:
Т.е. сначала что-то типа select * from, а потом фильтрами делаешь то, что обычно делается с помощью where?
Жесть...


Не жесть а так проще ибо есть случай когда where меняться очень часто и что бы не загружать сервер лучше сделать фильтр
Автор: Sufferer
Дата сообщения: 01.09.2008 09:45
Несколько вопросов по компоненту SpreadSheet
1. Подскажите, как в SpreadSheet реализовать отметку и выделение колонок/столбцов аля эксел.
2. Для изменения формата хранения ячеек делаю обход строк/столбцов, но это на порядок медленне родного, да и перерисовка задрала. Как сделать быстрее и без мерцания.
Если киненте примером по моим вопросам буду просто счастлив.
Автор: afiget
Дата сообщения: 01.09.2008 13:33

Цитата:
что бы не загружать сервер


Если у сервера есть проблемы с производительностью (при нормальных запросах), пора менять сервер наступила пару месяцев назад.

Для вашего случая есть встроенное средство: динамический SQL.
Автор: StarrySky
Дата сообщения: 01.09.2008 18:14
Доброе время суток.

В обработчике события drag&drop, я динамически формирую меню и показываю его. Меню отображается, но не реагирует на события, подскажите, пожалуйста, что делать.

StarrySky
private void meFormula_DragDrop(object sender, DragEventArgs e)

{

string text = (string)e.Data.GetData(typeof(string));

pmSelectAdd.BeginUpdate();
pmSelectAdd.ItemLinks.Clear();
bbi = new BarButtonItem();
bbi.Caption = "'" + text + "'";
bbi.ItemClick += new ItemClickEventHandler(bbi_ItemClick);
pmSelectAdd.ItemLinks.Add((BarItem)bbi);

p = new Point(e.X, e.Y);
pmSelectAdd.EndUpdate();
pmSelectAdd.ShowPopup(p);

}

Автор: Chukotka
Дата сообщения: 02.09.2008 09:26
Добрый день!
Ситуация: использую Grid с BandedView, в footer'e отображаю сумму по полю. Так вот сумма отображается только при просмотре с группировкой по какому-нибудь полю, иначе - 0. Никто не подскажет, в какую сторону копать?
Автор: jicoff
Дата сообщения: 03.09.2008 16:50
Chukotka

Может footer к группе относится, а не к полю?
Автор: X11
Дата сообщения: 04.09.2008 00:19
Народ, кто работал с TcxCheckComboBox? Интересует, как в цикле вытащить более рационально и правильно всё, что отмечено?
Вначале заполняю значения из таблицы, имена -> Description, ID -> Tag.

Код:
procedure TfmApartSearch.FeelInfosource();
Var
CheckComboboxItem: TcxCheckComboboxItem;
begin
with dm do
with fibdsInfoSource do begin
Open;
First;
FetchAll;

While not Eof do begin
CheckComboboxItem := checkboxCHANGE.Properties.Items.AddCheckItem(FieldByName('NAME').AsString);
CheckComboboxItem.Tag := FieldByName('ID').AsInteger;

Next;
end;
close;
end;
end;
Автор: afiget
Дата сообщения: 04.09.2008 00:39
X11
Можно напрямую обращаться к
Код: CheckCombo.States[i]
Автор: X11
Дата сообщения: 04.09.2008 09:43
Про побитовую маску не совсем понял, это случайно ли не свойство, по которому можно пробежаться в цикле и узнать, что отмечено?
Автор: afiget
Дата сообщения: 04.09.2008 11:53
X11

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

Это CheckCombo.States[i]

А про Value лучше почитать в справке. Там не 1 абзац, поэтому долго объяснять. Каждый бит соответсвует каждому итему в списке и хранит 1, если стоит чек, 0 - иначе.
Автор: sldaac
Дата сообщения: 06.09.2008 18:48
Есть связка компонентты SDAC ( )> cxGrid1DBTableView1, при MSQuery1.delete происходит подтормаживание, 2-3 сек при переходе на след запись. Записей может быть от пору тысяч до несколько десятков тысяч. Все перебробовал, интересует как можно убрать подтормаживание. Если использовать стандатрный DBGrid1 вместо cxGrid1DBTableView1 то все летает без проблем. С девками работаю не первый год, но может кто подскажет что-то новое в комбинации настроек.
Спсб.
Автор: ply
Дата сообщения: 06.09.2008 19:36
у меня в гриде 3 колонки - одна с чекбоксом, другие с SpinEdit
цифры в колонках со SpinEdit должны отображаться только если чекбокс отмечен.
Делаю это черз OnGetDisplayText для колонок с цифрами
(if ARecord.Values[prodviewdone.Index]=0 then AText:='')

Но при клике на чекбокс колонки с цифрами не перерисовываются (цифры появляются только когда выделяешь другую строку).
Как сделать чтобы колонки с цифрами сразу перерисовывались?


разобрался - grid.LayoutChanged
Автор: afiget
Дата сообщения: 07.09.2008 12:42
sldaac
AutoRefresh AfterDelete может вызывать подобную проблему при большом кол-ве записей.
А что показывает DB Monitor.
Автор: sldaac
Дата сообщения: 07.09.2008 14:35

Цитата:
AutoRefresh AfterDelete может вызывать подобную проблему при большом кол-ве записей.
А что показывает DB Monitor.



AutoRefresh=false
AfterDelete - пусто
тут все в cxGrid1DBTableView1, меняю на стандаотный грид, все ОК
Автор: X11
Дата сообщения: 07.09.2008 14:48
Приветствую всех вас. Вопрос по TcxCheckComboBox.
Заполняю в цикле элементами. Всего около 1000. Потом, щёлкаю TcxCheckComboBox, он открывается, хочу у некоторых отметить галки. Но галки можно поставить только первым 74-ём элементам. Остальным не могу.
Автор: afiget
Дата сообщения: 07.09.2008 21:03
sldaac
Кол-во записей?
Какие возможности грида включены?
Скины есть?
Есть ли свои (самописные) обработки: стили, рисование, фильтры?
Какие едиторы проставлены?

Добавлено:
X11
Код не мешало бы посмотреть.
Но вообще использовать CheckComboBox для 1к записей - это жесть!

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


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