xpin2013
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору miwa Вы брешете как не знаю кто, ваш Select это набор букмарков который так же успешно слетает после сортировки. Цитата: Здравствуйте! Вы просили обращаться в ПМ, чтобы не захламлять топик. На всякий случай, вот задача: Имеется результат выбора данных, выведенный в DBGridEh. В этом наборе данных имеется колонка "UN". Стоит задача скопировать в буфер обмена значения нескольких полей "UN". Отбор производится оператором, выделяющим строки с интересующими данными. Выделение строк может быть не подряд, т.е. между выделенными строками могут быть разрывы. Буду очень Вам признателен, если подскажете путь реализации. Что-то у меня с этим туго... | Вам просто необходимо познакомится с тем что такое Boorkmark и моим изобретением. Код: type TMyDBGridEhStyle = class(TDBGridEhStyle) protected function HighlightDataCellColor(AGrid: TCustomDBGridEh; ACol, ARow: Integer; DataCol, DataRow: Integer; const Value: string; AState: TGridDrawState; InMultiSelect: Boolean; var AColor: TColor; AFont: TFont): Boolean; override; function HighlightNoDataCellColor(AGrid: TCustomDBGridEh; ACol, ARow: Integer; DataCol, DataRow: Integer; CellType: TCellAreaTypeEh; AState: TGridDrawState; InMultiSelect: Boolean; var AColor: TColor; AFont: TFont): Boolean; override; end; procedure SetMultiSelectOptions(DBGridEh: TDBGridEh; IsMultiSelect: Boolean); begin if IsMultiSelect then begin DBGridEh.AllowedSelections := DBGridEh.AllowedSelections - [gstRectangle, gstColumns]; DBGridEh.IndicatorOptions := DBGridEh.IndicatorOptions + [gioShowRowselCheckboxesEh]; DBGridEh.Options := DBGridEh.Options + [dgAlwaysShowSelection, dgMultiSelect] - [dgEditing]; DBGridEh.OptionsEh := DBGridEh.OptionsEh + [dghIncSearch, dghPreferIncSearch, dghRowHighlight]; DBGridEh.RowSizingAllowed := False; end else begin DBGridEh.AllowedSelections := DBGridEh.AllowedSelections + [gstRectangle, gstColumns]; DBGridEh.IndicatorOptions := DBGridEh.IndicatorOptions - [gioShowRowselCheckboxesEh]; DBGridEh.Options := DBGridEh.Options - [dgAlwaysShowSelection, dgMultiSelect] + [dgEditing]; DBGridEh.OptionsEh := DBGridEh.OptionsEh - [dghIncSearch, dghPreferIncSearch, dghRowHighlight]; DBGridEh.RowSizingAllowed := True; end; end; { TMyDBGridEhStyle } function TMyDBGridEhStyle.HighlightDataCellColor(AGrid: TCustomDBGridEh; ACol, ARow, DataCol, DataRow: Integer; const Value: string; AState: TGridDrawState; InMultiSelect: Boolean; var AColor: TColor; AFont: TFont): Boolean; begin Result := inherited HighlightDataCellColor(AGrid, ACol, ARow, DataCol, DataRow, Value, AState, InMultiSelect, AColor, AFont); if InMultiSelect and not (gdFocused in AState) and not (gdSelected in AState) then AColor := TColor($FFEFCF); if (dghRowHighlight in AGrid.OptionsEh) and (ARow = AGrid.Row) then AColor := clHighlight; end; function TMyDBGridEhStyle.HighlightNoDataCellColor(AGrid: TCustomDBGridEh; ACol, ARow, DataCol, DataRow: Integer; CellType: TCellAreaTypeEh; AState: TGridDrawState; InMultiSelect: Boolean; var AColor: TColor; AFont: TFont): Boolean; begin Result := inherited HighlightNoDataCellColor(AGrid, ACol, ARow, DataCol, DataRow, CellType, AState, InMultiSelect, AColor, AFont); if InMultiSelect and not (gdFocused in AState) and not (gdSelected in AState) then AColor := TColor($FFEFCF); if (dghRowHighlight in AGrid.OptionsEh) and (ARow = AGrid.Row) then AColor := clHighlight; end; | Тут правильный расклад всех опций на мультиселект. Стиль я меняю так: initialization SetDBGridEhDefaultStyle(TMyDBGridEhStyle.Create).Free; end. Добавлено: miwa Хотите возразить приведите реальный код без Букмарков. Мы может как Вы делать станем..... |