X11
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Есть код подсветки шрифта в ячейках cxGrid Код: procedure TForm2.cxGrid1TableView1Column2CustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var R: TRect; s1,S2: string; X,dx,cx,C,Y: integer; begin ADone := true; R := AViewInfo.Bounds; s1 := AViewInfo.Text; C := Length(Edit1.Text); cx := ACanvas.TextWidth(Edit1.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,R.Top,S1); ACanvas.Font.Color := clRed; repeat Y := Pos(Edit1.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,R.Top,copy(S1,1,C)); Delete(S1,1,C); Inc(X,cx); end; until Y = 0; end; | Проблема в том, что он начинает работает только если пользователь начнёт прокручивать грид или щёлкает по ячейкам. Как мне вызвать это событие по кнопке, например? Меня интересует, где и как получить второй параметр? Канву нужно передать, но канву чего: грида, ячейки или колонки? CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); А третий параметр можно получить так: cxGrid1DBTableView1.ViewInfo.RecordsViewInfo[cxGrid1DBTableView1.Controller.FocusedRecordIndex].GetCellViewInfoByItem(cxGrid1DBTableView1.Controller.FocusedColumn) Добавлено: Всё проще TcxCustomGridView.LayoutChanged?
---------- /не мы такие, жизнь такая/ |
|