Показать сообщение отдельно
  #6  
Старый 16.03.2015, 16:30
Аватар для Alex_4444
Alex_4444 Alex_4444 вне форума
Прохожий
 
Регистрация: 22.12.2014
Сообщения: 14
Версия Delphi: XE5
Репутация: 50
По умолчанию

использовал код NumLock-а? Там же просто пример. Поэтому у тебя каждые 33 наносекунды окно выскакивает))))Нужно вникать в код же)))
Под твою задачу как-то так:
Код:
unit Unit2;
 
interface
 
uses
  System.Classes, Vcl.Graphics;
 
type
  TThread1 = class(TThread)
  protected
    procedure Execute; override;
    procedure RepaintPaintBox(Bitmap : TBitmap);
  end;
 
var
  Thread1: TThread1;
  Bitmap1: TBitmap;
 
implementation
 
uses
  Unit1;
 
procedure TThread1.Execute;
begin
  Bitmap1 := TBitmap.Create;
  // делай со своим битмапом что угодно затем отдавай форме

  Synchronize(RepaintPaintBox(Bitmap1));

  Bitmap1.Free;
  
end;

procedure TThread1.RepaintPaintBox(Bitmap : TBitmap);
begin
   Form1.RepaintMyPaintBoxPlease(Bitmap);
end;
 
end.

Ну а главный модуль как-то так:

Код:
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Unit2, Vcl.ExtCtrls;
 
type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure PaintBox1Paint(Sender: TObject);
    public
    bitmap1 : TBitmap;
    procedure RepaintMyPaintBoxPlease(Bitmap: TBitmap);
  end;
 
var
  Form1: TForm1;

 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Bitmap1.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Bitmap1 := TBitmap.create;
   Thread1 := TThread1.Create;
end;
 
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  // эта процедура нам по сути не нужна ))))
end;

procedure RepaintMyPaintBoxPlease(Bitmap: TBitmap);
begin
    Bitmap1.Assign(Bitmap);
    // копируем изображение из Bitmap1 в PaintBox1
    BitBlt(Form1.PaintBox1.Canvas.Handle, 0, 0,
             Bitmap1.Width,  Bitmap1.Height,
             Bitmap1.Canvas.Handle, 0, 0, SrcCopy);
    PaintBox1.Repaint;
end; 

end.
__________________
Самые сильные программисты были на заре компьютеризации.
И чем дольше я программист, тем больше это понимаю - мы до сих пор поддерживаем их код...
Ответить с цитированием