program listbox;
uses KOL,Windows;
var Form, ListBox1:PControl;
procedure KOLFormPaint(Dummy:Pointer; Sender: PControl; DC: HDC);
const msg = ' Drag and Drop File Here ' ;
begin
ListBox1.Update;
ListBox1.Canvas.Brush.Color:=clAqua;
ListBox1.Canvas.Font.FontHeight:=48;
ListBox1.Canvas.Font.Color := clBlue;
ListBox1.Canvas.TextOut(ListBox1.Width div 2 - ListBox1.Canvas.TextWidth(msg) div 2,ListBox1.Height div 2-ListBox1.Canvas.TextHeight(msg) div 2,msg);
end;
procedure KOLFormResize(Dummy:Pointer; Sender: PObj);
begin
end;
begin
Form:=NewForm(Applet,'Form');
Form.CenterOnParent;
Form.OnPaint:=TOnPaint( MakeMethod(nil, @KOLFormPaint ) );
Form.OnResize:=TOnEvent( MakeMethod(nil, @KOLFormResize ) );
Form.Width:=640;
Form.Height:=480;
ListBox1:=NewListBox(Form,[loNoIntegralHeight]);
Form.Add2AutoFree(ListBox1);
ListBox1.Align:=caClient;
Run(Form);
end.
В этом коде на Listbox'е пишется надпись, но если форму ресайзить или развернуть, то надпись рисуется многократно. Если теперь форму перекрыть другим окном и убрать его, то надпись рисуется нормально.
Как обновить форму или ListBox после ресайза?