Модератор: Модераторы
Brainenjii писал(а):Глупый, наверное, вопрос, но чем плох TextRect? Само всё перенесётся, надо только высоту рассчитывать
procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
R: TRect;
Flag: Cardinal;
begin
case TDBGrid(Sender).Columns[Column.Index].Alignment of
taCenter: Flag := DT_CENTER;
taLeftJustify: Flag := DT_LEFT;
taRightJustify: Flag := DT_RIGHT;
end;
Flag := Flag or DT_WORDBREAK;
R := Rect;
Inc(R.Left, 3); // отступ слева
Inc(R.Top, 3); // отступ сверху
Dec(R.Right, 3); // отступ справа
TDBGrid(Sender).Canvas.Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
DrawText(DBGRid.Canvas.Handle,
PChar(Trim(UTF8ToAnsi(Column.Field.Text))),
Length(Trim(UTF8ToAnsi(Column.Field.Text))),
R,
Flag);
end;
procedure TFormMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (TDBGrid(Sender).DataSource.DataSet.RecNo mod 2) = 0 then
begin
DBGrid1.Brush.Color:=clActiveBorder;
DBGrid1.Canvas.Font.Color:= clBlack;
end
else
begin
DBGrid1.Canvas.Brush.Color:=clMenuBar;
DBGrid1.Canvas.Font.Color:= clBlack;
end;
if (gdSelected in State) then
begin
DBGrid1.Canvas.Font.Color:= clWhite;
DBGrid1.Canvas.Brush.Color := clGreen;
end;
if (DBGrid1.DataSource.DataSet.fieldbyname ('color_otmetka').AsInteger>0) then
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color := DBGrid1.DataSource.DataSet.fieldbyname ('color_otmetka').AsInteger;
end;
if Column.FieldName='name' then
begin
if DBGrid1.DataSource.DataSet.FieldByName('vozvratnost').AsInteger=0 then DBGrid1.Canvas.Brush.Color:=RGBToColor(255,77,0);
end;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left, Rect.Top, Column.Field.Text );
DBGridSomeName.DataSource.DataSet.fieldbyname('fieldName').Text := '1 привет!'; // это TDBGrid // работает данные вносятся
DBSomeName.FieldByName('fieldName').Text := '2 привет!'; // это TDbf; // работает данные вносятся
DBSomeName.Edit;
DBSomeName.FieldByName('fieldName').Text := 'привет!';
DBSomeName.Post;
Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 218