Форум: "KOL";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
ВнизПожелания: GRushControls Найти похожие ветки
← →
Vladimir Kladov (2007-05-27 18:39) [0]вот такое пожелание: сделать хотя бы альтернативно через IFDEF темы - в виде глобальной структуры с цветами заливки, шрифтов, круглостью уголков. Почему глобальной: чтобы тему можно было сменить на лету. Можно для примера приготовить несколько тем и даже сделать процедуру-конструктор темы, который на базе всего 2 или даже 1 цвета заполняет всю структуру. И все сразу стало из голубоватого песочно-желтоватым или гламурно-розовым...
← →
homm © (2007-05-27 19:39) [1]Все это конечно хоршо, но завтра экзамен по ФТТ :)))
Пожелания понятны, вопрос о каком-то управлении темами стоит с первого дня создания, но до сих пор не решен. Ситация же намного сложнее чем в RBControls было, там по несколько свойств всего на контрол, здесь же много больше.
Подход с именно глобальным статичным хранением мне нравиться, в принцепе оно почти так и есть, нужно только переписать что-бы из этого хранилища информация бралась не при создании, а был бы метод отдельный, вызываемый как при создании, так и вручную.
← →
homm © (2007-05-27 19:42) [2]Кстати. Владимир, Встречные пожелания: Доведите до ума ShowQuestionEx, окно при включенном USE_GRUSH так уродливо смотрится. Как минимум Border убрать у формы и панели All_BorderWidth тоже.
← →
Vladimir Kladov (2007-05-27 19:56) [3]А мне как раз такой вид нравится, чего ж в нем уродливого. Я под него и все прочие формы подогнал. Вообще ShowQuestionEx для того и создан, чтобы "поправить" форму можно было при создании, навешивая свой CallBack.
← →
Vladimir Kladov (2007-05-27 20:03) [4]я потому и предполагаю, что без IFDEF не обойтись: идея тем в том, чтобы брать нужные значения прямо в процедурах отрисовки непосредственно из глобальной структуры, нежели хранить все переменные у себя внутри контрола.
← →
mdw © (2007-05-28 11:41) [5]Еще, заодно несколько предложений:
1. Процедуру: procedure GradientFill(const State: TGRushPaintState; DC: HDC; const BorderRect: TRect); добавить в интерфейсную секцию. А то иногда возникает необходимость использовать ее в своих модулях.
2. Вроде уже обсуждалось, не помню только чем закончилось. Объявление TGRushVAlign = (vaTop, vaCenter, vaBottom); заменить на TGRushVAlign = TVerticalAlign;
Хотя это не критично, просто получилось что TGRushVAlign и TVerticalAlign одинаковые типы, конфликтуют слегка.:)
3. Добавить что-то типа свойства TextStyle, и использовать при формировании строки формата для DrawText. Для реализации вариантов:
DT_END_ELLIPSIS, DT_PATH_ELLIPSIS, DT_NOPREFIX.
← →
Vladimir Kladov (2007-05-29 15:38) [6]Значит, так. Хотеля еще вчера проверить, но не пришлось. Сегодня проверил. Не катит первое изменение в DrawControlRect под NT4: пол-панели как корова языком слизала, причем независимо от разрешения рабочего стола. Вернул вариант с IFDEF-ом - все нормально стало. Второе изменение вроде посмотреть не успел внимательно, вроде работает так же - икноки прозрачные на кнопках.
← →
homm © (2007-05-29 15:55) [7]Что есть первое и что второе? :)
← →
Vladimir Kladov (2007-05-29 16:09) [8]очевидно, первое - то, что в начале или выше по тексту, второе - то, что ниже, и ближе к концу процедуры. Насколько помню, изменений было предложено ровно 2.
← →
homm © (2007-05-29 16:11) [9]Нет, изменений было предложено ровно одно и оно затрагивает и конец и начало процедуры :)
← →
homm © (2007-05-29 16:16) [10]> под NT4: пол-панели как корова языком слизала
Вод для панели как раз «первая» замена ничего и не должна менять. (там где NewBitmap на if меняем).
← →
Vladimir Kladov (2007-05-29 16:18) [11]Я говорю то, что есть. Под 98 не смотрел, но в прошлый раз выглядело одинаково. Можете попробовать под ним, раз NT ставить не хотите.
← →
homm © (2007-05-29 16:20) [12]Я и 98-ю, чесно говоря ставить не хочу :) Тестировал когда-то в универе, но теперь и там компы обновили.
← →
Barloggg (2007-05-29 16:35) [13]угу и нас 98 уже не осталось
похоже на 98-ю можно забивать.
даже дома на купленной недавно мат плате не оказалось дров для 98 винды. Придется ориентироваться только на одиночную винду...
эпоха 98-й похоже заканчивается.
← →
Vladimir Kladov (2007-05-29 18:35) [14]Не совсем еще. И DOS"ом люди пользуются, и в Win 3.11 работают. Но говоря о платформе винды, подразумевать следует все, что win95-Vista, включая NT по крайней мере от NT4.
← →
Vladimir Kladov (2007-05-30 20:57) [15]Вот еще одна непрятность. Наблюдается под NT4, но думаю, под 98 то же самое (смотрел только под VmWare, win95 вроде, действительно так).
http://kolmck.net/snapshots.rar
Смысл такой, что в 64К цветов (верхние 2 полоски на том снапшоте, где их 3) не дают плавную заливку. Наверное, дело в том, что размер паттерна в NT4 и Win9x ограничен 8х8, или отрисовка просто проскакивает. Жить с этим можно, но неприятно. Было бы интересно узнать: возможно ли технически перейти на использование паттернов 8х8, не сильно ли на много это потянет исправлений, и можно ли (для скорости) сделать так, чтобы в современных системах продолжал исполььзоваться 32х32.
Там же скриншоты панели, у которой исчезает нижняя половина, если применить первую часть изменений из того одного изменения в DrawControlState, о котором говорилось выше.
← →
homm © (2007-05-30 21:40) [16]> Наверное, дело в том, что размер паттерна в NT4 и Win9x
> ограничен 8х8, или отрисовка просто проскакивает.
Под словом патерн понимаеться обект у кисти? Он не используеться. Все рисуеться вручную.
Все проще. Дело в том, что в 9х правильный градиент можно нарисовать последовательным FillRect с шириной один пиксель, а в NT он уже получаеться дерганым, как на рисунке. Зато в NT появляеться славная библиотека «msimg32.dll», с двумя полезными функциями TransparentBlt и GradientFill, последняя из которых лишена сего недостатка. Видимо версия 4.0 является «редким исключением», имеющим видоеподсистему линейки NT, но еще не наделенной волшебной библиотекой. Проверьте существование библиотеки и экспортность сих функций. Если ее нет, есть шанс что заработает из NT 5.x.
В 95-м все должно быть нормально.
Так-же очень заинтерисовало появление исходного кода библиотеки в файле «Градиент диаг 64К ХР» :) Это не моя пасхалка :)
Еше неподдельный интерес вызвали надписи «Next >>» и «Cancel» на той картинке, где полная панель. Вы как-то упомяналя что у Вас сильно тормозит 2Д графика в виндовс. Может все 3 глюка одного поля ягоды?
← →
Vladimir Kladov (2007-05-31 16:14) [17]MSDN:
TransparentBlt:
Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Included in Windows 98 and later.
Windows 95/98: TransparentBlt contains a memory leak that can exhaust system resources. To draw a transparent bitmap using BitBlt, see Knowledge Base article 79212.
GradientFill:
Windows NT/2000/XP: Included in Windows 2000 or later.
Windows 95/98/Me: Included in Windows 98 or later.
← →
homm © (2007-05-31 16:32) [18]Значит 95/NT4.0 сосут :(
Других способов, кроме озвученых выше плавной заливки, без рисования «совсем уж все ручками», я не знаю.
> TransparentBlt contains a memory leak that can exhaust system
> resources. To draw a transparent bitmap using BitBlt, see
> Knowledge Base article 79212.
По этому вопросу было обсуждение еще в ранних версиях, в 98-й TransparentBlt не используеться.
← →
homm © (2007-05-31 16:33) [19]Хотя, чего это я :) Сам же сказал что в 95-й подсистема видео позволяет FillRect верно рисовать :)
← →
Vladimir Kladov (2007-05-31 17:43) [20]Я как-то делал своим кодом. Использовал функцию хаоса, в принципе получалось примерно то, что надо. Хотя некоторая крапчатость наблюдалась.
Насчет того изменения, которое первое в одном, я бы предложил такой вариант:
{$IFDEF FIX_16BITMODE}
if WinVer < wvY2K then
Bitmap := NewDibBitMap(W, H, pf32bit)
else
{$ENDIF FIX_16BITMODE}
if UseDIB then
Bitmap := NewDIBBitMap(W, H, pf32bit)
else
Bitmap := NewBitMap(W, H);
Исчезновение половины панели мне не нравится гораздо больше, чем заливка с явными полосами.
← →
homm © (2007-06-05 15:50) [21]
{$IFDEF FIX_16BITMODE}
if WinVer < wvY2K then
Bitmap := NewDibBitMap(W, H, pf32bit)
else
{$ENDIF FIX_16BITMODE}
if UseDIB then
Bitmap := NewDIBBitMap(W, H, pf32bit)
else
Bitmap := NewBitMap(W, H);
Владимир, простите, что это за бред?
if WinVer < wvY2K then
Bitmap := NewDibBitMap(W, H, pf32bit)
else
создаем один битмэп,
if UseDIB then
Bitmap := NewDIBBitMap(W, H, pf32bit)
и не уничтожая сразу другой???
← →
Vladimir Kladov (2007-06-05 16:49) [22]Не хочу ругаться. Еще раз посмотрите, мысленно убрав директивы. Там else стоит. Однако.
← →
homm © (2007-06-05 16:56) [23]Извините тогда.
Я правильно подумал что Вы не могли в здравом уме написать то, что я прочел :)
← →
homm © (2007-06-06 00:53) [24]Так, Владимир, с Вас минимальное нерабочее приложение, где панель не рисует. Я себе 95-ю поставил :) (VMWare рулит)
← →
homm © (2007-06-06 00:54) [25]Да, спасибо Антон Шапеткин ака ANTPro за помошь.
← →
homm © (2007-06-06 07:59) [26]Вот, блин, ерунда то.
В 95-й спосле сборки пакета (кол) после того, как показал все впрнинги и хинты, говорит
«Can"t load package c:\program files\…\mirrorKOLPackage.bpl.
Присоединенное к системе устройство не работает.»
В 98-й все встало. Было у когонибудь?
← →
Vladimir Kladov (2007-06-09 12:41) [27]Надо положить GRush-панель на форму и присвоить ей Transparent = true. Сегодня проверял: этого достаточно и в NT4, и в 98, чтобы пол-панели съелось напрочь. Прозрачность панели нужна особненно, когда ее положили на совсем другую панель, например - чтобы уголки были круглые, как положено.
← →
Vladimir Kladov (2007-06-09 16:57) [28]По поводу устройства - это перевод на русский хромой. Речь идет о статическом обращении к точке в dll, которой нет. Наверное, надо обновить comctl32.dll. У меня Delphi5 стоит на 95 под ConnectixVirtualPC, и вот самая последняя версия 2.65+ прекрасно встала, никаких присоединенных устройств не возмутилось. Правда, в пакете кроме самого MCK, ничего и не было больше.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.044 c