Форум: "Основная";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c