Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15295
Рейтинг: 1519
#61: 2010-03-24 11:48:06 ЛС | профиль | цитата
nesco писал(а):
По крайней мере, не удалось его вызвать дважды на одном пункте

nesco, утверждалось вовсе не это, а
Dilma писал(а):
при обычном Click на любом пункте, отличном от предыдущего.

карма: 27
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#62: 2010-03-24 11:57:47 ЛС | профиль | цитата
Да это мы и проверяли, клацали по всем пунктам, и отличным от предыдущего и по тому же самому. Событие onClick, после возврата старого кода, выдается, в любом случае, только одно, но всегда, а не только в случае смены строки, как выдает onSelect
------------ Дoбавленo в 12.14:
Если я правильно понял защиту от второго срабатывания, то должно получиться что-то типа вот этого



procedure THIStringTable._OnClick;
begin
if (Control.LVCurItem <> -1) and not fSelect then
_hi_OnEvent(_event_onClick,Control.LVCurItem);
fSelect := false;
end;

procedure THIStringTable._OnSelState;
begin
//_debug(newstate);
if newstate = 3 then
begin
fSelect := true;
_hi_OnEvent(_event_onClick,IdxFrom);
_hi_OnEvent(_event_onSelect,IdxFrom);
end;
end;

И точно ли надо ставить защиту от второго срабатывания, если его нет
------------ Дoбавленo в 12.22:
Dilma, плхоже, что мы недопоняли друг друга. Народ хочет (в принципе, правильно), что бы onClik возникал всегда, независимо от того какой пункт выбран, пусть и тот же самый, а вот onSelect должен возникать только при смене пункта. В предыдущем релизе, onClick срабатывал как onSelect, только при смене пункта, и это не устраивало, так как для получения события с того же пункта приходилось использовать события onMouse и нижние переменные.
Мне же показалось, что ты говорил про получении двух событий onClick с одного пункта при одном нажатии (двоение). И почему было принят решение перейти на onSelect в качестве onClick, мне непонятно, особенно, если у него нет двоения
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#63: 2010-03-24 13:21:20 ЛС | профиль | цитата
nesco писал(а):
то должно получиться что-то типа вот этого

в таком исполнение onClick не будет срабатывать, если ранее текущий пункт изменялся с помощью клавиатуры. Вот так верно:



#pas
procedure THIStringTable._OnClick;
begin
if (Control.LVCurItem <> -1)and(sel = Control.LVCurItem) then
_hi_OnEvent(_event_onClick,Control.LVCurItem)
end;

procedure THIStringTable._onMouseDown;
begin
sel := Control.LVCurItem;
inherited;
end;
карма: 27
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#64: 2010-03-24 13:27:20 ЛС | профиль | цитата
Ага, вот теперь понятно, сейчас проверим и поправим

карма: 22

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#65: 2010-03-24 13:49:32 ЛС | профиль | цитата
У меня твой код выдает только при втором нажатии на пункте, при первом нажатии onClick не выдается вообще. Поставил дебаг -- sel и Control.LVCurItem совпадают только при втором клике, при первом клике sel выдает индекс предыдущей строки. Откуда получается, что, все же, выдается на выход только одно событие и нет двоения
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#66: 2010-03-24 14:02:14 ЛС | профиль | цитата
nesco писал(а):
У меня твой код выдает только при втором нажатии на пункте, при первом нажатии onClick не выдается вообще

nesco, и как такое может быть, если при первом нажатии срабатывает _OnSelState ?
карма: 27
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#67: 2010-03-24 14:04:46 ЛС | профиль | цитата
Dilma писал(а):
и как такое может быть, если при первом нажатии срабатывает _OnSelState ?

Тьфу, но так бы и сказал, что _onSelectState оставить надо, а то я понял буквально твой код. В таком случае, должно сработать
карма: 22

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#68: 2010-03-24 14:40:00 ЛС | профиль | цитата
Исправил. Все работает
карма: 22

1
Голосовали:Konst
Ответов: 16884
Рейтинг: 1239
#69: 2010-03-25 15:43:48 ЛС | профиль | цитата
Леонид,[flood]
Леонид писал(а):
вот что мне импонирует в nesco - он не упёртый
он не упертый - он думающий.
Правда думающий часто после громкого заявления
nesco писал(а):
Исправлено, все равно не будет, правка требуется на уровне KOL.
а у меня, почему-то , после громких заявлений типа виноват Билл, Kol, SQLite и т.д., внутренний голос начинает нашептывать: "Осторожно! Очередная лапша на уши."
Все хорошо, что хорошо кончается.
nesco писал(а):
Исправил. Все работает
Работает.[/flood]



карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Администрация
Ответов: 15295
Рейтинг: 1519
#70: 2010-03-25 20:32:54 ЛС | профиль | цитата
Tad, вообще-то тут:
nesco писал(а):
Исправлено, все равно не будет, правка требуется на уровне KOL.

речь шла о работе метода OnSelState, исправлять который никто не собирался и не будет. А вот тут:
nesco писал(а):
Исправил. Все работает

речь идет о костыле в элементе StringTable, оставленном только из соображений совместимости (если об этом вообще уместно говорить спустя два года) с ранними версиями элемента. От вас, как от человека понимающего код, слышать подобные выводы в отношении коллег крайне неприятно.
карма: 27
0
70
Сообщение
...
Прикрепленные файлы
(файлы не залиты)