Конференция "KOL" » Подскажите как обновить форму или контрол
 
  • User (26.02.11 00:41) [0]

    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
    //  if no_msg then  exit;
     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
     //KOLFormPaint(nil,nil,GetDC(ListBox1.Handle));
    //  Form.Hide;  Form.Show;
     
    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 после ресайза?
  • Дмитрий К © (26.02.11 01:00) [1]
    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.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
     listbox1.invalidate;
    end;

    begin
    Form:=NewForm(Applet,'Form').SetSize(640, 480).CenterOnParent;
    Form.OnResize:=TOnEvent( MakeMethod(nil, @KOLFormResize ) );

    ListBox1:=NewListBox(Form,[loNoIntegralHeight]).SetAlign(caClient);
    Listbox1.OnPaint:=TOnPaint( MakeMethod(nil, @KOLFormPaint ) );

    Run(Form);
    end.

  • User (26.02.11 01:06) [2]
    Спасибо!
 
Конференция "KOL" » Подскажите как обновить форму или контрол
Есть новые Нет новых   [134431   +6][b:0][p:0.002]