Форум: "Компоненты";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизКомпонент от 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.02 c