Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: CxGrid - навороченный Inplace Editor

Есть некие строковые поля в таблице, состоящие частично из готовых шаблонов, частично заполняемые вручную. Соответственно, сделан дополнительный контроль для заполнения, состоящий из CheckListBox-а и Edit-а. Ну и простого кода туды-сюды.
Все вроде ничего, но не получается это все разместить так, чтобы не перескакивать глазами с одного угла экрана на другой.
Задумался над тем, как бы это все делать в одном месте. Будь то VCL-grid, я бы чего-нить наваял, но с DE в этом месте ... мягко говоря, непросто разобраться.
Нет ли у кого примерчика?
Ответ: PopupEdit - более унпиверсально. На его панель накидываешь всё, что тебе надо
Вопрос: cxGrid выделение строки двойным кликом

Доброго времени суток, как программно (с помощью двойного клика) выделить строки в cxGrid? ( А потом сделать обход выделенного, может кто нить примеры дать?
Ответ: у сетки есть событие на двойной клик - вот в нём и выделяй
а примеров цикла по выделенным строкам cxGrid хватает в тырнете
Вопрос: Получение значения изменяемой ячейки CxGrid

Здравствуйте.
В CxGrid значения принимаются только после нажатия клавиши enter или перехода к следующему элементу. Почему? Можно исправить?

В CxGrid есть колонка. В Properties указал ComboBox. В Items записал два значения "Вкл" и "Выкл".
Чтобы получить значения в изменяемой строке, пользуюсь следующим кодом:

Delphi
1
Str := TV_IOSSD.Controller.EditingItem.EditValue
где TV_IOSSD это и есть таблица.

По умолчанию во всех ячейках "Выкл", если я меняю значение на "Вкл", то в Str получу значение, которое поменяли, то есть "Выкл".
После этого, если снова сменить значение на "Выкл", то в Str значение не поменяется, но если переключиться на другую ячейку в таблице или нажать на Enter, то все работает как надо.
Ответ:
Сообщение от Механ
В CxGrid значения принимаются только после нажатия клавиши enter или перехода к следующему элементу. Почему?
Потому что CxGrid это компонент для отображение данных как обычны DBGrid
Вопрос: cxGrid и большой объем данных - академ.способ

Имеем базу данных на FB 2.5 и cxGrid. Подскажите, как академически правильно организовать взаимодействие? Суть - база содержит около 100 000 записей - каталог товаров. Работнику склада надо постоянно вести работу со справочником товаров - групповые переоценки, скидки, групповые принадлежности. Также хочется штатными средствами работа фильтров и сортировки. 
Использовать частичное чтение данных (GridMode) - тогда не работает сортировка и фильтр - нужно их самостоятельно прописывать, а там колонок - немеряно и юзеры любят составлять очень сложные условия отбора. Понятно, что можно приделать костыли, но интересует именно академический способ решения - классика по всем канонам работы с СУБД. Хотелось бы использовать встроенные средства cxGrid.
Ответ:
от ehlib перешел много лет назад на cxGrid. А чем мне  ehlib поможет? Там какие-то промежуточные компоненты имхо используются для того, чтоб данные в ОЗУ держать. Все равно надо считывать весь набор данных?
Вопрос: cxGrid изменить порядок строк

Подскажите пожалуйста как программно поднять/опустить записи в cxGrid'е?
Ответ:
Papadopulos
пронумеровать его по порядку

В смысле пронумеровать строки
Вопрос: cxGrid, properties HyperLink у колонки

Доброго времени суток! Возник возможно очень банальный вопрос, но как то пока не могу с ним совладать.
В cxGrid есть колонка в которой прописаны гиперссылки. Через Style я делаю их по умолчанию синими и подчеркнутыми.
Properties я им не задаю. По клику выполняется открытие ссылки в браузере следующим образом:

procedure TfMonitoring_new.cxGridMonitorViewCellClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  inherited;
  if cxGridMonitorView.Controller.FocusedItemIndex = 6 then
  begin
    If monitor.fieldbyname('t_web').Value <> '' Then
      begin
      // Это невидимое поле для окраски посещенной ссылки
      monitor.Edit;
      monitor.Fields.FieldByName('v').Value := True;

      ShellExecute(0, 'open', PChar(monitor.fieldbyname('t_web').AsString), '', ''
      , SW_SHOWMAXIMIZED);
      end
    Else
      showmessage(msgWebPageNotExist);
  end;

end;


Далее есть процедура закраски данной ячейки

procedure TfMonitoring_new.cxGridMonitorViewt_webCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  inherited;
  // Проверяем значение невидимой ячейки
  if aViewInfo.GridRecord.Values[cxGridMonitorViewColumn1.Index] = True
  then ACanvas.Font.Color := clRed;
end;


Собственно когда кликаешь на ссылку то она окрашивается, но если кликнуть на другую ссылку, то с той которую я открыл ранее окраска пропадает и переходит на новую.
Смотрел Properties у колонок. Нашел там тип HyperLink. Может как то через нее попроще окраску посещенных сайтов можно сделать? Подскажите пожалуйста
Ответ:
DimaBr
— Вы видите суслика ?
— Нет.
— И я нет. А он есть!


XDDDD
Вопрос: Номер строки в группе cxGrid

Добрый день форумчане.
Подскажите пожалуйста как узнать номер строки в группе cxGrid.
Номер группы я разобрался как узнать
gridView.DataController.Groups.DataGroupIndexByRowIndex[ARecord.Index]
А вот как узнать номер строки в группе что-то застопорился(((

Заранее спасибо.
Ответ: Сквозная нумерация (при любой группировке):
procedure xxx.xxxRecNoGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AText: string);
begin
  inherited;
  AText := IntToStr(Sender.GridView.DataController.GetRowInfo(Sender.GridView.DataController.GetRowIndexByRecordIndex(ARecord.RecordIndex, False)).DataRowIndex + 1);
end;
Вопрос: cxGrid + sorting

Отцы! Только я про забыл и поклялся впредь не вспоминать добрым словом, как новая напасть (см. вложение). Чего cxGrid хочет от меня? Я же и так всё в строгом соответствии с делаю!

К сообщению приложен файл. Размер - 19Kb
Ответ: подован2, открой для себя Ctrl+Shift+A, Luke!
Вопрос: cxGrid - основные визуальные свойства

Hi All
А где у cxGrid - основные визуальные свойства ?
Например как убрать в заголовке : Drag a column header here .....
или No Data to Display
Ответ:
DimaBr
Всё есть в справке, зачем её переводить ?

это для чайников - Delphi за 5 минут.
Если не надо - топик умрёт.
Вопрос: cxGRID - выделение

Есть CXGRID задача следующая - есть список товаров. Необходимо выделить необходимые товары и покрасить строчку. Выделение может происходить как строки так и группы. Как сделано - добавил виртуальное поле checkbox при нажатии на строчку или группу бегу по циклу и проставляю или снимаю галочку в этом поле - TV.DataController.Values[x,x] := xxx. На основе этого поля StylesGetContentStyle крашу строчку.
Проблемы начинаются когда в гриде 30 000 строчек. На обработку одной строки уходит 1 секунда. соответсвено на группу из 20 позиций - 20-25 секунд!!! Кто подскажет в чем проблема или посоветуете более изящное решение задачи.
Благодарю.
Ответ: Родная статья не работает, зато работает ("Как после Locate установить (сфокусировать) найденную запись в центре грида?") :D