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

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

Vista Aero [Delphi]


Страницы:   1 2

ElectriC ©   (2007-07-20 20:25:00) 

Почему стиль Vist'ы Aero добавляет к высоте и ширине формы + 8 пикселей(на VCL такое не наблюдается).
P.S. Очень раздражает(((
P.S. Что-то с KOL?!


Vladimir Kladov   (2007-08-03 09:35:00) [1]

У вас форма не содержит контролов, которые потребовали бы создания дескриптора (а следовательно дескриптора окна формы и дочерних к нему) до присваивания CanClose := false.


Andrey_rus   (2007-07-31 17:35:00) [2]

disign-time
 CanResize:= true;
run-time
 CanResize:= false;


И проблемы нет даже в 2.63


Дмитрий К   (2007-07-31 16:47:00) [3]


> А в какой нибудь версии KOL закрепили этот патч?

2.75

> [-] Изменения в MCK для исправления бага темы Vista Aero
> с добавлением 8 пикселей справа и снизу окна со стилем границы
> thick (если он устанавливается во время выполнения, уже
> после создания окна). Для KOL, такая граница используется
> в формах с CanResize=false. Примечание: Исправляются только
> формы, с CanResize=false изначально, а не те, для которых
> этот флаг устанавливается в run-time. Автор: Юрий Сидоров.
>  


Andrey_rus   (2007-07-31 16:41:00) [4]

А в какой нибудь версии KOL закрепили этот патч?


ElectriC   (2007-07-24 17:08:00) [5]

Всё разобрался.


Yury Sidorov   (2007-07-24 16:44:00) [6]

Код добавляется удаляется из TKOLForm.GenerateTransparentInits, а добавляется в TKOLForm.SetupFirst.
Все что нужно удалить/добавить описано в патч файле. От себя добавлять ничего не нужно.


ElectriC   (2007-07-24 16:10:00) [7]


> довавлять

добавлять


ElectriC   (2007-07-24 16:09:00) [8]

Так SL, Prefix, AName переменных нет в функции. Куда их довавлять?
P.S. в var или function TKOLForm.GenerateTransparentInits (SL : TStringList;
Prefix, AName : String): String; ?


Дмитрий К   (2007-07-24 12:49:00) [9]


> Можете объяснить, как обновить модуль.

Вручную удалить строки с минусами, добавить с плюсами. Не забыть сохранить исходный.
У меня работает.


ElectriC   (2007-07-24 04:40:00) [10]

Чёт не въезжаю, как обновить модуль mirror.pas с помощью Updater.
Можете объяснить, как обновить модуль.


ElectriC   (2007-07-23 13:53:00) [11]


> Yury Sidorov

Спасибо.
P.S. [Пошёл проверять...]


Yury Sidorov   (2007-07-23 03:36:00) [12]

Вот патч, который это фиксит:
--- C:/TEMP/MIRROR.PAS-rev106.svn000.tmp.PAS Mon Jul 23 02:32:52 2007
+++ C:/TEMP/MIRROR.PAS-rev107.svn000.tmp.PAS Mon Jul 23 02:33:08 2007
@@ -12282,7 +12282,6 @@
end;

function TKOLForm.GenerateTransparentInits: String;
-var MainMenuHeight: Integer;
begin
  asm
    jmp @@e_signature
@@ -12324,30 +12323,7 @@
                  IntToStr( Bounds.Height ) + ' )'
        else
          Result := Result + '.SetSize( ' + IntToStr( Bounds.Width ) + ', ' +
-                  IntToStr( Bounds.Height-GetSystemMetrics(SM_CYCAPTION) ) + ' )'
-      else
-        if HasCaption then
-        begin
-          if HasMainMenu then
-          begin
-            MainMenuHeight := GetSystemMetrics( SM_CYMENU );
-            Result := Result + '{MainMenuHeight=' + IntToStr( MainMenuHeight ) + '}';
-          end
-          else
-          begin
-            MainMenuHeight := 0;
-            Result := Result + '{No MainMenu!}';
-          end;
-          if HasBorder then
-          Result := Result + '.SetClientSize( ' + IntToStr( (Owner as TForm).ClientWidth ) +
-                 ', ' + IntToStr( (Owner as TForm).ClientHeight + MainMenuHeight ) + ' )';
-        end
-        //+++++++ UaFM
-        else
-          if HasBorder then
-          Result := Result + '.SetClientSize( ' + IntToStr( (Owner as TForm).ClientWidth ) +
-                 ', ' + IntToStr( (Owner as TForm).ClientHeight-GetSystemMetrics(SM_CYCAPTION) )
-                 + ')'
+                  IntToStr( Bounds.Height-GetSystemMetrics(SM_CYCAPTION) ) + ' )';
    end;

    //Log( '#3 TKOLForm.GenerateTransparentInits' );
@@ -13581,6 +13557,7 @@
      'wsMinimized', 'wsMaximized' );
var I: Integer;
    S: string; {YS}
+    MainMenuHeight: Integer;
begin
  asm
    jmp @@e_signature
@@ -13671,10 +13648,31 @@
  end;

  //Log( '&7 TKOLForm.SetupFirst' );
+  if not CanResize then
+    S := S + ' and not WS_THICKFRAME';

  if S '' then
    SL.Add( Prefix + AName + '.Style := ' + AName + '.Style' + S + ';' );

+  if not DefaultSize then
+  begin
+    if HasCaption then
+    begin
+      if HasMainMenu then
+        MainMenuHeight := GetSystemMetrics( SM_CYMENU )
+      else
+        MainMenuHeight := 0;
+      if HasBorder then
+       SL.Add( Prefix + AName + '.SetClientSize( ' + IntToStr( (Owner as TForm).ClientWidth ) +
+             ', ' + IntToStr( (Owner as TForm).ClientHeight + MainMenuHeight ) + ' );' );
+    end
+    //+++++++ UaFM
+    else
+      if HasBorder then
+        SL.Add( Prefix + AName +  '.SetClientSize( ' + IntToStr( (Owner as TForm).ClientWidth ) +
+             ', ' + IntToStr( (Owner as TForm).ClientHeight-GetSystemMetrics(SM_CYCAPTION) )
+             + ');' );
+  end;
  //Log( '&8 TKOLForm.SetupFirst' );

{YS}


Дмитрий К   (2007-07-21 15:43:00) [13]


> С VCL же такого не наблюдается.

Если в рантайм менять, то наблюдается.


ElectriC   (2007-07-21 15:24:00) [14]

С VCL же такого не наблюдается.


ElectriC   (2007-07-21 15:22:00) [15]

В "run time" чтобы + 8 пикселей добавлялось - это не слишком нормально, хотя...
P.S. Но с  остальными стилями нормально.


Дмитрий К   (2007-07-21 11:45:00) [16]

По-моему, это нормальное поведение. Поскольку граница окна меняется с "жирной" на тонкую. Проявляется при любых оформлениях и в w98 тоже.


ElectriC   (2007-07-21 03:10:00) [17]


> это баг Висты

Скорее всего Aero, т.к. классический, стандартный стили работают нормально!


ElectriC   (2007-07-21 03:08:00) [18]

Ну вот. Есть варианты, как исправить?
P.S. Или никак?


Дмитрий К   (2007-07-21 01:28:00) [19]

Судя по косвенным данным с MSDN это баг Висты связанный с WS_THICKFRAME


Дмитрий К   (2007-07-21 00:25:00) [20]

Хм. Есть такое. Причем чисто визуально - справа и снизу добавляется некоторое количество пикселей, а Width и Height дают те же значения, что и в дизайнере, но форма реально больше.


Страницы:   1 2

Наверх

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