![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ширина колонки в DBGRIDEH (...EH!) [D7, MSSQL]
anatolyk © (2004-03-13 11:30:00)Народ, всем привет1
Долбаюсь с прстым, наверное, вопросом. Нужно автоматом устанавливать ширину колонки по значению.
Делаю так:
procedure TForm1.DBGridEh2DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
CellWidth : integer;
HoldColor : TColor;
begin
HoldColor := DBGridEh2.Canvas.Brush.Color;
if not Column.Field.CanModify then begin
DBGridEh2.Canvas.Brush.Color := clBtnFace;
end;
CellWidth:= DBGridEh1.Canvas.TextWidth(Column.Field.AsString);
if Column.Width < CellWidth then
Column.Width := CellWidth;
DBGridEh2.DefaultDrawColumnCell(Rect,DataCol,Column,State);
DBGridEh2.Canvas.Font.Color := HoldColor;
end;
Глючит, однако.
Иногда (например, при прокрутке вправо) Фокус ячейки переходит на соседний (обычно верхний) ряд , указатель на запись остается на месте. Получается, что поля редактируются в чужом ряду и сохраняются в чужой записи.
Иногда при переходе к последней записи (через навигатор), фокус сдвигается только колесом мыши, и то надо сначала смотать вниз, потом - наверх. Ну, и еще там кое-что.
Убираю установку ширины - все работает как надо.
anatolyk (2004-03-13 12:00:00) [1]Ой, простите.
CellWidth:= DBGridEh1.Canvas.TextWidth(Column.Field.AsString);
следует читать
CellWidth:= DBGridEh2.Canvas.TextWidth(Column.Field.AsString);
(грид один, есс-но)