Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 17:23   #1
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию Нормальная работа TScrollBox... бывает ли?))

Доброе время суток!

Перерыл я гугл, яндекс, Интернет... но не дали мне ответ! (стихами заговоришь, блин, с этими глюками )
Суть дела: есть ScrollBox и в нём много "панелек" (для простоты) с align=top, которые периодически меняют свои размеры, добавляются новые панельки, убираются старые
Суть проблемы: при появление ScrollBar-a (использую лишь вертикальную прокрутку) часть панелек принимает новую ширину родительской области, а часть панелек нет и "заплывают" под область прокрутки (вот это и есть проблема)

Проблема могла бы решиться постоянным показом ScrollBar, но:
1) Так сделать не получается (Range := Height не считается)
1.а) пытался я ловить сообщения и пересчитывать Range + обновлять привязку компонентов, но это заметно тормозит
2) это не красиво

На ум приходит идея отслеживать появление/исчезновение ScrollBar-а и обновлять привязку компонентов внутри ScrollBox, но как можно это по-человечески реализовать? Не таймер же создавать ради этого, и ловить тупо все сообщения тоже не дело, а какое именно ловить - не знаю.

Буду очень благодарен за помощь в решение этой проблемы.
GreenWizard вне форума Ответить с цитированием
Старый 01.12.2013, 17:52   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ScrollBox.DisableAutoRange; перед изменением видимости и размеров панелей
ScrollBox.EnableAutoRange; после
Насколько помню это помогало в похожей ситуации
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.12.2013, 18:04   #3
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
ScrollBox.DisableAutoRange; перед изменением видимости и размеров панелей
ScrollBox.EnableAutoRange; после
Насколько помню это помогало в похожей ситуации
Очень сомневаюсь, что поможет т. к. ScrollBox не является инициатором изменений размеров "панелек"... добавление/удаление "панелек" можно ещё таким образом сделать, но проблема основная не решится
GreenWizard вне форума Ответить с цитированием
Старый 01.12.2013, 18:09   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
ScrollBox не является инициатором изменений размеров
Причем инициатор или нет?
Код:
  ScrollBox1.DisableAutoRange;  //отключили
  Panel2.Visible:=noT Panel2.Visible;
  ScrollBox1.EnableAutoRange;  //включили
Цитата:
Очень сомневаюсь
Я тоже обычно сомневаюсь пока сам не попробую
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.12.2013, 19:26   #5
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Причем инициатор или нет?
Код:
  ScrollBox1.DisableAutoRange;  //отключили
  Panel2.Visible:=noT Panel2.Visible;
  ScrollBox1.EnableAutoRange;  //включили
Даааааа, прямо супер-архитектура...... может ещё откажемся от ООП? процедурный подход форева =)
около 20 видов "панелек", от простых надписей и до, например, "массивов", и в 19 из них мне проверять не является ли их владельцем scrollbox? очень гибко и профессионально
GreenWizard вне форума Ответить с цитированием
Старый 01.12.2013, 19:39   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Даааааа, прямо супер-архитектура...... может ещё откажемся от ООП? процедурный подход форева
Ну тоды и все карты в руки, ищущий да найдёт
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с TScrollBox nanom1t C++ Builder 1 17.04.2013 09:35
Взять Canvas от TScrollBox Bayazet Общие вопросы Delphi 1 06.12.2011 11:12
3 нормальная форма БД isida_ Microsoft Office Access 0 10.06.2010 20:27
прокрутка TScrollBox Самец_Original Общие вопросы Delphi 0 28.05.2010 22:40
прокрутка в tScrollBox Altera Компоненты Delphi 1 20.10.2008 07:22