Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ширина компонента в ScrollBox, и компонентов внутри компонента 
:(
    Опции темы
wesadex
Дата 24.11.2005, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 21.6.2005

Репутация: нет
Всего: нет



В общем написал компонент в виде маленькой выпадающей панельки с заголовком (по клике на котором она и выпадает) наследник TPanel. Если его запихать в ScrollBox на всю его ширину (так чтобы скрола не было видно в дизайн-тайме, но Align оставить alCustom или alNone) и в реал-тайме сделать так, чтобы скрол появился, тогда сам скролл перекроет мою панельку и ее содержимое, но горизонтального скролла не появится. Как сделать так, чтобы этого не происходило? Насколько я понимаю ScrollBox посылает какое-то сообщение контролам внутри себя, когда рисует скролл. Вот какое? И как послать это же (или другое с той же целью) сообщение всем конторолам внутри моей панельки, чтобы они тоже сжались нормально?

PM MAIL   Вверх
Alexeis
Дата 24.11.2005, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Верятно это сообщение WM_PAINT


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 24.11.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



wesadex
не уверен, но попробуй resize обрабатывать и внем устанавливать заного width.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
wesadex
Дата 24.11.2005, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 21.6.2005

Репутация: нет
Всего: нет



Чей resize? Мне надо в компоненте обработчик сделать - он не может ничего знать о том, что у Скроллбокса скролл нарисовался... В том-то и проблема, что мне нужен рабочий компонент, а не компонент на раз - дляодной прикладушки!
PM MAIL   Вверх
Rennigth
Дата 24.11.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Код

  TScaledPanel = class(TPanel)
  private
    procedure OnParentResize(ASender: TObject);
  protected
    procedure DoParentResize;
    procedure SetParent(AParent: TWinControl); override;
  end;

procedure TScaledPanel.DoParentResize;
begin
  Width := Parent.Width;
end;

procedure TScaledPanel.OnParentResize(ASender: TObject);
begin
  DoParentResize;
end;

procedure TScaledPanel.SetParent(AParent: TWinControl);
begin
  inherited;
  if Assigned(Parent) and Parent is TScrollBox then
    TScrollBox(Parent).OnResize := OnResize;
end;


но это скорее всего не поможет, здесь надо что-то другое ловить... попробую что-нибудь придумать попозже.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
wesadex
Дата 25.11.2005, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 21.6.2005

Репутация: нет
Всего: нет



Можно переформулировать вопрос: Какое сообщение посылает предок контролам внутри себя, когда рисует скролл и/или когда его ресайзуют и как его правильно обработать? OnParentResize работает, кстати, только в том случае, если предку изменили размер... а в моем случае размер предка не меняется, т.е. Width и Height остаются неизменными, только скролл прорисовывается! Говорят правильность ответа зависит от правильности постановки вопроса... smile
PM MAIL   Вверх
Alexeis
Дата 25.11.2005, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



При появлении ScrollBar - в не отсылаются сообщения вообще
а при их исчезновении посылаются
WM_ERASEBKGND
WM_PAINT и
WM_USER + 0xB933


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0810 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.