Как уже упоминалось, вы можете использовать событие OnMouseDown
, чтобы запомнить текущее состояние кнопки мыши для использования в OnClick
, например.
private:
bool LButtonDown;
bool RButtonDown;
...
void __fastcall TForm1::ListBox1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
switch (Button) {
case mbLeft:
LButtonDown = true;
break;
case mbRight:
RButtonDown = true;
break;
}
}
void __fastcall TForm1::ListBox1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
switch (Button) {
case mbLeft:
LButtonDown = false;
break;
case mbRight:
RButtonDown = false;
break;
}
}
void __fastcall TForm::ListBox1Click(TObject *Sender)
{
if (LButtonDown) ...
if (RButtonDown) ...
}
Если вы не хотите делать это, вы можете использовать Win32 API GetKeyState()
или GetAsyncKeyState()
, чтобы запросить текущее состояние левой и левой мыши. правые кнопки, используя коды виртуальных клавиш VK_LBUTTON
и VK_RBUTTON
, например:
void __fastcall TForm::ListBox1Click(TObject *Sender)
{
if (GetKeyState(VK_LBUTTON)) ...
if (GetKeyState(VK_RBUTTON)) ...
}