Вверх ↑
Этот топик читают: Гость
Ответов: 2265
Рейтинг: 676
#76: 2024-12-13 10:35:26 ЛС | профиль | цитата
nesco, если застрянешь, то выкладывай, может я чем смогу помочь.
карма: 11

0
Разработчик
Ответов: 26148
Рейтинг: 2126
#77: 2024-12-14 03:52:28 ЛС | профиль | цитата
Вроде все получилось. На днях выложу результат. Еще немного потестирую.
Метод действительно получился универсальным. Я сделал так, что теперь ячейка при выборе всегда становится полностью видимой, даже, если ты кликнул на ее кончик. Скроллинг тоже прекрасно работает, но пришлось отказаться от KillFocus-a. Ячейка уплывает за экран и появляется целиком потом.

Редактировалось 3 раз(а), последний 2024-12-14 03:57:59
карма: 22

0
Разработчик
Ответов: 26148
Рейтинг: 2126
#78: 2024-12-15 13:39:15 ЛС | профиль | цитата
sla8a, как ты думаешь о внесении Патча в основу? Будем дальше тестировать или уже хватит?
карма: 22

0
Ответов: 2265
Рейтинг: 676
#79: 2024-12-15 17:33:23 ЛС | профиль | цитата
nesco, Hiasm всегда был и остаётся в стадии тестирования и доработки. Да желательно обеспечить стабильность работы, но и долгое тестирование как по мне притормаживает внедрение новых идей. Думаю внесение только ускорит тестирование. Но последнее слово за тобой как за автором.
карма: 11

0
Разработчик
Ответов: 26148
Рейтинг: 2126
#80: 2024-12-15 18:49:22 ЛС | профиль | цитата
Думаю, будем добавлять к рождеству
Да и тестируется он уже 2 года. Уже кучу чего нашли и исправили. Зато появится ранее недоступный функционал, включая начисто исправленный Hint и возможность создавать подсказки для заголовка таблицы.
Но сначала закончим начатое с MST_UseEditCtrl

Редактировалось 5 раз(а), последний 2024-12-15 18:55:04
карма: 22

0
Разработчик
Ответов: 26148
Рейтинг: 2126
#81: 2024-12-16 00:12:54 ЛС | профиль | цитата
Вот, смотри, что получилось. Пробуй разные сдвиги, показ скроллинга, разные перекрытия и тд. И обнови SVN, там мелкие правки для MTStrTbl
Да, еще, твоя измененная схема в архиве, опирайся на нее.

Редактировалось 2 раз(а), последний 2024-12-16 00:58:45
карма: 22

0
файлы: 1hiMST_UseEditCtrl_test2.zip [9.1KB] [17]
Ответов: 2265
Рейтинг: 676
#82: 2024-12-16 09:36:04 ЛС | профиль | цитата
nesco, на данный момент тестирование проходит успешно, продолжу, если что замечу напишу.
карма: 11

0
Ответов: 2265
Рейтинг: 676
#83: 2024-12-17 14:16:28 ЛС | профиль | цитата
nesco, а что только ширину выдает при изменении ширины столбца? Эти данные без индекса столбца бесполезны.
Add(MainForm,2953706,301,154)
{
Position=1
}
Add(MTStrTbl,7658487,301,203)
{
Left=300
Top=200
Align=5
Font=[MS Sans Serif,12,0,0,1]
Columns=#1:1|1:2|1:3|
Grid=0
Point(onChangeWidth)
link(onChangeWidth,4071972:doEvent,[])
}
Add(Label,192224,497,231)
{
Left=405
Top=265
}
Add(Debug,4071972,413,231)
{
WEName="?[index][width]?"
VDName=""
link(onEvent,192224:doText,[])
AddHint(-42,-48,89,13,WEName)
}

Редактировалось 1 раз(а), последний 2024-12-17 14:17:30
карма: 11

0
Разработчик
Ответов: 26148
Рейтинг: 2126
#84: 2024-12-17 14:42:49 ЛС | профиль | цитата
sla8a писал(а):
а что только ширину выдает при изменении ширины столбца?

А хз. Я даже не помню, на кой черт ее добавил вообще, и где она используется. Я ни в одном примере ее не нашел.
sla8a писал(а):
Эти данные без индекса столбца бесполезны

Ну, надо, так добавим.

Редактировалось 1 раз(а), последний 2024-12-17 14:44:20
карма: 22

0
Ответов: 2265
Рейтинг: 676
#85: 2024-12-17 14:45:38 ЛС | профиль | цитата
Почему-то отключено:

 HDN_ITEMCHANGINGA, HDN_ITEMCHANGINGW:
_hi_onEvent(_event_onChangeWidth, Sender.LVColWidth[HD_NOTIFY(Pointer(Msg.LParam)^).Item]);
HDN_ENDTRACKA, HDN_ENDTRACKW:
begin
ind := HD_NOTIFY(Pointer(Msg.LParam)^).Item;
s := Sender.LVColText[ind] + _ColDlm +
int2str(PHDNotify(PNMHEADER(Msg.LParam))^.pItem^.cxy) + _ColDlm +
int2str(Sender.LVColImage[ind]) + _ColDlm +
int2str(ord(Sender.LVColAlign[ind]));
CList.Items[ind] := InitColStr(s);
dtInteger(di, ind);
dtInteger(dw, PHDNotify(PNMHEADER(Msg.LParam))^.pItem^.cxy);
di.ldata := @dw;
// _hi_onEvent_(_event_onChangeWidth, di);
карма: 11

0
Разработчик
Ответов: 26148
Рейтинг: 2126
#86: 2024-12-17 14:53:46 ЛС | профиль | цитата
Там этот метод перенесен на начало захвата, а не на окончание. Я хз почему.
Закрой верхний вывод и оставь нижний, и посмотри, что получится

Редактировалось 1 раз(а), последний 2024-12-17 14:54:54
карма: 22

0
Ответов: 2265
Рейтинг: 676
#87: 2024-12-17 14:59:22 ЛС | профиль | цитата
nesco писал(а):
Закрой верхний вывод и оставь нижний, и посмотри, что получится

Так работает нормально и индекс и ширину выдает как раз после отпускании. Вот только зачем отключал?
карма: 11

0
Разработчик
Ответов: 26148
Рейтинг: 2126
#88: 2024-12-17 15:08:22 ЛС | профиль | цитата
sla8a писал(а):
Вот только зачем отключал?

Я же говорю -- хз.
Там еще какие-то артефакты лезут при отрисовке. Пока сделай так
        HDN_ENDTRACKA, HDN_ENDTRACKW:
begin
InvalidateRect(Sender.Handle, nil, false);
ind := HD_NOTIFY(Pointer(Msg.LParam)^).Item;
s := Sender.LVColText[ind] + _ColDlm +
int2str(PHDNotify(PNMHEADER(Msg.LParam))^.pItem^.cxy) + _ColDlm +
int2str(Sender.LVColImage[ind]) + _ColDlm +
int2str(ord(Sender.LVColAlign[ind]));
CList.Items[ind] := InitColStr(s);
dtInteger(di, ind);
dtInteger(dw, PHDNotify(PNMHEADER(Msg.LParam))^.pItem^.cxy);
di.ldata := @dw;
_hi_onEvent_(_event_onChangeWidth, di);
end;

--- Добавлено в 2024-12-17 15:19:17

Если что, то тисни, когда добавить исправление

Редактировалось 2 раз(а), последний 2024-12-17 15:19:17
карма: 22

0
Разработчик
Ответов: 26148
Рейтинг: 2126
#89: 2024-12-19 03:17:05 ЛС | профиль | цитата
Добавил вывод в поток предыдущую ширину столбца
        HDN_ENDTRACKA, HDN_ENDTRACKW:
begin
InvalidateRect(Sender.Handle, nil, false);
ind := HD_NOTIFY(Pointer(Msg.LParam)^).Item;
s := Sender.LVColText[ind] + _ColDlm +
int2str(PHDNotify(PNMHEADER(Msg.LParam))^.pItem^.cxy) + _ColDlm +
int2str(Sender.LVColImage[ind]) + _ColDlm +
int2str(ord(Sender.LVColAlign[ind]));
CList.Items[ind] := InitColStr(s);
dtInteger(di, ind);
dtInteger(dw, PHDNotify(PNMHEADER(Msg.LParam))^.pItem^.cxy);
dtInteger(dow, Sender.LVColWidth[ind]);
di.ldata := @dow;
dow.ldata := @dw;
_hi_onEvent_(_event_onChangeWidth, di);
end;
Теперь выводится 3 аргумента -- ARG(ColIdx, PreviousWidth, ChangeWidth)

Редактировалось 1 раз(а), последний 2024-12-19 03:17:32
карма: 22

0
Ответов: 2265
Рейтинг: 676
#90: 2024-12-19 09:56:12 ЛС | профиль | цитата
nesco писал(а):
ARG(ColIdx, PreviousWidth, ChangeWidth)

Вот категорически не согласен! Поменять местами нужно: ARG(ColIdx, ChangeWidth, PreviousWidth)
Доводы:
-Сохранится совместимость
-PreviousWidth менее важна чем ChangeWidth и будет не так часто использоваться
карма: 11

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