Форум: "Начинающим";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2013.08.11;
Скачать: [xml.tar.bz2];




Вниз

Предел ширины контрола 


KilkennyCat ©   (2012-12-09 23:05) [0]

Когда ширина TPanel за 2000 с небольшим, позиционирование (Tpanel.Left) сбивается. Это нормально? Или что-то надо предпринимать?



Игорь Шевченко ©   (2012-12-09 23:10) [1]

Пример ?



Игорь Шевченко ©   (2012-12-09 23:15) [2]

Просто интересно - в одной из задач (даже ветка в потрепаловке была три года назад) я делал окно довольно больших размеров, правда, не Panel, а Scrollbox, проблем с позиционированием не было.



KilkennyCat ©   (2012-12-09 23:18) [3]

пример очень простой, сейчас проэкспериментировал, этот глюк возникает в дезижнтайме, если кинуть на форму панель, установить ей Left в инспекторе объектов равным 0, и там же
Width сделать до 2000 включительно: Left остается 0;
свыше 2000 на некую Х: Left становится равным -Х



KilkennyCat ©   (2012-12-09 23:19) [4]

XE2, Win7x64



KilkennyCat ©   (2012-12-09 23:21) [5]


> этот глюк возникает в дезижнтайме

ну и в рантайме тоже. собственно, сначала тоже в скроллбокс кинул, проект простой, не хотелось особо мучаться, а тут бац, скроллбокс назад левую часть не вернул. Ну, я решил, что фиг с ним, сам проскроллю. А вот фиг, как только за 2000 ширина увеличивается, лефт становится отрицательным и отказывается изменятся (по крайней мере, вправо).



KilkennyCat ©   (2012-12-09 23:24) [6]

Я могу решить эту проблему, сэмулировав. Сложнее немного, но могу.
То есть, не предлагайте альтернатив :) заранее спасибо, но знаю их.
Любопытен именно этот вариант, просто никогда не сталкивался и не думал, что там есть ограничение более чем Integer и/или ресурсы.



Inovet ©   (2012-12-10 00:15) [7]

> [5] KilkennyCat ©   (09.12.12 23:21)
> как только за 2000 ширина увеличивается, лефт становится
> отрицательным и отказывается изменятся

Это проблема 2000-ного года проявилась.:)



DVM ©   (2012-12-10 00:19) [8]


> Inovet ©   (10.12.12 00:15) [7]

2000 точек должно было хватить всем думали в 95 году



KilkennyCat ©   (2012-12-10 00:38) [9]

Вот, не хватило...



KilkennyCat ©   (2012-12-10 00:44) [10]

подрубил второй монитор, получив суммарную ширину более 2500. форма растягивается, панель - нет. однако, есть хорошая новость: не все контролы так глючат, например, скроллбар ведет себя нормально. Что ж, я умею и без панелей...



KilkennyCat ©   (2012-12-10 00:49) [11]

procedure TCustomPanel.WMWindowPosChanged(var Message: TWMWindowPosChanged); - вот где засада.



KilkennyCat ©   (2012-12-10 00:50) [12]

все-таки параллельно работе смотреть фильмы невозможно, проблема проявилась в начале фильма, и разрешилась в конце фильма :)



KilkennyCat ©   (2012-12-10 00:56) [13]

все-таки очень странно.
вот исходник:
procedure TCustomPanel.WMWindowPosChanged(var Message: TWMWindowPosChanged);
var
 BevelPixels: Integer;
 Rect: TRect;
begin
 if FullRepaint or (ShowCaption and (Caption <> "")) then
   Invalidate
 else
 begin
   BevelPixels := BorderWidth;
   if BevelInner <> bvNone then Inc(BevelPixels, BevelWidth);
   if BevelOuter <> bvNone then Inc(BevelPixels, BevelWidth);
   if BevelPixels > 0 then
   begin
     Rect.Right := Width;
     Rect.Bottom := Height;
     if Message.WindowPos.cx <> Rect.Right then
     begin
       Rect.Top := 0;
       Rect.Left := Rect.Right - BevelPixels - 1;
       InvalidateRect(Handle, Rect, True);
     end;
     if Message.WindowPos.cy <> Rect.Bottom then
     begin
       Rect.Left := 0;
       Rect.Top := Rect.Bottom - BevelPixels - 1;
       InvalidateRect(Handle, Rect, True);
     end;
   end;
 end;
 inherited;
end;

то есть, дела капшион панели равным пробелу и нет "проблемы 2000".
Непонятно, почему сразу инвалидэйт не вызвать, в чем проблема, если текста нет? с фуллрепаинтом фиг с ним, зверь неизвестный мне, но влияние текста... странно. я бы еще понял наоборот, что если есть текст - то вот, получите ограничение.



KilkennyCat ©   (2012-12-10 01:32) [14]

не, эт мне показалось. просто не сразу перерисовалось. ща досмотрю кино  и покопаю дальше.



Германн ©   (2012-12-10 01:41) [15]


> KilkennyCat ©   (10.12.12 01:32) [14]
>
> не, эт мне показалось.

Ну вот а я кинулся проверять и уже проверил и не нашел сего предела.
А сообщить об этом не успел :(



KilkennyCat ©   (2012-12-10 01:58) [16]


> Германн ©   (10.12.12 01:41) [15]

версия делфи, виндоус?


> Ну вот а я кинулся проверять и уже проверил и не нашел сего
> предела.


предел есть. мне показалось, что я нашел возможность от него избавиться.



Германн ©   (2012-12-10 02:02) [17]


> KilkennyCat ©   (10.12.12 01:58) [16]
>
>
> > Германн ©   (10.12.12 01:41) [15]
>
> версия делфи, виндоус?
>

Д2007, ХР SP3


> предел есть.

Готов выложить свой тестовый проект.



Германн ©   (2012-12-10 02:03) [18]

Отчасти оффтоп, отчасти нет.
Вспомнил свои ранние непонятки с максимальными размерами формы.



KilkennyCat ©   (2012-12-10 02:04) [19]

вот блин... готов провалится от стыда. проверил все тщательно, и обнаружил у себя перекрытие WMWindowPosChanged где сам же и накосячил.
Давно его зачем-то сделал, непомню  (у меня типа болванки-заготовки написано, на базе которой я леплю маленькие программки)

Тысяча извинений, проблемы нет.



Германн ©   (2012-12-10 02:15) [20]


> KilkennyCat ©   (10.12.12 02:04) [19]
>
> вот блин... готов провалится от стыда. проверил все тщательно,
>  и обнаружил у себя перекрытие WMWindowPosChanged где сам
> же и накосячил.
> Давно его зачем-то сделал, непомню  (у меня типа болванки-
> заготовки написано, на базе которой я леплю маленькие программки)

У меня тоже есть подобная болванка, появившаяся после настоятельного пожелания коллег из техотдела, чтобы тестовые программы всегда нормально работали(выглядели) на нетбуке (1024х600) :)



Anatoly Podgoretsky ©   (2012-12-10 07:14) [21]

> KilkennyCat  (10.12.2012 00:50:12)  [12]

Главаря всегда убивают в конце фильма.



Игорь Шевченко ©   (2012-12-10 10:43) [22]

KilkennyCat ©   (10.12.12 02:04) [19]

Never attribute to malice... :)



KilkennyCat ©   (2012-12-11 01:48) [23]

понял, зачем я тогда мудрил... клипрект теперь не отрабатывает :)
сплошной малайс.



Германн ©   (2012-12-11 02:09) [24]


> KilkennyCat ©   (11.12.12 01:48) [23]
>
> понял, зачем я тогда мудрил... клипрект теперь не отрабатывает
> :)
>

А если ещё подумать и попробовать? А потом попробовать и ещё подумать?



KilkennyCat ©   (2012-12-11 02:29) [25]

ага. я этим занимаюсь, только я упростил процесс, выкинув "подумать" :)



Anatoly Podgoretsky ©   (2012-12-11 08:16) [26]

> KilkennyCat  (11.12.2012 02:29:25)  [25]

Правильно, чего думать, трясти надо



KilkennyCat ©   (2012-12-11 09:32) [27]


> Anatoly Podgoretsky ©   (11.12.12 08:16) [26]

ньютону и яблоко: вначале было трясение, падение, ударение и лишь последним - думанье.




Форум: "Начинающим";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2013.08.11;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.77 MB
Время: 0.038 c
15-1363170145     O'ShinW               2013-03-13 14:22  2013.08.11  
А нет ли тут бага? Закон о торговле.


3-1291842065      помогите новичку      2010-12-09 00:01  2013.08.11  
откат изменений нескольких строк и видеть что поменяли


15-1363092611     Дмитрий С             2013-03-12 16:50  2013.08.11  
Как перезапустить себя.


2-1354558553      Irmantukas            2012-12-03 22:15  2013.08.11  
TMS DBPlanner


15-1361520029     azlk52                2013-02-22 12:00  2013.08.11  
максимальное количество подключений ХР