В случае использования сложных заголовков не следует забывать о том, что необходимо контролировать стандартную работу грида с колонками. Например, совершенно естественно, что колонки, которые входят в объединенный блок, не должны передвигаться за его пределы.
В опциях грида объединены запрет/разрешение на передвижение колонок и на изменение их ширины (dbColumnResize). Если запретить перемещать колонки, тогда нельзя будет менять их ширину. В нашем случае это неудачное сочетание будет крайне неудобно с точки зрения пользователя. Введем еще одно поле, которое будет отдельно запрещать перемещение колонок:
TexDBGrid = class(TDBGrid) private ... FAllowColumnMoved: Boolean; ... public Property AllowColumnMoved : Boolean read FAllowColumnMoved write SetAllowColumnMoved; |
function TexDBGrid.BeginColumnDrag(var Origin, Destination: Integer; const MousePt: TPoint): Boolean; Begin Result:=FAllowColumnMoved; // Разрешить передвигать колонки только если это разрешено в настройках: AllowColumnMoved IF Result Then Result:= Inherited BeginColumnDrag(Origin,Destination,MousePt); End; |