Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пожелания: GRushControls [Delphi, Windows]


Страницы:   1 2

Vladimir Kladov ©   (2007-05-27 18:39:00) 

вот такое пожелание: сделать хотя бы альтернативно через IFDEF темы - в виде глобальной структуры с цветами заливки, шрифтов, круглостью уголков. Почему глобальной: чтобы тему можно было сменить на лету. Можно для примера приготовить несколько тем и даже сделать процедуру-конструктор темы, который на базе всего 2 или даже 1 цвета заполняет всю структуру. И все сразу стало из голубоватого песочно-желтоватым или гламурно-розовым...


Vladimir Kladov   (2007-06-09 16:57:00) [1]

По поводу устройства - это перевод на русский хромой. Речь идет о статическом обращении к точке в dll, которой нет. Наверное, надо обновить comctl32.dll. У меня Delphi5 стоит на 95 под ConnectixVirtualPC, и вот самая последняя версия 2.65+ прекрасно встала, никаких присоединенных устройств не возмутилось. Правда, в пакете кроме самого MCK, ничего и не было больше.


Vladimir Kladov   (2007-06-09 12:41:00) [2]

Надо положить GRush-панель на форму и присвоить ей Transparent = true. Сегодня проверял: этого достаточно и в NT4,  и в 98, чтобы пол-панели съелось напрочь. Прозрачность панели нужна особненно, когда ее положили на совсем другую панель, например - чтобы уголки были круглые, как положено.


homm   (2007-06-06 07:59:00) [3]

Вот, блин, ерунда то.
В 95-й спосле сборки пакета (кол) после того, как показал все впрнинги и хинты, говорит
«Can't load package c:\program files\…\mirrorKOLPackage.bpl.
Присоединенное к системе устройство не работает.»

В 98-й все встало. Было у когонибудь?


homm   (2007-06-06 00:54:00) [4]

Да, спасибо Антон Шапеткин ака ANTPro за помошь.


homm   (2007-06-06 00:53:00) [5]

Так, Владимир, с Вас минимальное нерабочее приложение, где панель не рисует. Я себе 95-ю поставил :) (VMWare рулит)


homm   (2007-06-05 16:56:00) [6]

Извините тогда.
Я правильно подумал что Вы не могли в здравом уме написать то, что я прочел :)


Vladimir Kladov   (2007-06-05 16:49:00) [7]

Не хочу ругаться. Еще раз посмотрите, мысленно убрав директивы. Там else стоит. Однако.


homm   (2007-06-05 15:50:00) [8]

    {$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-05-31 17:43:00) [9]

Я как-то делал своим кодом. Использовал функцию хаоса, в принципе получалось примерно то, что надо. Хотя некоторая крапчатость наблюдалась.

Насчет того изменения, которое первое в одном, я бы предложил такой вариант:

     {$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-05-31 16:33:00) [10]

Хотя, чего это я :) Сам же сказал что в 95-й подсистема видео позволяет FillRect верно рисовать :)


homm   (2007-05-31 16:32:00) [11]

Значит 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 не используеться.


Vladimir Kladov   (2007-05-31 16:14:00) [12]

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-30 21:40:00) [13]

> Наверное, дело в том, что размер паттерна в 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-30 20:57:00) [14]

Вот еще одна непрятность. Наблюдается под NT4, но думаю, под 98 то же самое (смотрел только под VmWare, win95 вроде, действительно так).

http://kolmck.net/snapshots.rar

Смысл такой, что в 64К цветов (верхние 2 полоски на том снапшоте, где их 3) не дают плавную заливку. Наверное, дело в том, что размер паттерна в NT4 и Win9x ограничен 8х8, или отрисовка просто проскакивает. Жить с этим можно, но неприятно. Было бы интересно узнать: возможно ли технически перейти на использование паттернов 8х8, не сильно ли на много это потянет исправлений, и можно ли (для скорости) сделать так, чтобы в современных системах продолжал исполььзоваться 32х32.

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


Vladimir Kladov   (2007-05-29 18:35:00) [15]

Не совсем еще. И DOS'ом люди пользуются, и в Win 3.11 работают. Но говоря о платформе винды, подразумевать следует все, что win95-Vista, включая NT по крайней мере от NT4.


Barloggg   (2007-05-29 16:35:00) [16]

угу и нас 98 уже не осталось
похоже на 98-ю можно забивать.

даже дома на купленной недавно мат плате не оказалось дров для 98 винды. Придется ориентироваться только на одиночную винду...
эпоха 98-й похоже заканчивается.


homm   (2007-05-29 16:20:00) [17]

Я и 98-ю, чесно говоря ставить не хочу :) Тестировал когда-то в универе, но теперь и там компы обновили.


Vladimir Kladov   (2007-05-29 16:18:00) [18]

Я говорю то, что есть. Под 98 не смотрел, но в прошлый раз выглядело одинаково. Можете попробовать под ним, раз NT ставить не хотите.


homm   (2007-05-29 16:16:00) [19]

> под NT4: пол-панели как корова языком слизала

Вод для панели как раз «первая» замена ничего и не должна менять. (там где NewBitmap на if меняем).


homm   (2007-05-29 16:11:00) [20]

Нет, изменений было предложено ровно одно и оно затрагивает и конец и начало процедуры :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо