Вверх ↑
Ответов: 5446
Рейтинг: 323
#1: 2007-04-21 17:33:06 ЛС | профиль | цитата
Galkov, я сюда фиксы выкладываю исключительно с целью спросить - мона или нет? Ибо был разговор некоторое время назад, что дескать файлы на SVN надо только с согласия тебя/Дилмы трогать...



Пока не забыл: ещё фиксы. По сути, обёртка над LB_SETITEMDATA+LB_GETITEMDATA.

Часть 1. Декларация:

    procedure _val_arr_set(var Item:TData; var Val:TData);
function _val_arr_get(Var Item:TData; var Val:TData):boolean;
function _val_arr_count:integer;
//...
procedure _var_ValueArray(var _Data:TData; Index:word);

Часть 2. Имплементация

procedure THIListBox._val_arr_set;
var ind:integer;
begin
ind := ToIntIndex(Item);
if(ind >=0 )and(ind < Control.Count)then
Control.Perform(LB_SETITEMDATA, ind, ReadInteger(Val, NULL, 0));
end;

function THIListBox._val_arr_get;
var ind:integer;
begin
ind := ToIntIndex(Item);
Result := (ind >=0 )and(ind < Control.Count);
if Result then
dtInteger(Val,integer(Control.Perform(LB_GETITEMDATA, ind, 0)));
end;

function THIListBox._val_arr_count;
var i:smallint;
begin
Result := Control.Count;
end;

procedure THIListBox._var_ValueArray;
begin
if ValArr = nil then
ValArr := CreateArray(_val_arr_set,_val_arr_get,_val_arr_count,nil);
dtArray(_Data,ValArr);
end;

Это черновой вариант кода. Что хотел бы сделать, да не умею :
* По doAdd принимать не только строку, но и MT-пару [строка; dword для массива Value]
* По onClick соответственно выдавать такую же МТ-пару
карма: 1

0