2

TPanel と TAdvPanel (TMS コンポーネント) の左クリックにも問題があります。設定するDragMode = dmAutomaticと、左クリックが機能しません。右クリックが機能します。

procedure TMain_Form.Panel_Item_01MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
   begin
     { whatever I type here nothing happen, even showmessage wont popup - no effect}
   end;
if Button = mbRight then
   begin
     { here code works fine }
   end;
end;

私には簡単に思えますが...この問題を解決し、左ボタンのクリックで手順を呼び出す方法が見つかりません。みんな、何か考えはありますか?

4

2 に答える 2

4

これで問題は解決したと思います。

TPanel コンポーネントの DragMode を dmAutomatic に設定すると、OnClick イベントをトリガーできないようです。ただし、同じTPanel DragModeをdmManualに設定すると、OnClickでも実行できます。

Panel_Item_01.DragMode := dmManual; を手動で設定した場合でも、OnMouseEnter をほとんど使用せずに問題が解決しました。マウスの左ボタンを認識し、TPanel DragDrop 機能を維持できるようになりました。

完全なコードは次のとおりです。

procedure TMain_Form.Panel_Item_01MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbLeft then
    begin
     Panel_Item_01.DragMode := dmManual;    
     { ..rest of code.. }  
    end;
 if Button = mbRight then
    begin
     Panel_Item_01.DragMode := dmAutomatic;
     { ..rest of code.. }  
    end;
end;

procedure TMain_Form.Panel_Item_01MouseEnter(Sender: TObject);
begin
 Panel_Item_01.DragMode := dmManual;
end;

procedure TMain_Form.Panel_Item_01MouseLeave(Sender: TObject);
begin
 Panel_Item_01.DragMode := dmAutomatic;
end;
于 2013-01-25T09:02:50.823 に答える