Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

Resize   Найти похожие ветки 

 
dellam   (2006-08-14 08:34) [0]

Привет! Нужно, чтоб при изменении размера окна, изменялись размеры компонентов. Код:

procedure TfrmMain.FormResize(Sender: TObject);
begin
ListBox1.Height := frmMain.Height-100;
ListBox1.Width  := frmMain.Width-8;
Btn1.Top   := frmMain.Height-64;
Btn2.Width := frmMain.Width-15;
end;

ListBox прорисовываю отдельной процедурой ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState). Компилятор ошибок не выдает, а при исполнении ошибка EAccessViolation.
Если без LB все нормально.


 
MBo ©   (2006-08-14 08:53) [1]

У меня в BDS2006 такого нет, но попробуй следующее -
Заведи логический флаг с начальным значение false, выставляй его в True в OnShow формы, и проверяй флаг при работе с ListBox


 
DprYg ©   (2006-08-14 08:56) [2]


> Нужно, чтоб при изменении размера окна, изменялись размеры
> компонентов.

Для проектирования окон с изменяемыми размерами, по-моему, используются св-ва Align(выравнивание), Anchors(привязка), Constraints(ограничение на размер) и ScaleBy. Или я неправ?


 
dellam   (2006-08-14 09:14) [3]

Спосибо! все отлично


 
Loginov Dmitry ©   (2006-08-14 11:01) [4]

> dellam   (14.08.06 08:34) [0]
>
> ListBox прорисовываю отдельной процедурой ListBox1DrawItem(Control:
> TWinControl; Index: Integer;
> Rect: TRect; State: TOwnerDrawState). Компилятор ошибок
> не выдает, а при исполнении ошибка EAccessViolation.
> Если без LB все нормально.


Ошибка возникает в другом месте, либо код ListBox1DrawItem написан криво.

Следующий код работает и в D6 и в D7:


procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 with ListBox1.Canvas do
 begin
   Brush.Color := clWhite;
   Pen.Color := clWhite;
   Pen.Style := psSolid;
   if odSelected in State then
   begin
     Pen.Style := psDot;
     Pen.Color := clBlack;
   end;
   Rectangle(Rect);
   Brush.Style := bsClear;
   Font.Color := clBlack;
   TextOut(Rect.Left + 3, Rect.Top + 1, ListBox1.Items[Index]);
   Brush.Style := bsSolid;
 end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
 ListBox1.Width := Width - 200;
end;



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

Текущий архив: 2006.09.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.046 c
15-1157570633
Комбинатор
2006-09-06 23:23
2006.09.24
BDS2006. Внедрение хелпа


15-1157243641
RASkov
2006-09-03 04:34
2006.09.24
Сенькс за помощь


15-1157108513
rusPHP
2006-09-01 15:01
2006.09.24
авторизация и регистрация


2-1157360717
com
2006-09-04 13:05
2006.09.24
Блокировщик виндувс


11-1132368516
-=Mike=-
2005-11-19 05:48
2006.09.24
Главная форма не точно отображает иконку программы