Вверх ↑
Администрация
Ответов: 15295
Рейтинг: 1519
#1: 2008-09-24 15:52:38 ЛС | профиль | цитата
nesco, немного дописал IndexManager на предмет динамической обработки индексов во время выполнения программы(идея сделать его именно отдельным менеджером, а не св-ом элемента все же оправдала себя). Пример работы с ним:
code_10058.txt

какие есть соображения: во время операции Write на массиве Indexes(кнопка "to 0") по хорошему наверно стоило бы автоматически вызывать Invalidate на ListBox, что приводит нас к необходимости как-то хранить в самом менеджере списки всех элементов, его использующих. Скажем так:

#pas
TIIndexManager = record
outidx:function(inidx:integer): integer of object;
addControl:procedure (obj:PControl);
removeControl:procedure (obj:PControl);
end;
...
procedure TMyClass.Init;
begin
...
if assigned(_prop_IndexManager) then _prop_IndexManager.AddControl(Control);
...
end;

------------ Дoбавленo:

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

------------ Дoбавленo:

этот артифакт появляется при получение фокуса элементом и исчезает при потере фокуса. При добавление хотя бы одного пункта эффект так же пропадает
карма: 27
0
файлы: 2code_10058.txt [2.3KB] [265], managers_bug.png [4.9KB] [331]