miwa Вы брешете как не знаю кто, ваш Select это набор букмарков который так же успешно слетает после сортировки.
Цитата:
Здравствуйте! Вы просили обращаться в ПМ, чтобы не захламлять топик.
На всякий случай, вот задача:
Имеется результат выбора данных, выведенный в DBGridEh. В этом наборе данных имеется колонка "UN".
Стоит задача скопировать в буфер обмена значения нескольких полей "UN".
Отбор производится оператором, выделяющим строки с интересующими данными. Выделение строк может быть не подряд, т.е. между выделенными строками могут быть разрывы.
Буду очень Вам признателен, если подскажете путь реализации. Что-то у меня с этим туго...
Вам просто необходимо познакомится с тем что такое Boorkmark и моим изобретением.
Код: [no]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;
[/no]