Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 25690
Рейтинг: 2088
#241: 2014-03-25 16:21:51 ЛС | профиль | цитата
37.29.2.89 писал(а):
Скажите, есть ли способ менять состояние чекбокса в MtStrTbl одинарным кликом, а не двойным при использовании FPC?

Это прикол библиотеки KOL для FPC, нужное событие внутри библиотеки действительно выдается после двойного клика.
карма: 20

0
Ответов: 9906
Рейтинг: 351
#242: 2014-03-25 17:44:39 ЛС | профиль | цитата
nesco писал(а):
библиотеки KOL для FPC

Да ладно
карма: 9

0
Ответов: 10
Рейтинг: 2
#243: 2014-03-25 18:13:38 ЛС | профиль | цитата
37.29.2.89 - это я. Спасибо за ответ.
Galkov писал(а):
nesco писал(а)библиотеки KOL для FPC

Да ладно

Эм... Всё же есть ли возможность сделать это по одиночному клику?
[offtop]Извиняюсь, что накопипастил сообщений. Тут можно удалить наверное мой повтор http://forum.hiasm.com/forum.html?q=3&p=267354#p267354[/offtop]
карма: 0

0
Разработчик
Ответов: 25690
Рейтинг: 2088
#244: 2014-03-25 18:25:13 ЛС | профиль | цитата
Galkov писал(а):
Да ладно

Я там ловушку ставил, она отработала только по двойному клику, по одиночному не захотела. Жду от тебя других предложений
карма: 20

0
Ответов: 10
Рейтинг: 2
#245: 2014-03-25 20:27:49 ЛС | профиль | цитата
А правильно ли я понимаю, что распространять программу скомпилированную delphi я не имею права? Изначально я сделал под delphi компилятор, но потом, озаботившись легальностью, переделал под fpc, потому что хотел это выложить в свободный доступ для организаций, подобным нашей. Программа призвана упростить специфические задачи на работе до "выбрал-кликнул-сохранил". Но с двойным кликом - это ставится под сомнение. Жаль, если пропадёт добро.
карма: 0

0
Разработчик
Ответов: 25690
Рейтинг: 2088
#246: 2014-03-25 22:39:54 ЛС | профиль | цитата
laborpago, попробуй поставить вот это FPC компилятор -- http://forum.d2h.ru/forum.html?q=3&p=241099#p241099
карма: 20

1
Голосовали:laborpago
Ответов: 10
Рейтинг: 2
#247: 2014-03-25 23:15:34 ЛС | профиль | цитата
nesco, к сожалению и на нём так же.
Прошу прощения, забыл выставить, собственно, компилятор при сборке Работает с ним по одиночному клику. Спасибо большое.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#248: 2014-03-26 14:31:17 ЛС | профиль | цитата
nesco писал(а):
Я там ловушку ставил, она отработала только по двойному клику, по одиночному не захотела. Жду от тебя других предложений

Не, ну интересное кино получается -- он чего-то где-то ставил, а предложений от меня ждет

Собственно я даже не знаю о каком kol идет речь.
Ну и наконец, "тренироваться" на MTStrTbl -- будут не очень надежные выводы, мягко говоря.
Это закон природы такой: чем компактней эксперимент, тем надежней выводы по его результатам.

Сделай код какой-нибудь на 100-200 строк (в смысле - не более), который по разному работает на разных kol-ах.
Найдем, исправим, и обновим.

Не, ну реально нет желания раскапывать коды MTStrTbl. Ты же в течении нескольких лет по 20 строк кода добавлял туда ежедневно.
Я же тебя знаю
карма: 9

0
Разработчик
Ответов: 25690
Рейтинг: 2088
#249: 2014-03-27 02:16:55 ЛС | профиль | цитата
Galkov писал(а):
Собственно я даже не знаю о каком kol идет речь.

О стандартном KOL под FPC. Самое интересное, что сборка FPC 2.6.2 и KOL 3.21 от Netspirit-а работает корректно. И причем тут тогда компонент MTStrTbl? Попробую еще на исправленном KOL под FPC, может это чего-то даст. А ловушку я вот здесь ставил

function WndProc_LVStateChange( Sender: PControl; var Msg: TMsg; var R: Integer ): Boolean;
var NMOD: PNMLVODStateChange;
NMLV: PNMLISTVIEW;
begin
if Msg.message = WM_NOTIFY then
begin
NMOD := Pointer( Msg.lParam );
NMLV := Pointer( Msg.lParam );
if NMOD.hdr.code = LVN_ODSTATECHANGED then
begin
if Assigned( Sender.OnLVStateChange ) then
Sender.OnLVStateChange( Sender, NMOD.iFrom, NMOD.iTo,
NMOD.uOldState, NMOD.uNewState );
end
else
if NMLV.hdr.code = LVN_ITEMCHANGED then
begin
MsgBox('!!!',1); // ловушка
if Assigned( Sender.OnLVStateChange ) then
Sender.OnLVStateChange( Sender, NMLV.iItem, NMLV.iItem,
NMLV.uOldState, NMLV.uNewState );
end;
end;
Result := FALSE;
end;

------------ Дoбавленo в 02.16:
Сейчас проверил обычную таблицу, включив в ней чеки (и нафига тут писать еще какой-то код)

procedure THIStringTable.Init;
var l:TListViewOptions;
begin
l := [lvoInfoTip, lvoUnderlineHot ];
if _prop_Flat then
include(l,lvoFlatsb);
if _prop_HeaderDragDrop then
include(l,lvoHeaderDragDrop);
include(l, lvoCheckBoxes); // включение чеков


Баг с двойным кликом под FPC остался.

P.S. Правленный KOL под FPC имеет этот же баг.
карма: 20

0
Ответов: 1992
Рейтинг: 634
#250: 2015-07-06 23:55:06 ЛС | профиль | цитата
nesco, вот добавили вы свойство ChangeWidth, а почему не добавить возможность блокировать не все столбцы, а выборочно.
Как это видеться мне:
1. Добавить в FormatStrCol 0 - разрешить изменять ширину, 1 - заблокировано.
2. В MST_ColAction добавить свойство BlockSizing (или както так). Будет в ProperCol записывать 0 или 1 для COL_SIZING.
3. Ну и там где:
#pas
739 if not FChangeWidth then
можно отследить какой столбец блокировать. Вот и иконка готова:
mst_colaction_12.ico
карма: 9

0
файлы: 1mst_colaction_12.ico [1.8KB] [536]
Разработчик
Ответов: 25690
Рейтинг: 2088
#251: 2015-07-07 02:39:46 ЛС | профиль | цитата
sla8a писал(а):
от добавили вы свойство ChangeWidth

Кстати, это не мои доработки, а, ЕМНИП, твои. Я просто вставил их в таблицу.
sla8a писал(а):
Как это видеться мне

Лучше в реализациях, а не на словах
карма: 20

0
Ответов: 1992
Рейтинг: 634
#252: 2015-07-07 15:41:02 ЛС | профиль | цитата
nesco, давайте попутно обсудим следующее. Если в столбцах не используются иконки (ImageColumn = False), то индекс иконки в строке не устанавливается. Если так то уместна строка в функции InitColStr;:
#pas
if (not FImgColumn) or (not Assigned(SmIlist)) then sh := ';//test если нет иконок, то нет и индекса в строке
Так как в коде hiMTStrTbl не одно место где в строку столбца вносят нулевой индекс иконки. Не то чтобы это на что-то могло повлиять, но не логично когда меняешь к примеру название столбца, а при этом изменяется и индекс иконки.
Перед тем как вносить изменения протестируйте вот эту схему:
code_35977.txt
и увидете как изменяется индекс иконки. Данное исправление внесено мной (файлы в архивы), но оно не связано с блокировкой изменения ширины столбцов.

Теперь к блокировки ширины отдельных столбцов. Все изменения и дополнения в pas файлах отмечены //test
Некоторые пояснения:
1. Значение блокировки столбца внес в строку столбца: FormatStrCol - NameCol(ColDelimiter)WidthCol(ColDelimiter)IndexIcon(ColDelimiter)AlignTxtCol(ColDelimiter)BlockSizing.
2. Функция function ThiMTStrTbl.BlockCol; выдает True если изменять ширину запрещено и False если можно.
3. На данный момент если меняется блокировка изменения ширины всех столбцов ChangeWidth, значения для каждого столбца остаются неизменны.
Архив с примером и измененными файлами (+ иконка): Скачать

карма: 9

0
файлы: 2testmst.rar [10.8KB] [318], code_35977.txt [1.5KB] [516]
Разработчик
Ответов: 25690
Рейтинг: 2088
#253: 2015-07-07 19:29:45 ЛС | профиль | цитата
sla8a писал(а):
Значение блокировки столбца внес в строку столбца

А я вот эту строку не трогал бы. BlockSizing -- это не настолько часто используемый функционал, мне кажется, что даже крайне редкий, чтобы его использовать как параметр

sla8a писал(а):
На данный момент если меняется блокировка изменения ширины всех столбцов ChangeWidth, значения для каждого столбца остаются неизменны

А это я вообще не понял

sla8a писал(а):
SmIlist

А почему учитывается только список маленьких иконок
карма: 20

0
Ответов: 1992
Рейтинг: 634
#254: 2015-07-07 22:59:59 ЛС | профиль | цитата
nesco писал(а):
эту строку не трогал бы. BlockSizing -- это не настолько часто используемый функционал
Есть список строк CList в котором каждая строка это параметры столбца. И вот зачем еще отдельно хранить значения блокировки ширины столбца. Да и по поводу крайне редкий, это смотря как кому. Лично мне чаще нужно было блокировка ширины, чем к примеру иконки или выравнивание текста.
nesco писал(а):
А это я вообще не понял
Должны ли значения для каждого столбца сбрасываться в 0 (разблокировать) при изменении свойства ChangeWidth в True и устанавливаться в 1 (заблокировано) при ChangeWidth в False.
nesco писал(а):
А почему учитывается только список маленьких иконок?
В процедуре SetColumns проверяется только SmIlist.
nesco, это как мне видеться с моей колокольни, ваша колокольня выше, посчитаете нужным правьте смело. Врядли в вас или меня кто то тапком бросит, если в таблице будет больше функционала. Главное чтобы ровно работало.
карма: 9

0
Разработчик
Ответов: 25690
Рейтинг: 2088
#255: 2015-07-07 23:57:12 ЛС | профиль | цитата
sla8a писал(а):
Должны ли значения для каждого столбца сбрасываться в 0 (разблокировать) при изменении свойства ChangeWidth в True и устанавливаться в 1 (заблокировано) при ChangeWidth в False.

При ChangeWidth=False, КМК, должно сбрасываться в 0. Хотя, какая разница, ведь в это режиме игнорируется изменение ширины, какая разница, что там будет в параметрах прописано.
sla8a писал(а):
В процедуре SetColumns проверяется только SmIlist.

Тут похоже на мое упущение.
sla8a писал(а):
Есть список строк CList в котором каждая строка это параметры столбца

Тут надо бы не упустить все взаимодействия строк Clist с таблицей.

Идея имеет право на существование, но времени пока нет серьезно проверить. Положу в избранное, как будет время проверю и выложу.

И еще, я заметил баг. Если запустить пример %HiAsm%wElementsDelphiExampleFormsMTStrTblWith_EditCtrl.sha и попробовать изменить ширину столбцов, то получим вылет по RunTime. Раньше такого не было, похоже на баг обработчика событий от столбцов.
карма: 20

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