Вверх ↑
Администрация
Ответов: 15294
Рейтинг: 1518
#1: 2008-12-22 13:50:33 ЛС | профиль | цитата
nesco писал(а):
означает $04 и есть ли другие значения

ManFlags это битовая маска установленных менеджеров(по порядку следования в списке св-тв) - мог бы кстате и в codegen посмотреть

nesco писал(а):
Да он в Init изначально был и никоим образом к BoxDrawManager отношения не имел.

как же так не имел? А это тогда что:
nesco писал(а):
или аналогичное, вызывает OnMeasureItem для исходных строк, а конкретные свойства менеджеров еще не определены и к ихним полям нет доступа для расчета высоты пункта.

я вижу совершенно прямое отношение: Init -> SetStrings -> OnMeasureItem -> _prop_BoxDrawManager(use). Я же говорил о:
_prop_BoxDrawManager(set) -> SetStrings -> OnMeasureItem -> _prop_BoxDrawManager(use) - не вижу никаких принципиальных ограничений для такой перестановки вызовов

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

кстате говоря, если _OnMeasureItem вызывается для каждого изменения списка(а может и для отрисовки?), то для большого количества пунктов эта операция будет очень не продуктивной. Правильнее надо расчет высоты переносить в _prop_IconsManager(set), а тут отдавать уже готовый вариант:

#pas
procedure THIComboBox.SetIconsManager;
begin
ItemHeight := max((value.imgsz + _prop_BoxDrawManager.AddSize * 2), PControl(Sender).Canvas.TextExtent('W').cy;
end;

function THIComboBox._OnMeasureItem;
begin
Result:= ItemHeight;
end;
и все будет прекрасно и быстро работать
карма: 26
0