是否可以知道 OLE 对象的实际高度?
Is it possible to know the actual height of OLE object?
我有一个 OLEContainer 对象,我在其中创建 Word.Document,以允许编辑公式和其他内容。
如何将 OLEContainer 高度设置为实际数据的高度?
如果您使用的是 TOleContainer,一旦您在其中激活 MS Word,您就可以轻松地
像这样获取对 MS Word Automation 对象的引用:
MSWord := OleContainer1.OleObject;
到目前为止,很简单。
下一步是尝试获取代表Word文档高度的数字
在 MSWord 对象中打开。问题在于文档的结构
可能非常复杂,需要考虑的变量太多
(字体大小,段落间距等)我想不出一个简单的方法
以获得准确的数字。
但是,解决该问题的一种简单的方法是获取行数的数字
在文档中,然后按该值的乘数缩放 OleContainer 的高度;这
下面的方法将获取文档中的行数(或其主要文本,
无论如何)然后你可以根据它调整容器的高度;
procedure TForm1.GetLinesInDocument;
var
Lines : Integer;
MSWord,
vDialog : OleVariant;
begin
MSWord := OleContainer.OleObject;
vDialog := MSword.Dialogs.Item(wdDialogToolsWordCount); // this Dialog returns the number of
// lines in the document
vDialog.Execute; // This executes the Dialog function without causing
// it to display
Lines := vDialog.Lines;
Caption := 'Lines: ' + IntToStr(Lines);
end;
显然需要一些实验来确定比例因子。
祝你好运!
OleContainer 的 SizeMode 属性 可以设置为 smAutoSize。太简单了。
我有一个 OLEContainer 对象,我在其中创建 Word.Document,以允许编辑公式和其他内容。
如何将 OLEContainer 高度设置为实际数据的高度?
如果您使用的是 TOleContainer,一旦您在其中激活 MS Word,您就可以轻松地 像这样获取对 MS Word Automation 对象的引用:
MSWord := OleContainer1.OleObject;
到目前为止,很简单。
下一步是尝试获取代表Word文档高度的数字 在 MSWord 对象中打开。问题在于文档的结构 可能非常复杂,需要考虑的变量太多 (字体大小,段落间距等)我想不出一个简单的方法 以获得准确的数字。
但是,解决该问题的一种简单的方法是获取行数的数字 在文档中,然后按该值的乘数缩放 OleContainer 的高度;这 下面的方法将获取文档中的行数(或其主要文本, 无论如何)然后你可以根据它调整容器的高度;
procedure TForm1.GetLinesInDocument;
var
Lines : Integer;
MSWord,
vDialog : OleVariant;
begin
MSWord := OleContainer.OleObject;
vDialog := MSword.Dialogs.Item(wdDialogToolsWordCount); // this Dialog returns the number of
// lines in the document
vDialog.Execute; // This executes the Dialog function without causing
// it to display
Lines := vDialog.Lines;
Caption := 'Lines: ' + IntToStr(Lines);
end;
显然需要一些实验来确定比例因子。
祝你好运!
OleContainer 的 SizeMode 属性 可以设置为 smAutoSize。太简单了。