Модератор: Модераторы
procedure TFrmBorzh.StringGridSpDrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
begin
if (ARow>0) and (StrToIntEmpty(SDASp.Cells[9, aRow]) in [10,11,12]) then
begin
with StringGridSp.Canvas do
begin
StringGridSp.Canvas.FillRect(aRect);
StringGridSp.Canvas.Font.Color := clRed;
SetBkMode(Handle, TRANSPARENT);
if aCol in [1,2,4] then
begin
aRect.Left:=aRect.Left-3;
DrawText(StringGridSp.Canvas.Handle, pchar(Utf8ToAnsi(StringGridSp.Cells[ACol, ARow])), -1, aRect, DT_SINGLELINE OR DT_VCENTER OR DT_CENTER);
end;
if aCol in [0] then
begin
aRect.Left:=aRect.Left+3;
DrawText(Handle, pchar(Utf8ToAnsi(StringGridSp.Cells[ACol, ARow])), -1, aRect, DT_SINGLELINE OR DT_VCENTER OR DT_LEFT);
end;
if aCol in [3,5,6] then
begin
aRect.Right:=aRect.Right-4;
DrawText(Handle, pchar(Utf8ToAnsi(StringGridSp.Cells[ACol, ARow])), -1, aRect, DT_SINGLELINE OR DT_VCENTER OR DT_RIGHT);
end;
end;
end;
end;
procedure TFrmPhase030.StringGrid2DrawCell(Sender: TObject; aCol,
aRow: Integer; aRect: TRect; aState: TGridDrawState);
Const //сдесь определяем Ваш цвет. Так же можно использовать
//цвета по умолчанию.
clPaleGreen = TColor($CCFFCC);
clPaleRed = TColor($CCCCFF);
begin
//Если ячейка получает фокус, то нам надо закрасить её другими цветами
{if (gdFocused in aState) then begin
StringGrid2.Canvas.Brush.Color := clBlack;
StringGrid2.Canvas.Font.Color := clGreen;
end
else} //Если же ячейка теряет фокус, то закрашиваем её красным и зелёным
{ if ACol = 2 //Вторая колонка будет зелёной , другие - ячейки красными
then StringGrid2.Canvas.Brush.color := clPaleGreen
else StringGrid2.canvas.brush.Color := clPaleRed; }
//Теперь закрасим ячейки, но только, если ячейка не Title- Row/Column
//Естевственно это завит от того, есть у Вас title-Row/Columns или нет.
If (ACol=1) and (ARow>0) and
(UTF8Copy({UTF8UpperCase}UpSymbols(StringGrid2.Cells[1,aRow]),1,7)='НЕ ВИЗН') then
begin
//Закрашиваем бэкграунд
StringGrid2.canvas.fillRect(aRect);
//Закрашиваем текст (Text). Также здесь можно добавить выравнивание и т.д..
StringGrid2.Canvas.Font.Color := clRed;
StringGrid2.canvas.TextOut(aRect.Left+3,aRect.Top+2,StringGrid2.Cells[ACol,ARow]);
end;
end;
alien308 писал(а):Как сделать, чтобы в StringGrid выделялась не отдельная ячейка, а вся строка таблицы?
StringGrid.Options := StringGrid.Options + [goRowSelect];
alien308 писал(а):Как установить цвет выделения?
StringGrid.SelectedColor := MyColor;
alien308 писал(а):как осуществить программное выделение?
StringGrid.Row := RowNumber;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 217