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

Вниз

Компонент от DBGrid, дописать OnColumnMoved   Найти похожие ветки 

 
mmms   (2005-06-15 10:48) [0]

Здравствуйте!
Помогите плз написать потомка DBGrid, с переопределением одного лишь события - ColumnMoved, на запрет перемещения колонок. Т.е. Сейчас для каждого своего DBGrid в OnColumnMoved пишу:

procedure TForm1.DBGrid1ColumnMoved(Sender: TObject; FromIndex,
 ToIndex: Integer);
begin
 (Sender as TDBGrid).Columns[ToIndex].Index:=FromIndex;
end;



на каждой форме это писать не удобно, кроме этого отрабатываю проц. по раскраске его, но раскраску я бы сам доделал, по аналогии с OnColumnMoved.

Интересует, в частности, что написать в компаненте:

constructor TDBGridR.Create(AOwner: TComponent);
begin
 inherited create(AOwner);
...........
end;


Или как "подправить" OnColumnMoved?

Очень бы хотелось создать потомка уже со своими настройками. :) Заранее благодарю.


 
mmms   (2005-06-15 11:05) [1]

Т.е. перекрыть событие ColumnMoved, по русски сказать. Перерыл кучу компанентов с диска D5, перекрытие события не мог найти, может ищу не так, мастера, направте в правильное русло, не обязательно код от и до, просто, как перекрыть стандартное событие. Например, хочу добавить в OnDblClick в компаненте - ShowMessage("");, а потом чтобы выполнялся стандартный OnDblClick.


 
-=XP=- ©   (2005-06-15 12:32) [2]

unit MyDBGrid;

interface

uses
 DBGrids;

type
 TMyDBGrid = class(TDBGrid)
 protected
   procedure ColumnMoved(FromIndex, ToIndex: Longint); override;
   procedure DblClick; override;
 end;

procedure Register;

implementation

uses
 Classes;

procedure Register;
begin
 RegisterComponents("Data Controls", [TMyDBGrid]);
end;

procedure TMyDBGrid.ColumnMoved(FromIndex, ToIndex: Longint);
begin
 // Ваши действия
end;

procedure TMyDBGrid.DblClick;
begin
 // Ваши действия
end;

end.


Как-то так.


 
mmms   (2005-06-15 13:21) [3]

-=XP=- ©   (15.06.05 12:32)
Спасибо, понял, дошло, в принципе этого достаточно, сделал ещё в конце
//ваши действия
inherited;

Получается, после своих действий, ещё можно выполнить что написанно в коде, что не в компаненте, а в коде программы, обработчике.


 
-=XP=- ©   (2005-06-15 13:47) [4]

Получается, после своих действий, ещё можно выполнить что написанно в коде, что не в компаненте, а в коде программы, обработчике

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

if <Условие1> then
begin // Вот так
 <Ваши действия>
 inherited
end
else if <Условие2> then
begin // И вот так
 inherited;
 <Ваши действия>
end
else
begin // И даже так
 inherited;
 <Ваши действия>
 inherited
end;


Хозяин - барин. :)


 
mmms   (2005-06-15 15:47) [5]

-=XP=- ©   (15.06.05 13:47)
Ух ты, класс! :) Переобределил тут пару событий, получилось вообще кайф, раньше столько кода уходило на эти дела :) Спасибо!


 
-=XP=- ©   (2005-06-15 16:45) [6]

Спасибо!

Тут впереди меня столько в очереди на "спасибо", начиная с Никлауса Вирта, и заканчивая ребятами из Борланда...

Пожалуйста. :)



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

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

Наверх




Память: 0.48 MB
Время: 0.053 c
1-1133373761
Draught
2005-11-30 21:02
2005.12.25
Приостановка выполнения процедуры, до завершения потока.


2-1134219586
gdaujk
2005-12-10 15:59
2005.12.25
Const - параметры функции


4-1130327381
Хинт
2005-10-26 15:49
2005.12.25
Hook на нажатие клавиш


2-1134145829
ZeFiR
2005-12-09 19:30
2005.12.25
Как "переконвертировать" переменную?


2-1134056722
Grant
2005-12-08 18:45
2005.12.25
Размер формы