Конференция "KOL" » опять про GRush [Delphi, Windows]
 
  • grim (15.09.07 22:17) [0]
    Всем доброго времени суток, вопрос мой касаеься работы с Grush,
    как я понял пакет ToGrush, как раз и предназначен для переноса готого проекта, путем добовления его  в Uses, но у меняв возникло пару проблем:
    1) ToGrush местическим образом исчезает из Uses, когда например перемещаю компоненты..
    2) в нем идет замена функции MessageBox, на свою, но у меня почему то она отображаеться без "GRush-эффекта", да и еще нельзя ли также отображать как в обычном мессажд боксе иконку сообщения(слева от текста сообщения)
  • homm © (15.09.07 23:02) [1]
    > опять про GRush

    Уф… Зачем пугать? :) Вопрос не по GRush, а по ToGrush :)
  • Danger © (16.09.07 13:24) [2]

    > grim   (15.09.07 22:17) 
    > Всем доброго времени суток, вопрос мой касаеься работы с
    > Grush,как я понял пакет ToGrush, как раз и предназначен
    > для переноса готого проекта, путем добовления его  в Uses,
    >  но у меняв возникло пару проблем:1) ToGrush местическим
    > образом исчезает из Uses, когда например перемещаю компоненты.

    Добавляйте вызовы своих модулей после (place your units here->). Например, было:
    uses Windows, Messages, KOL, KOLQProgBar {$IFNDEF KOL_MCK}, mirror, Classes, Controls, mckControls, mckObjs, Graphics,  mckQProgBar,
     mckCtrls {$ENDIF (place your units here->)};


    Добавляем свой модуль:
    uses Windows, Messages, KOL, KOLQProgBar {$IFNDEF KOL_MCK}, mirror, Classes, Controls, mckControls, mckObjs, Graphics,  mckQProgBar,
     mckCtrls {$ENDIF (place your units here->)}, ToGrush;


    Блок uses пересоздается каждый раз при модификации MCK-проекта, поэтому помещайте ссылки на сторонние модули в конец блока.
  • grim (16.09.07 16:33) [3]
    Danger ага спачибо, а по поводу MessageBox можете чтонибудь подсказать?!
  • grim (16.09.07 16:33) [4]
    Danger ага спачибо, а по поводу MessageBox можете чтонибудь подсказать?!
  • Vladimir Kladov (16.09.07 19:54) [5]
    Посмотрите, каким IFDEF эта замена обрамлена, и добавьте соответствующий символ в свойтсва проекта (билд не забудьте).
  • vampir_infernal (16.09.07 20:47) [6]
    На счет замены MessageBox. Не знаю, была ли эта проблема еще у кого-то, кроме меня, но при использовании вышеупомянутой замены размер exe-файла увеличивается на ~50 килобайт, и в map-файле появляются упоминания SysUtils, VarUtils и других "тяжеловесных" модулей.

    И еще. В модуле ToGrush в 777й строке нужно заменить string на KOLString:
     
    C: PCanvas;
    s: KOLString;
    Cside: Integer;



    строка 896. Заменить PChar на PKOLChar:
         Windows.DrawTextEx( C.Handle, PChar( s ), Length( s ),
           R, DT_LEFT or DT_SINGLELINE {$IFDEF RED_ACCELERATORS} or DT_HIDEPREFIX {$ENDIF}, nil );

    на
         DrawTextEx( C.Handle, PKOLChar( s ), Length( s ),
           R, DT_LEFT or DT_SINGLELINE {$IFDEF RED_ACCELERATORS} or DT_HIDEPREFIX {$ENDIF}, nil );



    строка 992. Дописать вызов
     Free_And_Nil( MenuBmp );

    в конец функции OwnerDrawMenuItem, иначе fastmm указывает на утечку памяти.

    Спасибо.
  • Barloggg (09.10.07 14:30) [7]
    еще про Grush
    а можно их создавать c windowed = false?
  • homm © (09.10.07 14:31) [8]
    > [7] Barloggg   (09.10.07 14:30)
    > а можно их создавать c windowed = false?

    Нет. А зачем?
  • Barloggg (09.10.07 14:40) [9]
    наверное для прикола.
    подумал что мое приложение в котором штук пятьсот всяких контролов может воспользоваться фишкой с графическими контролами, и я глобально подставил конструкторы для графических объектов. в результате счетчик объектов GDI с 400 упал до 120. неплохо.
    однако это приложение опционально использует Grush. то есть запуск без параметра - Grush с параметром - графические.
    разница во времени запуска появилась.

    ну вот и логичная мысль, а можно ли? ну нельзя, так нельзя.
    кстати подключение графических контролов добавило 6 кб. к уже существующим 577кб... гм.
  • homm © (09.10.07 14:52) [10]
    > [9] Barloggg   (09.10.07 14:40)
    > разница во времени запуска появилась.

    тоесть? В какую сторону? Неужели с графическими контролами медленнее стало? :)
  • Barloggg (09.10.07 15:03) [11]
    ну почему же медленнее. как было заявлено, так и работает. запуск быстрее, поотзывчивее. да и объектов меньше. правда вот с прозрачностью лабелов выплыли глюки.

    так что с графическими контролами запуск быстрее. две секунды против трех-четырех секунд с Grush.
    всякие там onMessage для каждой кнопки мне не нужен.

    вот была бы возможность создание части контролов производить после отрисовки формы, это было-бы иногда полезно, но MCK такого и не думает делать.
  • homm © (09.10.07 15:05) [12]
    > [11] Barloggg   (09.10.07 15:03)
    > вот была бы возможность создание части контролов производить
    > после отрисовки формы, это было-бы иногда полезно, но MCK
    > такого и не думает делать.

    А у тебя все 400 контроллов на одной форме?
  • Barloggg (09.10.07 15:07) [13]
    да.
    только разложены по куче вкладок.

    это генератор карт для игры. там туча всяких движков, ползунков кнопочек, фишечек.
  • Vladimir Kladov © (09.10.07 16:28) [14]
    была бы возможность создание части контролов производить после

    Для этого могут пригодиться фреймы. Советую.
  • Barloggg (09.10.07 16:55) [15]
    хм. фреймы.
    почему бы и нет?
    вкурил пример... неплохо.

    спасибо.

    правда демка скомпилиться отказалась... :) ну да ничего.
  • ANTPro © (09.10.07 17:22) [16]
    > [5] Vladimir Kladov   (16.09.07 19:54)
    > (билд не забудьте).

    Да, ребилдол — хорошее лекарство :o)
  • Barloggg (15.10.07 09:09) [17]
    насчет фреймов...
    сделал парочку.

    перебросил туда полсотни контролов. простым вырезанием и вставкой.
    пару часиков занимался восстановлением слетевших методов, кстати очень интересно потерянных, VCL их потерял, а МСК не совсем :) если так можно выразиться.
    пришлось воспользоваться inc файлом для сравнения.

    так вот результат... своеобразный.
    программа при запуске не создавая фреймы стала занимать на 1мб больше. было 13 стало 14. гм.
    а при создании фреймов так и вообще на 3 мб больше чем без фреймов вообще.
    это какой-то хитрый план?

    кстати время запуска на глазок не изменилось, на пламенном-то проце...
  • Barloggg (15.10.07 10:11) [18]
    гм. насчет объемов похоже я неправ.
    на рабочей машине от intel все работает как должно. и по расходу памяти и по скорости. причем от винды к винде расход памяти изменяется. во дела!

    кстати на 64битной винде замечены траблы с грушами выровненными по caTop и NEW_ALIGN, правда данных маловато для однозначной формулировки.
  • homm © (15.10.07 10:32) [19]
    > [18] Barloggg   (15.10.07 10:11)
    > кстати на 64битной винде замечены траблы с грушами выровненными
    > по caTop и NEW_ALIGN

    1) Как может влиять, граши или не граши учавствуют в алгне?
    2) Как 64-х битность может влиять на приожение, если оно 32-х битное, и Майкросовт гарантирует его правльную работу? :)
  • Barloggg (15.10.07 11:01) [20]
    однако ребилдол становится обязательным когда речь идет о многофреймовом приложении

    homm я пока непонял как этот глюк возник, и возник ли он вообще, но заметил такую вещь:
    1. список из радиобоксов. большой. достаточно чтобы вылезти за края скроллбокса.
    2. груши выглядят так как будто их ширина скажем пикселей 40 то есть видно одну букву и троеточие.
    3. при наведении глюки с отрисовкой, и через клик-другой вылетает сообщение об ошибке, но приложение не бабахает и эти сообщения формируют длинннннную полосу при каждом движении мыши над грушем.
    выключаю стиль груш и все в порядке.

    вариантов 2
    дома ХР 64 бит
    дома колмск 2.50

    так что пока я ничего не утверждаю, и судя по твоей реакции это мои проблемы :)
  • homm © (15.10.07 11:16) [21]
    > [20] Barloggg   (15.10.07 11:01)
    > так что пока я ничего не утверждаю, и судя по твоей реакции
    > это мои проблемы :)

    Да почему, же если реально проблема есть и ее удастся выделить, подумаем, что можно сделать, но в то, что написано выше слабо верится, скорее разница в версии КОЛ.
  • Дмитрий К © (15.10.07 11:20) [22]
    to Barloggg:  
    Logitech Setpoint случаем не установлен?
  • Barloggg (15.10.07 14:12) [23]
    to Дмитрий К
    а что это?
    звучит как прога-прибабах на мышь
  • Vladimir Kladov © (15.10.07 15:16) [24]
    Версия KOL обновлена? ToGRush используете?
  • Дмитрий К © (15.10.07 15:19) [25]

    > а что это?
    > звучит как прога-прибабах на мышь

    Драйвер для мышей и клавиатур Logitech.
    Просто у меня на Vista x64 тоже наблюдаются глюки с отрисовкой грашей, но только с запущенным SetPoint.
  • homm © (15.10.07 15:34) [26]
    > [25] Дмитрий К ©   (15.10.07 15:19)
    > Просто у меня на Vista x64 тоже наблюдаются глюки с отрисовкой
    > грашей, но только с запущенным SetPoint.

    Мистика :)
  • Vladimir Kladov © (16.10.07 19:43) [27]
    Вот такое изменение попробуйте:

    procedure TGRushControl.TimerEvent(Data: PGRushData);
    var     FromBitmap: PBitmap;
           ToBitmap: PBitmap;
           W, H: Integer;
    begin
    if not Visible then Exit; //+++
  • Barloggg (17.10.07 09:13) [28]
    но вот в чем странность.
    приношу я этот откомпилированный ехе-шник на другую машину и все в порядке!
    скрин глюка здесь
    http://slil.ru/24989087
    скомпилино в КОЛ2.50, ну не донес я до дома последнюю, каюсь.
    забавно после ресайза часть контролов выправилась.
    значит каким-то образом алигн таки причастен, похоже этот скрин будет любопытен и вам Владимир.

    я использовал директиву UseGrush.
    Но вспонив, что нечто подобное использовалось в ToGrush я ее изменил, эффект не изменился.

    я полагаю здесь не в том дело что visible / неvisible а скорее в том, какие координаты дает винда контролу.
    контрол-то рисуется, ну да смотрите вышеуказанный скрин.
    сейчас сброшу на флеш последнюю версию КОЛ и вечером проверю.
  • Barloggg (17.10.07 09:42) [29]
    кстати памятуя ММХ и разговор про глюки в зоомере стоит добавить что у меня двухядерный 64битный атлон. и 64битная винхр.
    ибо на 32битной вин2к на целероне с этим-же ехешником все в порядке.
  • Vladimir Kladov © (17.10.07 15:20) [30]
    Моё письмо опять не увидено. Вот отсюда возьмите и попробуйте вариант KOLGrushControl с несколькими моими правками: http://kolmck.net/test/KOLGRushControls.rar
  • Barloggg (17.10.07 16:45) [31]
    Владимир, ну почему же не увидено. если вы имеете ввиду [27], то даже ответ написан :)
    файлик скачал, посмотрю.
    Спасибо.
  • homm © (17.10.07 16:48) [32]
    > [31] Barloggg   (17.10.07 16:45)
    > Владимир, ну почему же не увидено. если вы имеете ввиду
    > [27], то даже ответ написан :)

    Мисьмо мне было, я его и правда еше не видел.
  • Vladimir Kladov © (17.10.07 18:17) [33]
    Я жду результата тестирования, поскольку это дело у меня вылетало регулярно без этих пары правок. Нет, это не связано с многоядерностью точно. Проблемы с зумом были в других местах (и сейчас, похоже, продолжаются кое-где). Здесь вылеты были на фоне в настоящий момент не видимых GRush-контролов, особенно часто это стало проявляться после подмены скроллов, где элементы могут специально прятаться при ненадобности. Может быть даже имеет смысл использовать для проверки ToBeVisible а не Visible (я не использую таб-контрол, может поэтому пока не ощутил разницы).
  • Barloggg (29.10.07 10:29) [34]
    кстати граши падать не перестали.
    после всех установок/переустановок :)

    поведение осталось то же.
    только ошибка не выскакивает, а прога молча закрывается.
    странная поддержка ММХ в атлон64х2 под вин64?
  • Vladimir Kladov © (29.10.07 15:48) [35]
    Но вы же можете проверить, найти место где что происходит, это ведь в вашей программе, так? Включите Environment | Debugger | ... | Stop on Delphi Exceptions, сделайте билд со всей возможной отладочной информацией, в момент падения просмотрите стек. Надо же понять, что не работает. Если Delphi не может, то поставьте MS VC++ .NET 2003-2005, любой в общем. Установите его как отладчик по умолчанию, в момент падения выберите Debug, когда он загрузится, там вообще весь стек показывает, даже лишние пункты.
  • homm © (29.10.07 23:45) [36]
    Поставил ХРх64. Ничего вроде не поламалось, кроме русских надписей, которые поломались во всех дельфи прогах, т.к. винда аглицкая.
    В общем бубен в студию…
  • Vladimir Kladov © (30.10.07 16:43) [37]
    Еще на зумер можно посмотреть. Если он НЕ падает, в граше, тогда это странно.
  • homm © (30.10.07 22:24) [38]
    > [37] Vladimir Kladov ©   (30.10.07 16:43)
    > Еще на зумер можно посмотреть. Если он НЕ падает, в граше,
    > тогда это странно.

    Владимир, скачал Зумера с вашего сайта, запустил установку, и вот что я вижу:
    http://homm86.narod.ru/files/zoomer.png

    Самое интересное, что винда 32-х битная :)

    Тип компьютера Однопроцессорный компьютер с ACPI
    Операционная система Microsoft Windows XP Professional
    Пакет обновления ОС Service Pack 2
    Internet Explorer 6.0.2900.2180 (IE 6.0 SP2)
    DirectX 4.09.00.0904 (DirectX 9.0c)
    Имя пользователя Администратор
    Тип ЦП AMD Sempron, 2400 MHz (8 x 300)
    Чипсет системной платы nVIDIA nForce4, AMD Hammer
    Системная память 1024 Мб  (DDR2-667 DDR2 SDRAM)
    Тип BIOS Award (02/08/07)
    Видеоадаптер NVIDIA GeForce 7600 GT  (256 Мб)

  • homm © (30.10.07 22:37) [39]
    64-бит ХР,
    То-же самое с точностью до оформления окна дебагера по умолчанию.
  • homm © (31.10.07 12:32) [40]
    > [38] homm ©   (30.10.07 22:24)
    > Владимир, скачал Зумера с вашего сайта, запустил установку,
    > и вот что я вижу:

    Все в порядке :) Результат воспроизводимый на многих машинах, а не только у меня дома такая фигня…
  • Vladimir Kladov © (31.10.07 19:59) [41]
    Угу, сломался только сетап. И только из-за Resource2Stream (в STREAM_LARGE64). Его-то я и не проверил. Вообще-то файл переименовывается (удаляется слово Setup), и запускается. Сейчас положу исправление.
 
Конференция "KOL" » опять про GRush [Delphi, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0.002]