Вверх ↑
Этот топик читают: Гость
Ответов: 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 посмотрят чего, поправят, пока - костыль.

Редактировалось 1 раз(а), последний 2019-12-18 22:47:54
карма: 9
0
файлы: 1As_TabGrid.gif [31KB] [1077]
Разработчик
Ответов: 26113
Рейтинг: 2126
#2: 2019-12-19 10:47:34 ЛС | профиль | цитата
3042 писал(а):
StringTableMT

Этот компонент не поддерживается. Те используется AsIs.

--- Добавлено в 2019-12-19 10:50:07
PS Мне никак не удалось повторить ошибку (Win10 x64 1909). Возможно, что это недоработка схемы, а не самого компонента. Позиционирование элементов производится в схеме, а не в компоненте.

Редактировалось 3 раз(а), последний 2019-12-19 10:55:03
карма: 22

0
Ответов: 1926
Рейтинг: 172
#3: 2019-12-19 20:32:23 ЛС | профиль | цитата
А какой поддерживается? MTStrTbl?

nesco писал(а):
Позиционирование элементов производится в схеме, а не в компоненте.

Видимо, в каких-то ситуациях неверно выдаются Left,Top и пр.
карма: 9
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#4: 2019-12-19 23:25:04 ЛС | профиль | цитата
3042 писал(а):
А какой поддерживается? MTStrTbl?

Да, но там тоже есть такая ошибка. Этот баг происходит при переходе через пустое поле. Попробуй заменить код на вот этот


         WM_LBUTTONDOWN: begin
Pt:= TMouseDownPt(Msg.lParam);
HTI.pt.x := Pt.X;
HTI.pt.y := Pt.Y;
Sender.Perform( LVM_SUBITEMHITTEST, 0, Integer( @HTI ) );
if HTI.iItem <> -1 then
begin
NewLine := HTI.iItem;
NewCurIdx := HTI.iSubItem;
end;
EscCell(NewLine, fControl);
end;
карма: 22

1
Голосовали:3042
Ответов: 1926
Рейтинг: 172
#5: 2019-12-20 06:10:55 ЛС | профиль | цитата
nesco, всё заработало. Обновление StringTableMT на SVN будет?

nesco писал(а):
там тоже есть такая ошибка

Подтверждаю. Тоже неплохо бы обновить.

Редактировалось 1 раз(а), последний 2019-12-20 06:11:13
карма: 9
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#6: 2019-12-20 12:05:28 ЛС | профиль | цитата
3042 писал(а):
Обновление StringTableMT на SVN будет?

Я бы вообще не стал трогать этот компонент. Не зря же я его убрал из вкладок, те просто так он недоступен, зачем пытаться откопать и воскресить мамонта?

Редактировалось 2 раз(а), последний 2019-12-20 12:22:37
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#7: 2019-12-20 12:30:56 ЛС | профиль | цитата
nesco, а MTStrTbl ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#8: 2019-12-20 12:34:33 ЛС | профиль | цитата
Tad писал(а):
а MTStrTbl ?

Да, все уже пофиксил на SVN.
карма: 22

0
Ответов: 1926
Рейтинг: 172
#9: 2019-12-20 13:41:38 ЛС | профиль | цитата
nesco писал(а):
Я бы вообще не стал трогать этот компонент.

nesco, он у меня используется в нескольких проектах, переделывать их на MTStrTbl - это очень затратно. Может, обновишь ещё разок этот мохнатый StringTableMT, там всего пару строчек же?
карма: 9
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#10: 2019-12-20 14:18:57 ЛС | профиль | цитата
3042 писал(а):
Может, обновишь ещё разок этот мохнатый StringTableMT, там всего пару строчек же?

Ты предыдущий пост читал?
nesco писал(а):
все уже пофиксил на SVN

А то я написал на будущее, что бы не выковыривали то, что должно уйти в забвение.
карма: 22

0
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)