Code:

private

  FListViewOldWndProc: TWndMethod;

  procedure ListViewNewWndProc(var Msg: TMessage);

end;

 

{....}

 

implementation

 

uses

  CommCtrl;

  

procedure TForm1.FormCreate(Sender: TObject);

begin

  //Sichern der ursprunglichen WindowProc der Listview

FListViewOldWndProc := ListView1.WindowProc;

 

  //Subclassing: Umleiten der WindowProc auf unsere eigene Procedur

Listview1.WindowProc := ListViewNewWndProc;

end;

 

procedure TForm1.ListViewNewWndProc(var Msg: TMessage);

var

  hdn: ^THDNotify;

begin

  if Msg.Msg = WM_NOTIFY then

  begin

    hdn := Pointer(Msg.lParam);

    //Abfangen und loschen der HDN_BeginTrack Botschaft

   if (hdn.hdr.code = HDN_BeginTrackW) or (hdn.hdr.code = HDN_BeginTrackA) then

      Msg.Result := 1

    else

      FListViewOldWndProc(Msg);

  end

  // ansonsten Botschaft an die ursprungliche WindowProc weiterreichen

else

     FListViewOldWndProc(Msg);

end;

 

procedure TForm1.FormDestroy(Sender: TObject);

begin

  //vor dem Beenden Original WindowProc wiederherstellen

ListView1.WindowProc := FlistViewOldWndProc;

  FListViewOldWndProc  := nil;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить