Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.05 c
15-1195105781
ZeroDivide
2007-11-15 08:49
2007.12.16
Требования к ПО для обеспечения совместимости с Vista


2-1195744591
Fraider
2007-11-22 18:16
2007.12.16
Минимальный размер окна


2-1195311260
Dru095
2007-11-17 17:54
2007.12.16
как удалить файл с определенной датой создания


3-1186755739
koss_
2007-08-10 18:22
2007.12.16
сортировка датасета


8-1171049042
Pa5ha
2007-02-09 22:24
2007.12.16
Скины





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский