2015-04-15 3 views
2

У меня есть форма, которую я очищаю растровое изображение для отправки на маленький встроенный TFT-дисплей. Затем я вставляю события касания с дисплея в форму для активации элементов управления. Все это работает очень хорошо, если форма не видна. Если он перемещается с видимого рабочего стола, сводится к минимуму или закрыт, он не получит событие рисования и никогда не будет обновляться.Форсирование формы Delphi, когда ее не видно

Есть ли способ заставить холст перерисовать себя видимым или нет? Все очевидные вещи, такие как call repaint, не работают.

ответ

3

Да, вы можете использовать метод PaintTo на форме:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Bitmap: TBitmap; 
begin 
    Bitmap := TBitmap.Create; 
    Bitmap.Width := Form2.Width; 
    Bitmap.Height := Form2.Height; 

    Form2.PaintTo(Bitmap.Canvas, 0, 0); 
    Image1.Picture.Assign(Bitmap); 
    Bitmap.Free; 
end; 

Im мой маленький пример, который я сделал проект с двумя формами Form1 и Form2. На Form2 я разместил метку и таймер.

Вот код для Form2

procedure TForm2.Timer1Timer(Sender: TObject); 
begin 
    Label1.Caption := FloatToStr(now); 
end; 

И я ковшики хорошо.

+0

Я всегда забываю о методе PaintTo. Благодарю. – Martin

Смежные вопросы