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

Вниз

Проблема с размером окна в XP.   Найти похожие ветки 

 
Sagrer   (2003-07-14 16:20) [0]

В общем написал на KOL+MCK прогу, вроде все пашет, во время тестирования у одного из тестеров стоял XP, со стандартным скином (тема стола кажется - там у окон другие заголовки, и они чуть выше)

В общем за счет того что в ХР получился заголовок окна выше, а размер самого окна не изменился, мне обрезало кнопки внизу (отступ был маленький, в вин 98 и вообще когда обычный заголовок у окна все было нормально)........... в общем проблема получается в том, что высота формы фиксированная, и в нее входит заголовок, и если этот заголовок имеет нестандартную высоту, то часть окна без заголовка, получается имеет меньший размер в высоту...

Не знает ли кто, как мне вычислить именно расстояние от нижней границы заголовка окна до нижней границы самого окна?

Советовать проверять тип системы, и если XP - то увеличивать высоту окна - не надо, т.к. в ХР в частности есть и нормальный вариант отображения заголовка окна, и наверняка может быть вариант с самодельной темой стола когда заголовок будет и больше...
Кстати аналогично и с краями формы, правда там обрезается меньше, и не так заметно...


 
Gandalf ©   (2003-07-14 18:33) [1]

Попробуй ClientWidth/Height/Rect.


 
Sagrer   (2003-07-16 02:01) [2]

Спасибо, разобрался.

Но появились невеселые мысли - это что, получается, для всех окон такое надо делать? Кстати, в прогах, написанных на VCL под вин с нормальными настройками (когда визуально форма генерилась в винде с нормальными заголовками окна), и запущеных из под XP со скином ( с увеличенным заголовком), такое тоже наблюдается? Проверить это к сожалению не могу - у меня win2k PRO + win98 стоит.


 
Gandalf ©   (2003-07-16 09:14) [3]


> Но появились невеселые мысли - это что, получается, для
> всех окон такое надо делать?


Модет попросить Кладова ввести в MCK Form.UseClientSizes - что устанавливались ClientWidth/ClientHeight - или типа того.


> Кстати, в прогах, написанных на VCL под вин с нормальными
> настройками (когда визуально форма генерилась в винде с
> нормальными заголовками окна), и запущеных из под XP со
> скином ( с увеличенным заголовком), такое тоже наблюдается?


Да.


 
Кладов   (2003-07-16 16:28) [4]

До сих пор SetClientSize использовался только для формы с CanResize=false. Нет проблем поправить, чтобы для всех форм использовался SetClientSize вместо SetSize, так и сделаю.


 
Sagrer   (2003-07-17 20:47) [5]

а я и не знал про  SetClientSize. Поэтому делал сложнее -

If Form.Height - Form.ClientHeight <> 27 then begin
     Form.Height := Form.Height - (27 - (Form.Height - Form.ClientHeight));
   end;

Тоесть тут

1) привязка к высоте заголовка (27) - высчитал опытным путем для своих настроек - если вдруг форма будет проектироваться на другом компе с другой высотой заголовка - число надо пересчитывать, а это плохо.

2) Изменяется только выстоа окна, а там обрезаются и края (хотя это можно поправить).

Поэтому когда прочитал про SetClientSize, решил сделать по другому:

OldResize := Form.CanResize;  //Запомнить как было
Form.CanResize := true; //Когда false, CanResize почемуто не срабатывает
Form.SetClientSize(444,28);
Form.CanResize := OldResize;  //Вернуть как было

Но после использования Form.SetClientSize(444,28);, при попытке сменить Form.CanResize происходит непонятное - во первых, хотя оно и меняется (смотрел watch-ем), но реально форма остается как была в момент использования Form.SetClientSize(444,28);. - если была Form.CanResize = false;, то после

Form.SetClientSize(444,28);
Form.CanResize := true;

ее размер всеравно нельзя изменить

Во вторых - непонятным образом изменяется Width и Heigh, становится меньше толи на 2, толи на 3 пиксела - точно не смотрел, если честно, не смотрел меняются ли они вообще (в watch), но форма становится меньше.


 
Gandalf ©   (2003-07-17 22:47) [6]


> Form.CanResize := true; //Когда false, CanResize почемуто
> не срабатывает


Фича KOL - если размер менять нельзя, то Width,Height и иже - не пашут, для VCL не привычно.


> Во вторых - непонятным образом изменяется Width и Heigh,
> становится меньше толи на 2, толи на 3 пиксела


Надо смотреть - может API шалит.


 
Sagrer   (2003-07-18 02:23) [7]

у меня в предыдущем посте опечатка :(

"Form.CanResize := true; //Когда false, CanResize почемуто не срабатывает"

означает

"Form.CanResize := true; //Когда false, SetClientSize почемуто не срабатывает"

, хотя это и так поняли, но на всякий случай это сказал.


 
Dimaxx ©   (2003-07-19 23:48) [8]

У меня почти такая же ботва была. Состояние главной формы  стояло Maximized. В ХР неправильно определялся размер окна - нижняя часть заезжала за панель задач, у кореша - еще и сверху оставался промежуток с обоями. Помогла тока ShowWindow(Form.GetWindowHandle,SW_MAXIXMIZED).


 
SPeller ©   (2003-07-20 05:36) [9]

Тоже с этим сталкивался. Помогала временная установка CanResize в True.



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

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

Наверх





Память: 0.47 MB
Время: 0.033 c
1-1079344290
Elisa
2004-03-15 12:51
2004.04.04
Копирование файла


3-1078787526
Soldier
2004-03-09 02:12
2004.04.04
Помогие чайнику с базой Paradox


7-1074492835
Dmitriy_G
2004-01-19 09:13
2004.04.04
Как мне проверить наличие сигнала CTS, в COM


1-1079696077
Max
2004-03-19 14:34
2004.04.04
Сортировка в TList


14-1079005085
KSergey
2004-03-11 14:38
2004.04.04
По поводу .NET и ее перспективности





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский