Форум: "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