Главная страница
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.026 c
15-1153143313
Separator
2006-07-17 17:35
2006.08.13
Текстовый редактор с подсветкой синтаксиса


3-1149402157
SamProf
2006-06-04 10:22
2006.08.13
Как найти запись и изменить


2-1153811873
AlexeyT
2006-07-25 11:17
2006.08.13
Как правильно выводить табуляцию?


3-1149768298
fuckman
2006-06-08 16:04
2006.08.13
Ошибка "Multiple record found, but only one was expected"


15-1152966255
Юрий Зотов
2006-07-15 16:24
2006.08.13
2 stone: Олег, позвони мне, пожалуйста.