function WndHDR(Sender: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;
..
..
..
..
begin
Result := false;
fClass := ThiMTStrTbl(Sender.Tag);
with fClass do
begin
case Msg.message of
//add for ignore clicking on an empty field
WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK,
WM_MBUTTONDOWN, WM_MBUTTONUP, WM_MBUTTONDBLCLK,
WM_RBUTTONDOWN, WM_RBUTTONUP, WM_RBUTTONDBLCLK:
if _prop_IgnoreEmptyField and (Control.LVItemAtPos(SmallInt(LoWord(Msg.lParam)),SmallInt(hiWord(Msg.lParam))) = -1) then
begin
Result := true;
Exit;
end;
//end
Можно добавить свойство:
IgnoreEmptyField=Игнорировать нажатие на пустое поле таблицы|14|1|True,False

Add(MainForm,2953706,112,154)
{
Width=609
Height=396
Position=1
link(onCreate,3556725:doEnum,[])
}
Add(MTStrTbl,303165,434,161)
{
Left=10
Top=10
Width=575
Height=300
Font=[MS Sans Serif,12,0,0,1]
Name="testTable"
Columns=#8:test1=80|9:test2=200|9:test3=200|6:test=0|
NIdxIcon=0
ColorItems=0
Grid=0
SmallIconsManager="iconColumn"
DrawManager="drawTable"
Point(onSelect)
link(onClick,4918033:doEvent,[])
link(onSelect,9004417:doEvent,[])
}
Add(MT_String,6192416,294,161)
{
link(onResult,4870764:doRowAction,[])
}
Add(StrList,6915816,140,98)
{
Strings=#37:0;1;test string 111;test string 12;1;|37:0;2;test string 121;test string 22;2;|37:0;3;test string 131;test string 32;3;|37:0;4;test string 141;test string 42;4;|37:0;5;test string 151;test string 52;5;|37:0;6;test string 161;test string 62;6;|37:0;7;test string 171;test string 72;7;|37:0;8;test string 181;test string 82;8;|
}
Add(ArrayEnum,3556725,154,168)
{
link(onItem,6192416:doMT,[])
link(onEndEnum,14056293:doAdd,[(194,181)(194,258)])
link(Array,6915816:Array,[])
}
Add(MST_RowAction,4870764,343,161)
{
MSTControl="testTable"
}
Add(MST_RowAction,15658638,266,252)
{
Action=5
MSTControl="testTable"
link(onChange,9185103:doSelect,[])
}
Add(MT_AddData,14056293,203,252)
{
link(onAdd,15658638:doRowAction,[])
link(Data1,10227341:Value,[])
link(Data2,1891607:Value,[(216,244)(251,244)])
}
Add(Memory,10227341,203,203)
{
Default=Integer(3)
AddHint(4,-18,21,13,Default)
}
Add(Memory,1891607,245,203)
{
Default=Integer(9)
AddHint(2,-18,21,13,Default)
}
Add(IconsManager,8032623,203,98)
{
Name="iconColumn"
ImgSize=20
Icons=['down'=[ZIP7E04000078DA636060044201010620A9C090C1C2C020C6C0C0A001C44021A008441C041C5818860C602E63FF8F8CC9D12FB1C4E0BFD46663B2F5CBAEB4FAAFB0D3816CFD8AEB9CFFABEDF7254A3FBA7F41587367F07FBDE3B1FFB1C961D3EFFBB4E1BFC7C3EAFF0E378BFF5B5FC90363A3D329FF75F747FE575CEB04F68FD8226D9CFA43DF76609801D20F7203C81FF23B6C7186274F8510AA1B0BD8C066585CCC06B3D131C1F000AA717F5005368318F5D8F483FCE27AAF826CFD41AF5BC16690AB9F14FF0E14F8FF9F890984FFD8A3E203CCC8988505559E8503A60F006B34AD56]]
Point(EndIdxIcons)
Point(ImgSize)
}
Add(Debug,4918033,525,161)
{
WEName="click"
VDName=""
}
Add(Debug,9004417,539,189)
{
WEName="onSelect"
VDName=""
}
Add(Timer,16618968,399,252)
{
Interval=10
Enable=1
link(onTimer,1795852:doCompare,[])
}
Add(If_else,1795852,441,252)
{
Op2=Integer(-1)
link(onTrue,15360455:doEvent1,[])
link(Op1,303165:Index,[])
AddHint(16,-24,24,13,Op2)
}
Add(Message,10971311,546,259)
{
}
Add(Hub,15360455,497,252)
{
link(onEvent1,16618968:doStop,[(523,258)(523,299)(388,299)(388,265)])
link(onEvent2,10971311:doMessage,[])
}
Add(MST_SelectRow,9185103,329,252)
{
MSTControl="testTable"
link(onSelectRow,16618968:doTimer,[])
}
MST_UseEditCtrl правильно отрабатывает при свойстве IgnoreEmptyField = true и клике в пустую область заканчивает редактирование и оставляет выделенным предыдущую строку.

Add(MainForm,2953706,112,154)
{
Width=609
Height=396
Position=1
link(onCreate,3556725:doEnum,[])
}
Add(MTStrTbl,303165,434,161)
{
Left=10
Top=10
Width=575
Height=300
Font=[MS Sans Serif,12,0,0,1]
Name="testTable"
Columns=#8:test1=80|9:test2=200|9:test3=200|6:test=0|
NIdxIcon=0
ColorItems=0
IgnoreEmptyField=0
Grid=0
SmallIconsManager="iconColumn"
DrawManager="drawTable"
Point(onSelect)
link(onClick,4918033:doEvent,[])
link(onSelect,9004417:doEvent,[])
}
Add(MT_String,6192416,294,161)
{
link(onResult,4870764:doRowAction,[])
}
Add(StrList,6915816,140,98)
{
Strings=#37:0;1;test string 111;test string 12;1;|37:0;2;test string 121;test string 22;2;|37:0;3;test string 131;test string 32;3;|37:0;4;test string 141;test string 42;4;|37:0;5;test string 151;test string 52;5;|37:0;6;test string 161;test string 62;6;|37:0;7;test string 171;test string 72;7;|37:0;8;test string 181;test string 82;8;|
}
Add(ArrayEnum,3556725,154,168)
{
link(onItem,6192416:doMT,[])
link(onEndEnum,14056293:doAdd,[(194,181)(194,258)])
link(Array,6915816:Array,[])
}
Add(MST_RowAction,4870764,343,161)
{
MSTControl="testTable"
}
Add(MST_RowAction,15658638,266,252)
{
Action=5
MSTControl="testTable"
link(onChange,9185103:doSelect,[])
}
Add(MT_AddData,14056293,203,252)
{
link(onAdd,15658638:doRowAction,[])
link(Data1,10227341:Value,[])
link(Data2,1891607:Value,[(216,244)(251,244)])
}
Add(Memory,10227341,203,203)
{
Default=Integer(3)
AddHint(4,-18,21,13,Default)
}
Add(Memory,1891607,245,203)
{
Default=Integer(9)
AddHint(2,-18,21,13,Default)
}
Add(IconsManager,8032623,203,98)
{
Name="iconColumn"
ImgSize=20
Icons=['down'=[ZIP7E04000078DA636060044201010620A9C090C1C2C020C6C0C0A001C44021A008441C041C5818860C602E63FF8F8CC9D12FB1C4E0BFD46663B2F5CBAEB4FAAFB0D3816CFD8AEB9CFFABEDF7254A3FBA7F41587367F07FBDE3B1FFB1C961D3EFFBB4E1BFC7C3EAFF0E378BFF5B5FC90363A3D329FF75F747FE575CEB04F68FD8226D9CFA43DF76609801D20F7203C81FF23B6C7186274F8510AA1B0BD8C066585CCC06B3D131C1F000AA717F5005368318F5D8F483FCE27AAF826CFD41AF5BC16690AB9F14FF0E14F8FF9F890984FFD8A3E203CCC8988505559E8503A60F006B34AD56]]
Point(EndIdxIcons)
Point(ImgSize)
}
Add(Debug,4918033,525,161)
{
WEName="click"
VDName=""
}
Add(Debug,9004417,525,189)
{
WEName="onSelect"
VDName=""
}
Add(Timer,16618968,399,252)
{
Interval=10
Enable=1
link(onTimer,1795852:doCompare,[])
}
Add(If_else,1795852,441,252)
{
Op2=Integer(-1)
link(onTrue,15360455:doEvent1,[])
link(Op1,303165:Index,[])
AddHint(16,-24,24,13,Op2)
}
Add(Message,10971311,546,259)
{
}
Add(Hub,15360455,497,252)
{
link(onEvent1,16618968:doStop,[(523,258)(523,299)(388,299)(388,265)])
link(onEvent2,10971311:doMessage,[])
}
Add(MST_SelectRow,9185103,329,252)
{
MSTControl="testTable"
link(onSelectRow,16618968:doTimer,[])
}
Add(MST_UseEditCtrl,6676570,147,427)
{
MSTControl="testTable"
link(onCellSize,13620734:doValue,[(185,433)(185,384)])
link(onEnterCell,87120:doEvent1,[])
link(onVisibleCell,653259:doVisible,[(185,447)(185,468)])
}
Add(MT_MultiData,2622840,238,420)
{
Count=4
Point(Data)
link(onData1,653259:doLeft,[])
link(onData2,653259:doTop,[])
link(Data,13620734:Value,[])
link(onData3,653259:doWidth,[])
link(onData4,653259:doHeight,[])
}
Add(Hub,87120,203,434)
{
OutCount=4
link(onEvent1,653259:doText2,[(225,440)(225,419)])
link(onEvent2,2622840:doSeparateMT,[(231,447)(231,426)])
link(onEvent3,653259:doSetFocus,[])
link(onEvent4,653259:doBringToFront,[])
}
Add(MT_Memory,13620734,238,378)
{
}
Add(Edit,653259,294,406)
{
Left=560
Top=425
Point(doLeft)
Point(doTop)
Point(doWidth)
Point(doHeight)
Point(doSetFocus)
Point(doBringToFront)
Point(doVisible)
link(Str,6676570:Cell,[(300,394)(342,394)(342,496)(174,496)])
}