Блог


Последние записи


Теги

Информация

Delphi, DevExpress, примеры, решения

Фильтр по тегу: символов


Подсветка символов/слов в cxGrid

Подсветка символов (слов) в TcxGrid


procedure <Grid>CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var R: TRect;
    s1,S2: string;
    X,dx,cx,C,Y: integer;
begin
  if checkHighLight.EditValue = false then exit;

  ADone := true;
  R := AViewInfo.Bounds;
  s1 := AViewInfo.Text;
  C := Length(edSearch.Text);
  cx := ACanvas.TextWidth(edSearch.Text);
  ACanvas.FillRect(R);
  X := R.Left;
  if AViewInfo.Selected
    then ACanvas.Font.Color := clWhite
    else ACanvas.Font.Color := clBlack;
  ACanvas.Canvas.TextOut(R.Left + 1, R.Top + 1, S1);
  ACanvas.Font.Color := clRed;
  repeat
    Y := Pos(edSearch.Text, S1);
    if Y > 1 then begin
      S2 := Copy(S1,1,Y-1);
      dx := ACanvas.TextWidth(s2);
      Delete(S1,1,Y-1);
      Inc(X,dx);
    end;

    if Y > 0 then begin
      ACanvas.Canvas.Brush.Style := bsClear;
      ACanvas.Canvas.TextOut(X + 1, R.Top + 1, copy(S1, 1, C));
      Delete(S1,1,C);
      Inc(X,cx);
    end;
  until Y = 0;

end;


оригинал ищите на sql.ru или рубоарде


Здесь
https://www.sql.ru/forum/940778/podsvetka-slov-v-yacheykah-cxgrid-tcxgriddbtableview
ещё один вариант: подсветка слов с помощью TcxRichEdit
...
...
добавлено: 28 ноя 12 просмотры: 2424, комментарии: 1



cxGrid подсветка символов в ячейках

На событие OnCustomDrawCell для колонки, в которой нужно выполнять подсветку символов используем вот такой код:

procedure GridDB1TELCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var R: TRect;
    s1,S2: string;
    X,dx,cx,C,Y: integer;
begin
  if checkHighLight.EditValue = false then exit;// если отключена подсветка

  ADone := true;// сами полностью всё пророисовываем
  R := AViewInfo.Bounds;
  s1 := AViewInfo.Text;
  C := Length(edSearch.Text);
  cx := ACanvas.TextWidth(edSearch.Text);
  ACanvas.FillRect(R);
  X := R.Left;

  if AViewInfo.Selected then
    ACanvas.Font.Color := clWhite
  else
    ACanvas.Font.Color := clBlack;

  ACanvas.Canvas.TextOut(R.Left + 1, R.Top + 1, S1);
  ACanvas.Font.Color := clRed;
  repeat
    Y := Pos(edSearch.Text, S1);
    if Y > 1 then
    begin
      S2 := Copy(S1,1,Y-1);
      dx := ACanvas.TextWidth(s2);
      Delete(S1,1,Y-1);
      Inc(X,dx);
    end;

    if Y > 0 then
    begin
      ACanvas.Canvas.TextOut(X + 1, R.Top + 1, copy(S1, 1, C));
      Delete(S1,1,C);
      Inc(X,cx);
    end;
  until Y = 0;
end;


А чтобы без прокрутки символы подсвечивались, нужно выполнять обновление, перерисовку грида:
<TableView>.LayoutChanged;
добавлено: 13 июл 12 просмотры: 1406, комментарии: 0