Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > перетаскивание колонок в TDBGrid


Автор: abrekos1 9.1.2007, 12:03
У DBGrid есть свойство dgColumnResize, которое запрещает перетаскивание колонок и изменение их ширины. Так вот, можно ли запретить перетаскивание, но не запрещать изменение ширины?
Нашел в инете решение на Дельфях:

Код

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;


т.е. тут как я понял тупо переопределяется метод BeginColumnDrag. Но Билдер не дает так просто переопределить это метод, поскольку он защищенный(вроде). Может можно это как-то обойти, или существуют другие решения?

Автор: Vyacheslav 9.1.2007, 19:10
Цитата(abrekos1 @  9.1.2007,  12:03 Найти цитируемый пост)
т.е. тут как я понял тупо переопределяется метод BeginColumnDrag. Но Билдер не дает так просто переопределить это метод, поскольку он защищенный(вроде). Может можно это как-то обойти, или существуют другие решения? 

Ну почему же? Builder как раз даст переопределить защищенный метод. Проблема в том, что это уже будет не TDBGrid, а  что-нибудь вроде TMyDBGrid. И если Вы этот новый класс не офрмите в номальный компонент, то про раюоту в дизайн-режиме с ним придется забыть smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)