Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Как отследить изменение размеров столбцов в TDBGrid   Найти похожие ветки 

 
menart ©   (2006-06-01 19:59) [0]

Cобственно сабж!
Заранее спасибо за помощь


 
sniknik ©   (2006-06-01 22:24) [1]

можно так. поскольку события такого нет, то его придется сделать...
для начала скопируй к себе в папку файл  DBGrids.Pas, не забудь рядом лежащий DBGrids.res, после подключи его к проекту (кнопка + на палитре). теперь можно его менять ...
ищеш описание TColumn, добавляеш пару строк (выделено жирным)

TColumn = class(TCollectionItem)
 private
   FField: TField;
   ...
   FStored: Boolean;
   FOnColumnResize: TNotifyEvent;
   procedure FontChanged(Sender: TObject);
   ...
   property  Showing: Boolean read GetShowing;
   property OnColumnResize: TNotifyEvent read FOnColumnResize write FOnColumnResize;
 published
   ...
 end;


в процедуре SetWidth одну

procedure TColumn.SetWidth(Value: Integer);
var
 Grid: TCustomDBGrid;
 TM: TTextMetric;
 DoSetWidth: Boolean;
begin
 DoSetWidth := IsStored;
 ...
   Changed(False);
   if Assigned(FOnColumnResize) then FOnColumnResize(Self);
 end;
end;



использовать

 TForm1 = class(TForm)
   DBGrid1: TDBGrid;
   ....
   procedure FormCreate(Sender: TObject);
 private
   procedure ColumnResize(Sender: TObject);
 public
 end;

procedure TForm1.ColumnResize(Sender: TObject);
begin
 with TColumn(Sender) do
   Label1.Caption:= Title.Caption + " : " + IntToStr(Width);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 DBGrid1.Columns[0].OnColumnResize:= ColumnResize; //какие нужны
 ...
 //DBGrid1.Columns[n].OnColumnResize:= ColumnResize;
end;


все. но лучше так не делать... ;) лучше поменять причину, ту отчего этого захотелось.


 
MsGuns ©   (2006-06-02 13:17) [2]

>все. но лучше так не делать... ;) лучше поменять причину, ту отчего этого захотелось.

Слова не мальчика, но мужа
;)


 
menart ©   (2006-06-03 16:58) [3]

СПАСИБО БОЛЬШОЕ!

> все. но лучше так не делать... ;) лучше поменять причину,
>  ту отчего этого захотелось.


А как лучше сделать, чтобы запомнить на сколько изменился размер колонки, что бы потом установить такой же при обращении к этой же таблице?


 
sniknik ©   (2006-06-03 17:40) [4]

зачем вообще в таком случае отслеживать изменения в процессе? у тебя же есть место где начало/конец "обращения"? не знаю что ты под этим подразумеваеш, но допустим открытие закрытие формы на которой лежит грид, вот там и запоминай/восстанавливай размер всех, неважно менялся он или нет, будет гораздо менее напряжно для системы чем отслеживать каждое изменение каждой колонки юзером.

или сделать сохранение настроек кнопкой, захотел сохранить изменения - нажал, нет останется как было.


 
menart ©   (2006-06-03 20:50) [5]

В принципе сейчас так и делаю, просто думал что так будет правильнее.
Еще раз спасибо за совет



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
2-1153989869
crazy_corpse
2006-07-27 12:44
2006.08.13
Opera вместо IE


8-1139918799
MatrixSh!t
2006-02-14 15:06
2006.08.13
OpenGL или DirectX


9-1132953808
Chuvak
2005-11-26 00:23
2006.08.13
OpenGL и много объектов


2-1153984203
Crazy monkey
2006-07-27 11:10
2006.08.13
Вопрос по Access


2-1153734378
Михаил И.
2006-07-24 13:46
2006.08.13
ListSource