Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2

KilkennyCat ©   (2012-12-09 23:05:00) 

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


KilkennyCat   (2012-12-11 09:32:00) [1]


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

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


Anatoly Podgoretsky   (2012-12-11 08:16:00) [2]

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

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


KilkennyCat   (2012-12-11 02:29:00) [3]

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


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


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

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


KilkennyCat   (2012-12-11 01:48:00) [5]

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


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

KilkennyCat ©   (10.12.12 02:04) [19]

Never attribute to malice... :)


Anatoly Podgoretsky   (2012-12-10 07:14:00) [7]

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

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


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


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

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


KilkennyCat   (2012-12-10 02:04:00) [9]

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

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


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

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


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


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

Д2007, ХР SP3


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

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


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


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

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


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


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


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


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

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


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

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


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

все-таки очень странно.
вот исходник:
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 00:50:00) [16]

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


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

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


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

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


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

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


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


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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо