Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

Панель с кнопками   Найти похожие ветки 

 
Tor   (2004-06-24 16:38) [0]

Пишу компонент похожий на dbnavigator, имеется панель, а на ней кнопки, в ряд. При изменении размеров этой панели  через растягивание границ с помощью мыши (design-time), вызывается процедура SetBounds, где сравниваются новые размеры с минимальными, и если что, то ограничиваются.
Вопрос: как изменить размеры кнопок при изменении размеров панели, так что бы они равномерно занимали всю площадь панели. Если изменять в этой же процедуре то при попытке разместить компонент на форме, выскакивает AVS.

Зарание благодарю!


 
Snap ©   (2004-06-24 16:43) [1]

OnResize ?


 
Tor   (2004-06-24 20:44) [2]

Нет OnResize это событие и срабатывает в run-time, а мне надо в процессе разработки приложения


 
Mim1 ©   (2004-06-24 22:28) [3]

Если в DBNavigatro"е это работает то может было лучше спросить "как сделать что бы не вылетал AV" не забыв привести код?


 
Rem   (2004-06-26 12:25) [4]

AlignControls


 
Tor   (2004-06-29 11:59) [5]

procedure TDBNavigatorVertical.SetBounds(ALeft, ATop, AWidth,
 AHeight: Integer);
begin
 if AWidth < 20 then AWidth := 20;
 if AHeight < 80 then AHeight := 80;

 FButton.SetBounds(0, 0, AWidth, (AHeight div 4));

 inherited SetBounds(ALeft, ATop, AWidth, AHeight);
end;

Если убрать SetBounds для FButton то AVS вылазить не будет,
но мне нужно что бы размеры кнопки тоже менялись относительно панели. Меня восне осенила одна мысль, может эти кнопки нужно заново создавать с новыми размерами и положением, предварительно уничтожив. Или может есть более простое решение?


 
Юрий Зотов ©   (2004-06-29 14:02) [6]

> Tor   (29.06.04 11:59) [5]

Пересоздавать кнопки не нужно, вполне достаточно создать их один раз - в конструкторе компонента-контейнера.

AV вылезает, видимо, потому, что в момент вызова SetBounds кнопки еще не созданы (FButton = nil). Это может быть, например из-за того, что в конструкторе СНАЧАЛА вызывается inherited, а ПОТОМ создаются кнопки (при вызове inherited происходит установка размеров, что приводит к вызову SetBounds и к обращению к FButton - а кнопок еще нет). Если так, то надо просто-напросто поменять местами строчки в конструкторе - СНАЧАЛА создать кнопки, а уже ПОТОМ вызывать inherited.


 
Tor   (2004-06-29 20:12) [7]

Порой все ошибки скрываютя в очень простых вещах, на которые не обращаешь внимания, а вместо этого грузишся чем-то умопомрачительным.
Благодоря этому перерыл кучу информации и узнал что-то новое, но и потратил время. Вот только бы не забыть.

Всем большое спасибо!!!



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

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

Наверх





Память: 0.46 MB
Время: 0.034 c
8-1110545465
Darklight
2005-03-11 15:51
2005.07.11
Canvas does not allow drawing


3-1117285895
Darkmaster
2005-05-28 17:11
2005.07.11
XML и сохранение базы


1-1118902502
Магнум
2005-06-16 10:15
2005.07.11
TListView and "Array index out of bounds"


14-1118348837
Ferg
2005-06-10 00:27
2005.07.11
DirectX


14-1116797256
Piter
2005-05-23 01:27
2005.07.11
Вспоминая старое...





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