Главная страница
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.029 c
10-1123768451
ragman
2005-08-11 17:54
2006.09.24
Передача массива внешнему приложению


3-1153748023
DelphiLexx
2006-07-24 17:33
2006.09.24
TDBGridEh и checkbox ы


1-1155124874
TAS
2006-08-09 16:01
2006.09.24
Проблема с копированием файлов


15-1157456068
H010d Freeze
2006-09-05 15:34
2006.09.24
Build проекта из командной строки


2-1157437863
worldmen
2006-09-05 10:31
2006.09.24
Программное изменение языков.