Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Delphi填写使用rtf文件制作的表格模板_Delphi_Delphi 2010 - Fatal编程技术网

使用Delphi填写使用rtf文件制作的表格模板

使用Delphi填写使用rtf文件制作的表格模板,delphi,delphi-2010,Delphi,Delphi 2010,我有一个rtf格式的表格 我想知道是否有可能在运行时将不同的内容放入单元格中 这是一个截图。某些空白字段需要填写一个值 要在TRichEdit中使用现有RTF内容,请将其加载到组件的文本或线条属性中: RichEdit1.Lines.LoadFromFile(rtfFilename); -或- 我不确定您希望如何以编程方式创建或修改基于某些现有未指定RTF内容的表,打印它,等等。通过询问丰富的编辑和常规编辑,很难理解 您在一篇评论中问到,如何在TRichEdit中创建表: procedure

我有一个rtf格式的表格

我想知道是否有可能在运行时将不同的内容放入单元格中

这是一个截图。某些空白字段需要填写一个值


要在TRichEdit中使用现有RTF内容,请将其加载到组件的文本或线条属性中:

RichEdit1.Lines.LoadFromFile(rtfFilename);
-或-

我不确定您希望如何以编程方式创建或修改基于某些现有未指定RTF内容的表,打印它,等等。通过询问丰富的编辑和常规编辑,很难理解

您在一篇评论中问到,如何在TRichEdit中创建表:

procedure TForm1.PutTableIntoRichEdit;
begin
  RichEdit1.Text := '{\rtf1\ansi\deff0'#13#10+
'\trowd'#13#10+
'\cellx1000'#13#10+
'\cellx2000'#13#10+
'\cellx3000'#13#10+
'cell 1\intbl\cell'#13#10+
'cell 2\intbl\cell'#13#10+
'cell 3\intbl\cell'#13#10+
'\row'#13#10+
'}' ;
end;

如果您想在上面显示的屏幕截图中使用RTF内容,在您的delphi程序中,只需加载它并尝试一些东西,然后问一个特定的问题。向我们显示microsoft word的屏幕截图无助于澄清您的问题。

要使用现有RTF内容,请将其加载到组件的文本或行属性中:

RichEdit1.Lines.LoadFromFile(rtfFilename);
-或-

我不确定您希望如何以编程方式创建或修改基于某些现有未指定RTF内容的表,打印它,等等。通过询问丰富的编辑和常规编辑,很难理解

您在一篇评论中问到,如何在TRichEdit中创建表:

procedure TForm1.PutTableIntoRichEdit;
begin
  RichEdit1.Text := '{\rtf1\ansi\deff0'#13#10+
'\trowd'#13#10+
'\cellx1000'#13#10+
'\cellx2000'#13#10+
'\cellx3000'#13#10+
'cell 1\intbl\cell'#13#10+
'cell 2\intbl\cell'#13#10+
'cell 3\intbl\cell'#13#10+
'\row'#13#10+
'}' ;
end;

如果您想在上面显示的屏幕截图中使用RTF内容,在您的delphi程序中,只需加载它并尝试一些东西,然后问一个特定的问题。向我们展示microsoft word的屏幕截图无助于澄清您的问题。

您编写了一些空白字段需要编辑-如果这意味着RTF是某种模板,其中需要以编程方式填充空白字段,我会这样做:

例如,使用文本编辑器打开RTF文档OpenOffice或MS Word 在空字段中插入特殊占位符字符串,如$field1$,$field2$。。。 保存文档 在您的Delphi应用程序中,例如使用TStringlist将RTF加载到字符串中 使用Delphi字符串函数查找特殊占位符字符串并将其替换为实际值
您编写了一些需要编辑的空白字段-如果这意味着RTF是某种模板,其中的空白字段需要以编程方式填充,那么我会这样做:

例如,使用文本编辑器打开RTF文档OpenOffice或MS Word 在空字段中插入特殊占位符字符串,如$field1$,$field2$。。。 保存文档 在您的Delphi应用程序中,例如使用TStringlist将RTF加载到字符串中 使用Delphi字符串函数查找特殊占位符字符串并将其替换为实际值
要在一张纸上打印表单,只需在打印机的画布上绘制即可

procedure TForm1.Button1Click(Sender: TObject);
var
  y, Margin, Col2: integer;
  LineHeight: integer;
begin
  with TPrintDialog.Create(nil) do
    try
      if not Execute then
        Exit;
    finally
      Free;
    end;

  Printer.BeginDoc;

  Printer.Title := 'Sample Form';
  Printer.Canvas.Font.Name := 'Arial';
  Printer.Canvas.Font.Size := 11;

  Margin := 5*Printer.Canvas.TextWidth('M');
  Col2 := 35*Printer.Canvas.TextWidth('M');
  LineHeight := 3 * Printer.Canvas.TextHeight('M') div 2;

  y := Margin;

  Printer.Canvas.Font.Style := [fsBold];
  Printer.Canvas.TextOut(MARGIN, y, 'Name: ');
  Printer.Canvas.Font.Style := [];
  Printer.Canvas.TextOut(Col2, y, 'Andreas Rejbrand');

  inc(y, LineHeight);

  Printer.Canvas.Font.Style := [fsBold];
  Printer.Canvas.TextOut(MARGIN, y, 'Age: ');
  Printer.Canvas.Font.Style := [];
  Printer.Canvas.TextOut(Col2, y, '23');

  inc(y, LineHeight);

  Printer.Canvas.Font.Style := [fsBold];
  Printer.Canvas.TextOut(MARGIN, y, 'Nationality: ');
  Printer.Canvas.Font.Style := [];
  Printer.Canvas.TextOut(Col2, y, 'Swedish');

  Printer.EndDoc;

end;

结果:

要在一张纸上打印表单,只需在打印机的画布上绘制即可

procedure TForm1.Button1Click(Sender: TObject);
var
  y, Margin, Col2: integer;
  LineHeight: integer;
begin
  with TPrintDialog.Create(nil) do
    try
      if not Execute then
        Exit;
    finally
      Free;
    end;

  Printer.BeginDoc;

  Printer.Title := 'Sample Form';
  Printer.Canvas.Font.Name := 'Arial';
  Printer.Canvas.Font.Size := 11;

  Margin := 5*Printer.Canvas.TextWidth('M');
  Col2 := 35*Printer.Canvas.TextWidth('M');
  LineHeight := 3 * Printer.Canvas.TextHeight('M') div 2;

  y := Margin;

  Printer.Canvas.Font.Style := [fsBold];
  Printer.Canvas.TextOut(MARGIN, y, 'Name: ');
  Printer.Canvas.Font.Style := [];
  Printer.Canvas.TextOut(Col2, y, 'Andreas Rejbrand');

  inc(y, LineHeight);

  Printer.Canvas.Font.Style := [fsBold];
  Printer.Canvas.TextOut(MARGIN, y, 'Age: ');
  Printer.Canvas.Font.Style := [];
  Printer.Canvas.TextOut(Col2, y, '23');

  inc(y, LineHeight);

  Printer.Canvas.Font.Style := [fsBold];
  Printer.Canvas.TextOut(MARGIN, y, 'Nationality: ');
  Printer.Canvas.Font.Style := [];
  Printer.Canvas.TextOut(Col2, y, 'Swedish');

  Printer.EndDoc;

end;


结果是:

我真的不明白。您可能需要详细说明一下。您还可以提供屏幕截图、示例RTF文件等。是否编辑和打印RTF文件?就用它吧。但这个问题几乎无法回答,除非得到显著改善,否则将吸引接近票数的选票。是否要制作一个具有所有表格编辑和格式设置功能的微型版Microsoft Word?你最好更具体一点。那么我如何使用TRichEdit创建表呢?@user859104:然后手动绘制到打印机。画布!这非常容易!我真的不明白。您可能需要详细说明一下。您还可以提供屏幕截图、示例RTF文件等。是否编辑和打印RTF文件?就用它吧。但这个问题几乎无法回答,除非得到显著改善,否则将吸引接近票数的选票。是否要制作一个具有所有表格编辑和格式设置功能的微型版Microsoft Word?你最好更具体一点。那么我如何使用TRichEdit创建表呢?@user859104:然后手动绘制到打印机。画布!这非常容易+1用于手动编码RTF。但是,我怀疑这对OP-1没有帮助。我希望我的程序编辑并打印现有的rtf文件。修改后的答案。用户在评论中还询问了如何创建表。好的,这种方法可以与问题+1的最新理解一起使用,以手动编码RTF。但是,我怀疑这对OP-1没有帮助。我希望我的程序编辑并打印现有的rtf文件。修改后的答案。用户在评论中还询问了如何创建表格。好的,这种方法可以与对问题的最新理解相结合。OP对我来说似乎非常困惑。他们是否有一个编辑框或一个包含由包含文本的单元格组成的表格的丰富编辑?谁能说…@Warren P:没错。我猜这就是他想要的。好吧,这对后来来寻求印刷帮助的人很有用,因此+1!这部作品似乎非常合拍
我习惯了。他们是否有一个编辑框或一个包含由包含文本的单元格组成的表格的丰富编辑?谁能说…@Warren P:没错。我猜这就是他想要的。好吧,这对后来来寻求印刷帮助的人很有用,因此+1!好主意,如果那是OP想要的。但是OP似乎很难解释清楚。你需要避开你插入的文本。我希望我对用户问题的编辑使其至少符合他接受的答案。好主意,如果OP想要的话。但是OP似乎很难解释清楚。你需要避开你插入的文本。我希望我对用户问题的编辑使其至少符合他接受的答案。