![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Vista Aero [Delphi]
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 дают те же значения, что и в дизайнере, но форма реально больше.