Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.16;
Скачать: CL | DM;

Вниз

Vista Aero   Найти похожие ветки 

 
ElectriC ©   (2007-07-20 20:25) [0]

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


 
Дмитрий К ©   (2007-07-20 20:32) [1]

У меня не добавляет.


 
ElectriC ©   (2007-07-20 21:37) [2]

По-началу всё нормально! Но стоит добавить пару Buttons, Edit и всё.


 
Дмитрий К ©   (2007-07-20 21:49) [3]

Это как-то визуально определяется?
А то я добавил пару Buttons, Edit и никаких +8 не вижу.


 
ElectriC ©   (2007-07-20 23:36) [4]

Когда CanResize := True, тогда и добавляется + 8 пикселей к ширине и высоте формы.
P.S. Это видно в "run time"!!!


 
ElectriC ©   (2007-07-21 00:00) [5]

Сорри за ошибку: Когда CanResize := False!!!


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

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


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

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


 
ElectriC ©   (2007-07-21 03:08) [8]

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


 
ElectriC ©   (2007-07-21 03:10) [9]


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

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


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

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


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

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


 
ElectriC ©   (2007-07-21 15:24) [12]

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


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


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

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


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

Вот патч, который это фиксит:
--- 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}


 
ElectriC ©   (2007-07-23 13:53) [15]


> Yury Sidorov

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


 
ElectriC ©   (2007-07-24 04:40) [16]

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


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


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

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


 
ElectriC ©   (2007-07-24 16:09) [18]

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


 
ElectriC ©   (2007-07-24 16:10) [19]


> довавлять

добавлять


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

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


 
ElectriC ©   (2007-07-24 17:08) [21]

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


 
Andrey_rus ©   (2007-07-31 16:41) [22]

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


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


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

2.75

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


 
Andrey_rus ©   (2007-07-31 17:35) [24]

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


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


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

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



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

Текущий архив: 2008.03.16;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.011 c
15-1202132286
fics
2008-02-04 16:38
2008.03.16
Графопостроилки


3-1193483771
TheEd
2007-10-27 15:16
2008.03.16
Оптимизация сетевого траффика


2-1203336226
Hadroran
2008-02-18 15:03
2008.03.16
Закрытие формы


2-1203282899
batya-x
2008-02-18 00:14
2008.03.16
как поймать сообщение о изменеие картинки в IMAGE


15-1202372045
Iam
2008-02-07 11:14
2008.03.16
RAdmin