Вверх ↑
Ответов: 1926
Рейтинг: 172
#1: 2019-12-18 22:47:35 ЛС | профиль | цитата
Это стандартный пример Elements\delphi\Example\Forms\StringTableMT\As_TabGrid.sha.
1. Выбираем ячейку, нажимаем Enter - поле встаёт в этой ячейке.
2. Щёлкаем ЛКМ на свободном месте таблицы, а затем стрелками выбираем строку и даже ячейку.
3. Нажимаем Enter - поле где-то вверху.
GIF

Времени искать ошибку в коде таблицы не было, я решил просто заблокировать Enter и F2, оставив для редактирования только мышь. Вот этот IC подключить к PHandle таблицы:
Add(InlineCode,4748460,539,189)
{
DataPoints=#9:dtPHandle|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,messages,windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|23: FOldMes:TOnMessage;|61: function _onMess(var Msg:TMsg; var Rslt:Integer):Boolean;|19: procedure Work;|9: public|22: onPaint:THI_Event;|24: dtPHandle:THI_Event;|23: constructor Create;|5: end;|0:|14:implementation|0:|31:constructor THiAsmClass.Create;|5:begin|18: inherited Create;|15: InitAdd(Work);|4:end;|0:|27:procedure THiAsmClass.Work;|15:var c:PControl;|5:begin|42: c := PControl(ToIntegerEvent(dtPHandle));|30: if not assigned(c) then exit;|25: FOldMes := c.OnMessage;|24: c.OnMessage := _onMess;|4:end;|0:|29:function THiAsmClass._onMess;|5:begin|20: case Msg.message of|19: WM_KEYDOWN: begin|21: Case Msg.WParam of|70: VK_RETURN,VK_F2: exit; //Чтобы по Enter и F2 событие не выдавалось|6: end|5: end|5: end;|43: Result := _hi_OnMessage(FOldMes,Msg,Rslt);|4:end;|0:|4:end.|
}

Может, nesco или Nic посмотрят чего, поправят, пока - костыль.
карма: 9
0
файлы: 1As_TabGrid.gif [31KB] [1087]
Редактировалось 1 раз(а), последний 2019-12-18 22:47:54