Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

По поводу тормознутости KolToolBar c tboFlat и FixFlatXP   Найти похожие ветки 

 
Viman ©   (2004-05-26 12:45) [0]

Это не вопрос, это решение :), вдруг кому-то участь облегчит...
Есть у меня на форме KOLToolbar, хочется чтобы он был tboFlat и нормально отображался под WinXP с манифестом. Что на данный момент недоступно без включения свойства FixFlatXP. Его же включение приводит к тому, что под WinXP Toolbar становиться Transparent и тормозит все безбожно. И при чем не важно - подключен манифест или нет. А как оказалось при включеном манифесте совсем необязательно Toolbar-у иметь стиль tboFlat и так и так одинаково рисуется. Т.е. если мы с манифестом и при включенной "теме"(конечно же под XP), то нужно просто убрать стиль tboFlat и никакого Transparent включать не нужно, иначе включаем tboFlat и тоже без Transparent. Одно "но" - как узнать достоверно как стандартные контролы винда на данный момент рисует: по теме или стандартно? По-мне так не катило проверять наличие манифеста в файле или ресурсе( а вдруг есть файл с манифестом, но он глючный?) И надеяться, что кто-то будет его включать жестко в ресурс? Наивно... Побывал тут на форуме WinApi, в других форумах - готового решения не было, пришлось решать :),теперь вот оно.
Вызываем функцию, если она вернула false - нас должны рисовать стандартно(без всяких тем), если true - то по теме. Никаких проверок на манифест не нужно. Результат не предположительный, а гарантированно верный. Единственно что, так это я не проверял на Windows выше XP - нет нигде рядом, но думаю что нормально будет...

> Кладов В., Gandalf
Хоть и немного она громоздкая, но наверно её можно включить  в какой либо стандартный модуль KOL и управлять стилем flat Toolbar посредством её? Да и далеко не лишнее узнать иногда как контролы будут представляться иногда? Как думаете?

Вот сама функция:
//IsDrawingWithVStyle - true, если контролы будут отрисовываться по умолчанию согласно стилю WinXP
function IsDrawingWithVStyle: Boolean;
const Comctl32Dll = "comctl32"; UxThemeDll = "uxtheme";
  funcIsAppThemed = "IsAppThemed";
var fviSize, fviSize2: Cardinal; fviData, fviData2: Pointer;
{$IFDEF KOL_MCK}
// OVI: TOsVersionInfo;
{$ENDIF}
LibHandle: THandle;
IsAppThemed: function : Boolean;stdcall;
begin
 result:= false;
{$IFNDEF KOL_MCK}
 OVI.dwOSVersionInfoSize := Sizeof( OVI );
 GetVersionEx( OVI );
 if (OVI.dwMajorVersion >= 6)
   or ((OVI.dwMajorVersion >= 5) and (OVI.dwMinorVersion >= 1)) then
{$ELSE}
 if WinVer >= wvXP then
{$ENDIF}
 begin
   LibHandle:= LoadLibrary(UxThemeDll);
   if LibHandle <> 0 then
   begin
     try
       @IsAppThemed:= GetProcAddress(LibHandle, funcIsAppThemed);
       if (@IsAppThemed <> nil) and IsAppThemed then
       begin
         fviSize:= GetFileVersionInfoSize(Comctl32Dll, fviSize);
         if fviSize<>0 then
         begin
           GetMem(fviData, fviSize);
           try
             result:= GetFileVersionInfo(Comctl32Dll, 0, fviSize, fviData)
               and VerQueryValue(fviData, "\", fviData2, fviSize2)
               and ((PVSFixedFileInfo(fviData2)^.dwFileVersionMS shr 16) > 5);
           finally
             FreeMem(fviData, fviSize);
           end;
         end;
       end;  
     finally
       FreeLibrary(LibHandle);
     end;
   end;
 end;
end;


Mini HOWTO ^)


 
Viman ©   (2004-05-26 13:42) [1]

Да, как говориться, "Поспешишь - людей насмешишь.
Небольшое исправление:
"Есть у меня на форме KOLToolbar..." не на самой непосредственно форме, а например на панели и т.п. - только тогда transparent включается.



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
6-1098876726
boban
2004-10-27 15:32
2005.01.16
Доступ к файлам, большое к-во файлов в папке


3-1103112423
Nata
2004-12-15 15:07
2005.01.16
Закрепить столбец в DBGrid


1-1104321474
AlexXn
2004-12-29 14:57
2005.01.16
Popup Form


14-1104398505
syte_ser78
2004-12-30 12:21
2005.01.16
проблемка с фильтрацией записей.


3-1102788522
able
2004-12-11 21:08
2005.01.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский