iarspider, выкладывай блин
Начнем со стиля "доверяй, но проверяй" (а данном конкретном случае)
По ходу дела скорректируем (методом переговоров), если будет необходимость.
Только первая просьба - хотя бы в два раза по реже, на один элемент, конечно.
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
|
|||
карма: 9 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
iarspider писал(а): * По doAdd принимать не только строку, но и MT-пару [строка; dword для массива Value]
* По onClick соответственно выдавать такую же МТ-пару А в чем проблема, собственно? [size=-2]------ Добавлено в 18:45 Galkov, извини, что влез. Может и не надо бы. |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, проблема собственно в том, как считать MT-поток и как его сформировать. Ты вроде разбирался с этим - так помоги!
[size=-2]------ Добавлено в 22:07 Galkov, я бы и рад, но на выходных не могу никак - тут proxy не дружит с черепахой Хорошо, в понедельник, если не забуду, выложу. |
|||
карма: 1 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
iarspider, тебе нужен dword как dword, или как Real пойдет? И если считаем, куда писать эти данные?
[size=-2]------ Добавлено в 22:22 По onClick считывать надо CurItem, правильно я понял? Если не трудно кинь маленький примерчик, на котором можно будет отработать поток. Компонент, насколько я понял, выше по топику находится. Учти, что в таком случае они будут добавляться синхронно. [size=-2]------ Добавлено в 02:08 iarspider, что-то не нашел твою версию ListBox'a, так что выкладывай (и на SVN тоже нет). |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, коды прицепляю.
1. тебе нужен dword как dword, или как Real пойдет? dword ближе к integer вроде... И если считаем, куда писать эти данные? Вызывать _val_arr_set для Index=CurItem, Value=[2й элемент из MT либо _prop_Default] 2. По onClick считывать надо CurItem, правильно я понял? - Правильно. 3. Примерчик... Ну, примерно такой: code_1337.txt Учти, что в таком случае они будут добавляться синхронно. - Так и задумано. Ещё вот что надо: свойство, содержащее default-значение для записи в ValueArray если по doAdd был только 1 параметр. Это для совместимости. |
|||
карма: 1 |
| ||
файлы: 2 | code_1337.txt [1.6KB] [484], hiListBox_new.zip [4KB] [346] |
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
iarspider, предупреждаю -- для размеров файлов массив не подойдет. Нужен -- int64 или doubledword.
[size=-2]------ Добавлено в 13:20 Да и по сортировке, что делать будем? Индексы списка поменяются не синхронно с индексами массива. |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco,
предупреждаю -- для размеров файлов массив не подойдет ну и фиг с ним, это я просто первый пришедший в голову пример собрал. Можешь вместо размера аттрибуты класть - для них вроде размера хватает? Да и по сортировке, что делать будем? Индексы списка поменяются не синхронно с индексами массива. Какого списка и какого массива? Массив Values - он не нами ведётся, а Вендой (тм), через 2 сообщения LB_GETITEMDATA и LB_SETITEMDATA. Сортировка, вроде же, виндой делается, так что об этом нам и думать не надо - венда сама правильным образом расставит все Values . |
|||
карма: 1 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
iarspider, я заметил, что у тебя ReadInteger в массиве стоит, это -- dword со знаковым битом.
Тебе нужен чистый dword или integer со знаком. Сейчас попробую прицепить данные. [size=-2]------ Добавлено в 13:57 Еще фигня выяснилась, метод Add перехватывает Parent, и что теперь заграбить его себе? [size=-2]------ Добавлено в 13:58 Насчет запросов я понял -- это обращения к одному и тому же списку. [size=-2]------ Добавлено в 14:29 А что будем делать со строкой сверху? |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, так как типа "dword" в хайасме (т.е. в TData) нет, то пусть будет signed integer.
Еще фигня выяснилась, метод Add перехватывает Parent, и что теперь заграбить его себе? Загребаем. Сейчас гляну, какое там сообщение посылается... А что будем делать со строкой сверху?
Давай так: добавим сверху точку для "данных", и с неё при добавлении читаем (соблюдая стандартный порядок чтения ). |
|||
карма: 1 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
iarspider, вот держи проверяй, у меня, вроде, работает. code_1338.txt
[size=-2]------ Добавлено в 16:01 nesco писал(а): добавим сверху точку для "данных" Точку для данных, покак, не сделал. Оставил только Str. Данные для записи по-умолчанию -- DefaultAVal |
|||
карма: 22 |
| ||
файлы: 1 | code_1338.txt [1.6KB] [573] |
Ответов: 5446
Рейтинг: 323
|
|||
nesco, угу, но только если Sort включить - йухня получается... Но это лечится достаточно просто:
-> WinList.pas
-> THiListBox.pas
[size=-2]------ Добавлено в 16:51 Суть: если включен Sort, то нет никакой гарантии, что после добавления строки она встанет на указанное нами место (0 или Control.Count - 1). Это учёл г-н Кладов - у него Control.Add возвращает индекс добавленной строки (который, в свою очередь, возвращает Perform). В кодах от Dilma этот индекс вообще игнорировался |
|||
карма: 1 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
iarspider, надо, чтобы Galkov WinList пофиксил.
[size=-2]------ Добавлено в 17:05 iarspider, надо, чтобы Galkov WinList пофиксил. iarspider писал(а): Это учёл г-н Кладов - у него Control.Add возвращает индекс добавленной строки (который, в свою очередь, возвращает Perform).Это я встречал, но на ум что-то не пришло сразу. Хотя, подсознательно, doSort В голове плавал. [size=-2]------ Добавлено в 20:23 iarspider, вот, добавил точку Value, переделал код под фиксинг (и еще пару условий). На стандартнм WinList'e не проверял. |
|||
карма: 22 |
| ||
файлы: 1 | hiListBox_new_MT2.zip [4.5KB] [423] |
Ответов: 5446
Рейтинг: 323
|
|||
nesco, всё вроде нормально. Огромное спасибо за помощь!
Galkov, вопрос: Как я понимаю, ничего не должно сломаться от того, что теперь THIWinList.Add не procedure, а function? Если возражений против правки WinList не будет, то в обед сделаю commit. |
|||
карма: 1 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
iarspider, единственое, что не так, так это то, что при наличии не нулевого DefaultAVal значение считывается не в начале, а в конце. Это отличается от умолчания в HiAsm'e, где не нулевые свойства считываются в начале.
[size=-2]------ Добавлено в 22:18 Еще все хорошо проверь не с MT-потоками, а с обычными данными. Должна быть полная совместимость. |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
За-commit-ил.
|
|||
карма: 1 |
|