Re: Блокнот Графомана
Добавлено: 16.10.2017 13:26:22
Не пойму где косяк? для удобства попробовал изменить пример...
- Код: Выделить всё
unit mainform;
{
Richmemo Inline demo
Author: Dmitry 'skalogryz' Boyarintsev
*****************************************************************************
* *
* This file is part of the Rich Memo package *
* You're free to use the project and the file in anyway you find fit. *
* You're free to copy and modify the file. No need to keep the refernce *
* to the origin of the file. *
* *
* Cheetah logo image has been aquired from freepascal site. *
* http://www.freepascal.org/pic/logo.gif *
* *
*****************************************************************************
}
{$mode objfpc}{$H+}
interface
uses
Types, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
LCLIntf, StdCtrls, ExtCtrls, RichMemo, RichMemoUtils;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Img: TImage;
ImgCanvas:TCanvas;
OpenDialog1: TOpenDialog;
RichMemo1: TRichMemo;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
//framecnt : Integer;
anims : TList;
procedure AnimRemove(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
type
{ TInlineImage }
TInlineImage = class(TRichMemoInline)
public
BitMap:TBitmap;
visible : Boolean;
OnRemove : TNotifyEvent; //?
destructor Destroy; override;
procedure Draw(Canvas: TCanvas; const ASize: TSize); override;
procedure SetVisible(AVisible: Boolean); override;
end;
{ TInlineImage }
destructor TInlineImage.Destroy;
begin
if Assigned(OnRemove) then OnRemove(self);
inherited Destroy;
end;
procedure TInlineImage.Draw(Canvas: TCanvas; const ASize: TSize);
begin
Canvas.Draw(ASize.cx,ASize.cy, Bitmap);
Canvas.Refresh;
end;
procedure TInlineImage.SetVisible(AVisible: Boolean);
begin
visible:=AVisible;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
LoadRTFFile( RichMemo1, OpenDialog1.FileName );
end;
procedure TForm1.Button2Click(Sender: TObject);
var
inlineimg : TInlineImage;
begin
inlineimg := TInlineImage.Create;
inlineimg.BitMap:=Form1.Img.Picture.Bitmap;
RichMemo1.InDelInline(inlineimg, RichMemo1.SelStart, 0, Size(round(Form1.Img.Width),round(Form1.Img.Height)));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
anims:=TList.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
anims.Free;
anims:=nil;
end;
procedure TForm1.AnimRemove(Sender: TObject);
begin
if Assigned(anims) then anims.Remove(Sender);
end;
end.
Картинка не пустая, но в результате вставляется пустое место(((