Первое это то что onMouseUp стараюсь не использовать в таблице, по той причине что всплывающее меню можно вывести, только если нажать курсором на строку и немного продвинуть и только потом отпустить. Только так получится событие onMouseUp.
Попробуй вывести всплывающее меню нажав на строки:
Add(MainForm,2075368,539,322)
{
Width=494
Height=382
Position=1
link(onCreate,3556725:doEnum,[])
}
Add(MTStrTbl,11740120,581,413)
{
Left=5
Top=5
Width=470
Height=335
Font=[MS Sans Serif,12,0,0,1]
Name="test"
Columns=#1:№|9:test1=200|10:test2 =200|
IgnoreEmptyField=0
Grid=0
Point(onEmptyFieldClick)
Point(onMouseUp)
link(onEmptyFieldClick,7912398:doEvent,[])
link(onMouseUp,12051947:doEvent,[(625,454)(625,489)])
}
Add(MT_String,6192416,630,329)
{
link(onResult,9361380:doRowAction,[])
}
Add(StrList,6915816,567,280)
{
Strings=#32:1;test string 111;test string 12|32:2;test string 121;test string 22|32:3;test string 131;test string 32|32:4;test string 141;test string 42|32:5;test string 151;test string 52|32:6;test string 161;test string 62|32:7;test string 171;test string 72|32:8;test string 181;test string 82|
}
Add(ArrayEnum,3556725,581,336)
{
link(onItem,6192416:doMT,[])
link(Array,6915816:Array,[])
}
Add(MST_RowAction,9361380,679,329)
{
MSTControl="test"
}
Add(PopupMenu,5547842,693,448)
{
Menu=#3:Add|
}
Add(IndexToChanel,7912398,637,441)
{
link(onEvent2,5547842:doPopupHere,[])
}
Add(PopupMenu,12158859,693,490)
{
Menu=#3:Add|6:Change|6:Delete|
}
Add(IndexToChanel,12051947,637,483)
{
link(onEvent2,12158859:doPopupHere,[])
}
Вот как вариант и onEmptyFieldClick не работает:
WM_LBUTTONUP,WM_MBUTTONUP,WM_RBUTTONUP:
if Control.LVItemAtPos(SmallInt(LoWord(Msg.lParam)),SmallInt(hiWord(Msg.lParam))) = -1 then
begin
if _prop_IgnoreEmptyField then
Result := true;
case Msg.WParam of
1: dtInteger(di,0);
2: dtInteger(di,1);
16: dtInteger(di,2);
else dtInteger(di,-1);
end;
_hi_onEvent_(_event_onEmptyFieldClick, di);
end;
WM_LBUTTONDOWN,WM_MBUTTONDOWN,WM_RBUTTONDOWN,
WM_LBUTTONDBLCLK,WM_MBUTTONDBLCLK,WM_RBUTTONDBLCLK:
if _prop_IgnoreEmptyField and (Control.LVItemAtPos(SmallInt(LoWord(Msg.lParam)),SmallInt(hiWord(Msg.lParam))) = -1) then
Result := true;
Возможно мне не хватает опыта и знаний в этом вопросе. Если знаешь лучший вариант, чтоб заблокировать нажатие, а точнее чтоб строка не потеряла выделение и при этом получить событие, то я только за.