Работа с DBGrid
Модератор: Модераторы
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Глупый, наверное, вопрос, но чем плох TextRect? Само всё перенесётся, надо только высоту рассчитывать
Brainenjii писал(а):Глупый, наверное, вопрос, но чем плох TextRect? Само всё перенесётся, надо только высоту рассчитывать
http://www.tspu.tula.ru/ivt/old_site/um ... /1009.html
Это первое что попалось в интернете при поиске TextRect.
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
viewtopic.php?f=5&t=5220&st=0&sk=t&sd=a&start=15#p38498 - так вот жеж... Всё переносится... По-крайней мере должно... Блин, хочу поставить лазарус дома ^_^
Я пока остановился на:
Не центрует по вертикали, немного видно кайму от Rectangle, но работает.
Может позже вернусь... А пока займусь глюкамы в свое программе, с OpenOffice вляпался... Ё...
Код: Выделить всё
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;
Не центрует по вертикали, немного видно кайму от Rectangle, но работает.
Может позже вернусь... А пока займусь глюкамы в свое программе, с OpenOffice вляпался... Ё...
Мой пример кода для раскраски на полосы
Почемуто DefaultDrawColumnCell в Delphi работает , а в Lazarus нет
Почемуто DefaultDrawColumnCell в Delphi работает , а в Lazarus нет
Код: Выделить всё
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 ); Мне нужно ввести данные. Делаю как в примере:
Данные чудесно вводятся, но потом пропадают (если походить по Grid).
Пробовал сказать: DBSomeName.Post; - ругается говорит мол ничего не менялось...
Сказать ей: DBSomeName.Modified := true; не разрешает...
Что нужно ей сказать чтобы запомнила изменения?
Или что ей нужно сказать чтобы она поняла что изменения есть?
Заранее всем благодарен за ответ.
.
Добавлено спустя 52 минуты 56 секунд:
Всё нашёл.
Нужно делать так:
Извините что отвлёк от более важных дел.
.
Код: Выделить всё
DBGridSomeName.DataSource.DataSet.fieldbyname('fieldName').Text := '1 привет!'; // это TDBGrid // работает данные вносятся
DBSomeName.FieldByName('fieldName').Text := '2 привет!'; // это TDbf; // работает данные вносятся
Данные чудесно вводятся, но потом пропадают (если походить по Grid).
Пробовал сказать: DBSomeName.Post; - ругается говорит мол ничего не менялось...
Сказать ей: DBSomeName.Modified := true; не разрешает...
Заранее всем благодарен за ответ.
.
Добавлено спустя 52 минуты 56 секунд:
Всё нашёл.
Нужно делать так:
Код: Выделить всё
DBSomeName.Edit;
DBSomeName.FieldByName('fieldName').Text := 'привет!';
DBSomeName.Post;
Извините что отвлёк от более важных дел.
.
