マスター 教えてください。
やりたい事は、
自前のFormにButton1とEdit1とImage1が配置してあり、
Edit1に文字を入力するとImage1に縦書きで表示される。
また、Button1をクリックするとイメージのまま印刷できる。
私が試みたのは、
逐次表示形式と専用のプレビューフォーム以外の使用の
例を組み合わせました。
※ EnterFormUnit がずばりそのものなのですが、フォームを
フォームの新規作成で作るせいか、コードを書き換えると
コンパイラに叱られてしまいます。
それで、以下のような方法をとりました。
Form1にはplSetPrinter1とplPrev1とボタンとEdit1を配置、
Form2にはImage1とボタンを配置しました。
以下にコードを示します。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,Dialogs,
plPrev, plSetPrinter, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
plSetPrinter1: TplSetPrinter;
plPrev1: TplPrev;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
procedure Kakikomi;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
plPrev1.ProcName := Kakikomi;
plPrev1.PageCount := 1;
plPrev1.FormName := 'Form2';
plPrev1.ShowModal;
end;
procedure TForm1.Kakikomi;
begin
plPrev1.TextSpecial(300,300,270,100,Edit1.text);
end;
end.
=======================================================
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;
type
TForm2 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Image1.Canvas.StretchDraw(Image1.ClientRect,
Form1.plPrev1.GetMetaimage(1));
end;
end.
これを実行して、Form1のボタンを押すと、Form2が表示
されます。ボタンを押すと何かクシャクシャの表示に
なってしまいます。
さらに、一度Form2を閉じて、再びForm1のボタンでForm2を
表示しようとすると、
例外クラスEStackOverflow(メッセージ’スタック
オーバーフロー’)になります。(暴走している!?)
この方法では無理なのでしょうか。
連続して投稿になりますが、よろしくお願いします。
|