Главная страница
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.033 c
3-1153653469
londinium
2006-07-23 15:17
2006.09.24
IBX и DeleteSQL()


3-1153126192
nkolya
2006-07-17 12:49
2006.09.24
Синхронизация двух БД


15-1157621569
Delphi basic
2006-09-07 13:32
2006.09.24
Кто как придумывает названия разрабатываемым программам?


1-1155502154
FireMan_Alexey
2006-08-14 00:49
2006.09.24
Вопрос по поводу Hook-a


4-1148160824
ychenick
2006-05-21 01:33
2006.09.24
WinApi FindNextFile