С вашей помощью (точнее при активном участии Vadim) мне удалось заставить работать на Lazarus модули ExprDraw и ExprMake, написанные Григорьевым А. под Delphi. Напомню, что модули предназначены для отрисовки разного рода математических выражений, как в буквенном, так и в числовом виде.
Всё работает и всё рисуется, но есть одно НО. Не отрисовываются формулы, если они написаны на кириллице.
Вот пример:
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Buttons, ExprDraw, ExprMake;
type
{ TForm1 }
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Image1: TImage;
procedure BitBtn1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
// процедура для вывода ед. изм. типа "кг/см2" курсивом
procedure formula(Cnv:TCanvas; x,y:integer; s1:string);
var Expr: TExprClass;
begin
Expr:=BuildExpr(s1);
Expr:=TExprChain.Create(Expr);
Expr.Font.Name:='Tahoma';
Expr.Font.Style:=[fsItalic];
Expr.Font.Size:=10;
Expr.Canvas:=Cnv;
Expr.Draw(x,y,ehLeft,evTop);
Expr.Free;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var Expr, Expr2: TExprClass;
begin
Form1.Image1.Canvas.Brush.Color:=clBtnFace;
Form1.Image1.Canvas.FillRect(Rect(0,0,Width,Height));
formula(Form1.Image1.Canvas, 5,20, 'S^22');
formula(Form1.Image1.Canvas, 5,50, 'kg//sm^2');
formula(Form1.Image1.Canvas, 5,80, 'кг//см^2');
end;
initialization
{$I Unit1.lrs}
end.
Единицы измерения кг/см2 по-русски не отрисовываются, все остальное - рисуется.
Подскажите, пожалуйста, где покопать, чтобы решить проблему.