在RICHEDIT中怎样实现方程式的输入?(100分)

  • 主题发起人 主题发起人 threedot
  • 开始时间 开始时间
T

threedot

Unregistered / Unconfirmed
GUEST, unregistred user!
在RICHEDIT中怎样实现方程式的输入?
例如:x1+x2+x3=8
其中x要大字体写。1,2,3作为下标要用小子体写。
要求在用户输入过程中进行改变。
谢谢!
 
一个字符一个字符地设置它的大小.
RX控件包里的RICHEDIT可以输入上下标.
 
uses RichEdit;

procedure SetSubscript(ARichEdit: TCustomRichEdit; Sub, ASize: Integer);
//Sub: 0:无 1:上标 -1:下标
//ASize:正常的字体大小
var
Format: TCharFormat;
procedure InitFormat(var Format: TCharFormat);
begin
FillChar(Format, SizeOf(TCharFormat), 0);
Format.cbSize := SizeOf(TCharFormat);
end;
procedure SetAttributes(var Format: TCharFormat);
begin
if ARichEdit.HandleAllocated then
SendMessage(ARichEdit.Handle, EM_SETCHARFORMAT, SCF_SELECTION, LPARAM(@Format))
end;
begin
InitFormat(Format);
with Format do
case Sub of
0:
begin
dwMask := Integer(CFM_OFFSET + CFM_SIZE);
yHeight := ASize * 20;
Format.yOffset := 0;
end;
1:
begin
dwMask := Integer(CFM_OFFSET + CFM_SIZE);
yHeight := ASize * 2 div 3 * 20;
Format.yOffset := ASize div 4 * 20;
end;
-1:
begin
dwMask := Integer(CFM_OFFSET + CFM_SIZE);
yHeight := ASize * 2 div 3 * 20;
Format.yOffset := -ASize div 4 * 20;
end;
else
Exit;
end;
SetAttributes(Format);
end;
 
Thank you very munch!
 
后退
顶部