« ☆ListBoxのDrawItem No1 | トップページ | ☆フォントの取得・描画 »

☆ListBoxのDrawItem No2

前回は、ListBoxのバグをアニメーション表示を無効にすることで回避しましたが、フォームのMouseWheelDown、 MouseWheelUpを使って、次のような処理でも回避できます。
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
const
  Value = 1;
begin
  if (ActiveControl is TListBox) and
    ((ActiveControl as TListBox) = ListBox1) then
  begin
    ListBox1.TopIndex := ListBox1.TopIndex + Value;
    Handled := True;
  end;
end;

procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
const
  Value = -1;
begin
  if (ActiveControl is TListBox) and
    ((ActiveControl as TListBox) = ListBox1) then
  begin
    ListBox1.TopIndex := ListBox1.TopIndex + Value;
    Handled := True;
  end;
end;

Valueの値を変えて、スクロールの移動量も変えたりするようにプログラムを修正することもできますね。

|

« ☆ListBoxのDrawItem No1 | トップページ | ☆フォントの取得・描画 »