Подскажите. Не могу найти в дебрях свойств cxGrida нужное свойство, но думаю, что оно есть: нужно сортировать столбец согласно отображаемого текста.
» Использование DevExpress 2
Есть ли у кого мысли, как заставить в произвольный момент перерисовывать заголовки в гриде?
Всё, нашёл наконец-то: DataController->Options->dcoSortByDisplayText
Добавлено:
Жаль, что нельзя сортировать по выводимому тексту только какую-то конкретную колонку
Добавлено:
jicoff, а что-нить типа header.repaint... update... columt.header.repaint
Добавлено:
а если так:
cxGridDBCPTEL.HeaderAlignmentHorz := cxGridDBCPTEL.HeaderAlignmentHorz;
cxGridDBCPTEL.HeaderAlignmentHorz := taCenter;
а потом вернуть в прежнее положение
типа обманки
Добавлено:
Жаль, что нельзя сортировать по выводимому тексту только какую-то конкретную колонку
Добавлено:
jicoff, а что-нить типа header.repaint... update... columt.header.repaint
Добавлено:
а если так:
cxGridDBCPTEL.HeaderAlignmentHorz := cxGridDBCPTEL.HeaderAlignmentHorz;
cxGridDBCPTEL.HeaderAlignmentHorz := taCenter;
а потом вернуть в прежнее положение
типа обманки
Такая проблема с фильтрованием данных.
Нужно фильтровать данные согласно видимом тексту в колонке, т.к. физически в таблице (FIBDataset/firebird) шифрованные. Хотелось бы фильтр чтобы работал, так же как и сортировка, такое возможно в cxGrid?
Нужно фильтровать данные согласно видимом тексту в колонке, т.к. физически в таблице (FIBDataset/firebird) шифрованные. Хотелось бы фильтр чтобы работал, так же как и сортировка, такое возможно в cxGrid?
X11
Цитата:
уже предпринимал, но перерисовка не происходит. В общем случае отрисовка вызывается на отображение и скрытие окна, на котором лежит грид.
Цитата:
что-нить типа header.repaint... update... columt.header.repaint
уже предпринимал, но перерисовка не происходит. В общем случае отрисовка вызывается на отображение и скрытие окна, на котором лежит грид.
Ну значит вызвать перерисовку грида или панели, на которой он лежит
korobovmax
Извиняюсь за наглость но немогли бы вы скинуть действительно рабочий пример кода для зарисовки грида, желательнро не тот что используеться в примере Девов.
Извиняюсь за наглость но немогли бы вы скинуть действительно рабочий пример кода для зарисовки грида, желательнро не тот что используеться в примере Девов.
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
Хм.
От вашего кода принципиально не отличается, а так как на примере прекрасно работает (при изменении значения прорисовывается на нужной записи), смотрите, чтобы грид подхватывать индексное поле.
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
Хм.
От вашего кода принципиально не отличается, а так как на примере прекрасно работает (при изменении значения прорисовывается на нужной записи), смотрите, чтобы грид подхватывать индексное поле.
X11
Цитата:
Не самое хорошее решение, особенно если часть данных запрашивается из базы в момент перерисовки, а вернее в момент отработки CustomDraw, а событие будет вызываться при таком подходе.
Цитата:
Ну значит вызвать перерисовку грида или панели, на которой он лежит
Не самое хорошее решение, особенно если часть данных запрашивается из базы в момент перерисовки, а вернее в момент отработки CustomDraw, а событие будет вызываться при таком подходе.
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 (!)
Насчет прогрессбаров - я, вместо указания RepositoryItem, в OnGetEditProperties написал условие, чтобы устанавливать эдитор в прогрессбар только если значение не пустое.
То есть:
if (ANode.Values[<Столбец>.ItemIndex]) <> 0) then
EditProperties := edtrepsI.Properties;
Иначе - показывать поумолчанию (TextEdit).
В OnGetDisplayText написал:
if Value = '0' then
Value := '';
В итоге:
1. Заметно ускорилось, так как далеко не на всех нодах (сейчас) есть значения для отображения прогрессбара по ним;
2. Стало более наглядно, так как куча бесполезных (показывающих 0%) надписей исчезло.
Конечно, с течением времени скорость будет падать, так как прогрессбары все-равно медленные, но, глядишь, к тому времени уже выйдет обещанный QuantumTreeList 5.0 (!)
Такой вот маленький вопрос как подсщитать сумму занчения в во всей детайл таблице.
Дело в том что подключаюсь в FB через фибсы потом использую фильтры а оказалось что нужно узнать сумму по полю по всей таблице.
Дело в том что подключаюсь в FB через фибсы потом использую фильтры а оказалось что нужно узнать сумму по полю по всей таблице.
А при чём здесь DevExpress?
Используй запрос вида:
select sum(pole1) where masterkey = :masterkey в FibDataBase.QueryValue(.....)
Используй запрос вида:
select sum(pole1) where masterkey = :masterkey в FibDataBase.QueryValue(.....)
X11
Дело в том что я сначала использую селект в ФИбДатаСет а потом н анего налаживаю фильтры. А как сделать выборку типа сум с ФибДатаСет я не зная как?
Так что задаю вопрос как можно просумиролвать значения в детайл таблице.
Дело в том что я сначала использую селект в ФИбДатаСет а потом н анего налаживаю фильтры. А как сделать выборку типа сум с ФибДатаСет я не зная как?
Так что задаю вопрос как можно просумиролвать значения в детайл таблице.
Цитата:
я сначала использую селект в ФИбДатаСет а потом н анего налаживаю фильтры
Т.е. сначала что-то типа select * from, а потом фильтрами делаешь то, что обычно делается с помощью where?
Жесть...
Цитата:
Т.е. сначала что-то типа select * from, а потом фильтрами делаешь то, что обычно делается с помощью where?
Жесть...
Не жесть а так проще ибо есть случай когда where меняться очень часто и что бы не загружать сервер лучше сделать фильтр
Несколько вопросов по компоненту SpreadSheet
1. Подскажите, как в SpreadSheet реализовать отметку и выделение колонок/столбцов аля эксел.
2. Для изменения формата хранения ячеек делаю обход строк/столбцов, но это на порядок медленне родного, да и перерисовка задрала. Как сделать быстрее и без мерцания.
Если киненте примером по моим вопросам буду просто счастлив.
1. Подскажите, как в SpreadSheet реализовать отметку и выделение колонок/столбцов аля эксел.
2. Для изменения формата хранения ячеек делаю обход строк/столбцов, но это на порядок медленне родного, да и перерисовка задрала. Как сделать быстрее и без мерцания.
Если киненте примером по моим вопросам буду просто счастлив.
Цитата:
что бы не загружать сервер
Если у сервера есть проблемы с производительностью (при нормальных запросах), пора менять сервер наступила пару месяцев назад.
Для вашего случая есть встроенное средство: динамический SQL.
Доброе время суток.
В обработчике события 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);
}
В обработчике события 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);
}
Добрый день!
Ситуация: использую Grid с BandedView, в footer'e отображаю сумму по полю. Так вот сумма отображается только при просмотре с группировкой по какому-нибудь полю, иначе - 0. Никто не подскажет, в какую сторону копать?
Ситуация: использую Grid с BandedView, в footer'e отображаю сумму по полю. Так вот сумма отображается только при просмотре с группировкой по какому-нибудь полю, иначе - 0. Никто не подскажет, в какую сторону копать?
Chukotka
Может footer к группе относится, а не к полю?
Может footer к группе относится, а не к полю?
Народ, кто работал с 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;
Вначале заполняю значения из таблицы, имена -> 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;
X11
Можно напрямую обращаться к
Код: CheckCombo.States[i]
Можно напрямую обращаться к
Код: CheckCombo.States[i]
Про побитовую маску не совсем понял, это случайно ли не свойство, по которому можно пробежаться в цикле и узнать, что отмечено?
X11
Цитата:
Это CheckCombo.States[i]
А про Value лучше почитать в справке. Там не 1 абзац, поэтому долго объяснять. Каждый бит соответсвует каждому итему в списке и хранит 1, если стоит чек, 0 - иначе.
Цитата:
это случайно ли не свойство, по которому можно пробежаться в цикле и узнать, что отмечен
Это CheckCombo.States[i]
А про Value лучше почитать в справке. Там не 1 абзац, поэтому долго объяснять. Каждый бит соответсвует каждому итему в списке и хранит 1, если стоит чек, 0 - иначе.
Есть связка компонентты SDAC ( )> cxGrid1DBTableView1, при MSQuery1.delete происходит подтормаживание, 2-3 сек при переходе на след запись. Записей может быть от пору тысяч до несколько десятков тысяч. Все перебробовал, интересует как можно убрать подтормаживание. Если использовать стандатрный DBGrid1 вместо cxGrid1DBTableView1 то все летает без проблем. С девками работаю не первый год, но может кто подскажет что-то новое в комбинации настроек.
Спсб.
Спсб.
у меня в гриде 3 колонки - одна с чекбоксом, другие с SpinEdit
цифры в колонках со SpinEdit должны отображаться только если чекбокс отмечен.
Делаю это черз OnGetDisplayText для колонок с цифрами
(if ARecord.Values[prodviewdone.Index]=0 then AText:='')
Но при клике на чекбокс колонки с цифрами не перерисовываются (цифры появляются только когда выделяешь другую строку).
Как сделать чтобы колонки с цифрами сразу перерисовывались?
разобрался - grid.LayoutChanged
цифры в колонках со SpinEdit должны отображаться только если чекбокс отмечен.
Делаю это черз OnGetDisplayText для колонок с цифрами
(if ARecord.Values[prodviewdone.Index]=0 then AText:='')
Но при клике на чекбокс колонки с цифрами не перерисовываются (цифры появляются только когда выделяешь другую строку).
Как сделать чтобы колонки с цифрами сразу перерисовывались?
разобрался - grid.LayoutChanged
sldaac
AutoRefresh AfterDelete может вызывать подобную проблему при большом кол-ве записей.
А что показывает DB Monitor.
AutoRefresh AfterDelete может вызывать подобную проблему при большом кол-ве записей.
А что показывает DB Monitor.
Цитата:
AutoRefresh AfterDelete может вызывать подобную проблему при большом кол-ве записей.
А что показывает DB Monitor.
AutoRefresh=false
AfterDelete - пусто
тут все в cxGrid1DBTableView1, меняю на стандаотный грид, все ОК
Приветствую всех вас. Вопрос по TcxCheckComboBox.
Заполняю в цикле элементами. Всего около 1000. Потом, щёлкаю TcxCheckComboBox, он открывается, хочу у некоторых отметить галки. Но галки можно поставить только первым 74-ём элементам. Остальным не могу.
Заполняю в цикле элементами. Всего около 1000. Потом, щёлкаю TcxCheckComboBox, он открывается, хочу у некоторых отметить галки. Но галки можно поставить только первым 74-ём элементам. Остальным не могу.
sldaac
Кол-во записей?
Какие возможности грида включены?
Скины есть?
Есть ли свои (самописные) обработки: стили, рисование, фильтры?
Какие едиторы проставлены?
Добавлено:
X11
Код не мешало бы посмотреть.
Но вообще использовать CheckComboBox для 1к записей - это жесть!
Кол-во записей?
Какие возможности грида включены?
Скины есть?
Есть ли свои (самописные) обработки: стили, рисование, фильтры?
Какие едиторы проставлены?
Добавлено:
X11
Код не мешало бы посмотреть.
Но вообще использовать CheckComboBox для 1к записей - это жесть!
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
Предыдущая тема: Язык программирования на русском языке
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.