Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#1: 2008-12-20 21:42:19 ЛС | профиль | цитата
Приятного времени суток господа !

Попробуйте растянуть окошко вправо или вниз
Как себя ведет фон ?
У меня очень не красиво получается (если нужна картинка дайте знать - положу)
code_10994.txt
карма: 1

0
файлы: 1code_10994.txt [296B] [840]
Разработчик
Ответов: 26113
Рейтинг: 2126
#2: 2008-12-21 00:35:46 ЛС | профиль | цитата
-= DriveR =-, сейчас проверить не могу (в последнем релизе SVN, пока, менеджеры не работают), но такое уже было. Нужен KOL от Galkova, а затем кинуть на форму пустой Label со включенной прозрачностью.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#3: 2008-12-21 10:19:22 ЛС | профиль | цитата

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 817
Рейтинг: 52
#4: 2008-12-21 16:53:36 ЛС | профиль | цитата
nesco
Хе.....
Нанайские танци с бубном
В общем все понятно, только я вот чего то поиском не нахожу KOL от Galkova
не подскажите где его взять
карма: 1

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#5: 2008-12-21 16:57:51 ЛС | профиль | цитата
-= DriveR =-, вот здесь почитай

http://hiasm.1gb.ru/forum.html?q=3&p=48807#p48807
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#6: 2008-12-21 17:15:31 правка | ЛС | профиль | цитата


Редактировалось 11 раз(а), последний 2021-06-19 14:27:33
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#7: 2008-12-21 17:18:28 ЛС | профиль | цитата
89-178-168-170.broadband. писал(а):
2279 страниц

Откуда столько, там всего только две
карма: 22

0
Ответов: 817
Рейтинг: 52
#8: 2008-12-21 17:34:31 ЛС | профиль | цитата
Действительно
Просто когда переходишь по ссылке
в глаза бросается страшная цифра
К чему бы это ?
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2008-12-21 19:46:23 ЛС | профиль | цитата
nesco писал(а):
пока, менеджеры не работают

уже работают
карма: 27
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#10: 2008-12-21 21:00:53 ЛС | профиль | цитата
Dilma писал(а):
уже работают

На тот момент, когда я писал, обновлений не было (специально проверял)

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


Dilma, ни фига оно нормально не работает, а точнее -- не работает _OnMeasureItem

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


Короче, тут вот что получается

Вот это дело при старте в Init


SetStrings(_prop_Strings);

или аналогичное, вызывает OnMeasureItem для исходных строк, а конкретные свойства менеджеров еще не определены и к ихним полям нет доступа для расчета высоты пункта. Откуда, отрисовка будет, но с исходной высотой

карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#11: 2008-12-21 21:47:23 ЛС | профиль | цитата
nesco, я исправил тот минимум, который позволил запускать программы с этими элементами. Дальше уже смотри сам. SetStrings надо выносить в событие установки BoxDrawManager, от наличия которого он и зависит, тогда все будет работать
карма: 27
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#12: 2008-12-22 11:16:59 ЛС | профиль | цитата
Dilma писал(а):
от наличия которого он и зависит

Да он в Init изначально был и никоим образом к BoxDrawManager отношения не имел.

Dilma писал(а):
SetStrings надо выносить в событие установки BoxDrawManager

Тут я ничего не понял, тк как событие установки раньше не было предусмотрено.

Да, и еще -- что вот в этой сроке


if ManFlags and $04 > 0 then

означает $04 и есть ли другие значения
------------ Дoбавленo:

Кажется, я понял как сделать инициализацию. Попробую реализовать.
------------ Дoбавленo:

Поправил, но в во всех Combo, пока, не решен вопрос с размерами иконок в поле редакции выше 16, там всегда при запуске с менеджером отрисовки, OnMeasureItem возвращает 18
------------ Дoбавленo:

Dilma, и все же, нельзя ли сделать инициализацию свойств менеджеров перед секцией Init, как у всех обычных свойств
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 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;
и все будет прекрасно и быстро работать
карма: 27
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#14: 2008-12-22 14:10:09 ЛС | профиль | цитата
Dilma писал(а):
и все будет прекрасно и быстро работать

Быстро работать будет, но есть одна проблема. Для Combo OnMeasureItem вызывается один раз до инициализации свойства _prop_BoxDrawManager (для остальноых менеджеров тоже), вот почему я и спросил

nesco писал(а):
и все же, нельзя ли сделать инициализацию свойств менеджеров перед секцией Init, как у всех обычных свойств


С остальным я уже и так разобрался, просто не потер за собой пост

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


Я еще ночью сбросил исправленный вариант на SVN, но

nesco писал(а):
Поправил, но в во всех Combo, пока, не решен вопрос с размерами иконок в поле редакции выше 16, там всегда при запуске с менеджером отрисовки, OnMeasureItem возвращает 18


Но исправить на ускорение не проблема, но желательно, после твоего ответа на вышепоставленный вопрос
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#15: 2008-12-22 17:29:25 ЛС | профиль | цитата
nesco, а по-моему высота элемента должно определятся высотой, заданной в редакторе форм. Примерно так

ItemHeight := _prop_Height - 6;

вообще же логичнее было бы сделать св-во ItemHeight в самом элементе, как это сделано например в среде Delphi, а уже менеджером вычислять его для каждого пункта и не так, как сейчас, а масштабируемо. Т.е. вот так:

  h := _prop_IconManager.CalcMaxHeight(ItemHeight);
h := _prop_DrawBoxManager.CalcMaxHeight(h);
тогда каждый из менеджеров не зависимо друг от друга сможет расширять высоту элемента по до нужной ему величины. Нынешнее комплексное вычисление:

#pas
if Assigned(_prop_BoxDrawManager) then
ItemHeight := max((value.imgsz + _prop_BoxDrawManager.AddSize * 2), Control.Canvas.TextExtent('W').cy);
к сожалению для манипуляций высотой обязывает нас определять оба менеджера... Пока писал эту строку, понял что есть еще один нюанс - у нас менеджер иконок будучи приделанным к элементу никак на него не влияет, пока не задан BoxDraw, что видимо тоже в последствии надо будет доделать. Мне например в 99 программах из 100 нужно всего лишь вывести к элементу списка простую иконку без всяких разукрашиваний.
карма: 27
0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)