Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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]

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



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

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

Наверх





Память: 0.51 MB
Время: 0.002 c
15-1363109461
Jimmy
2013-03-12 21:31
2013.08.11
Графический математический редактор


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


2-1355072723
Pcrepair
2012-12-09 21:05
2013.08.11
Динамическое создание idHTTP или использование потока?


15-1363120202
Юрий
2013-03-13 00:30
2013.08.11
С днем рождения ! 13 марта 2013 среда


15-1357748694
ТимоховД
2013-01-09 20:24
2013.08.11
Delphi XE3





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