Delphi və MS Equation

Hamıya salam... Bu sualın cavabını internetdən axtarıb tapa bilmədiyimdən yazmaq qərarına gəldim. Delphidə Form1 və Form1-də Button1 var. Button1 kliklənəndə C:\ diskində müəyyən adlı Word faylı yaradılır. a, b və c - tam ədədlərdir və təsadüfi qaydada seçilir. Kod hissəsinə nə yazmalıyam ki, Delphi Word faylını (*.doc və ya *.docx) açsın və ax^2+bx+c=0 formulunu MS Equationun köməyi ilə əl dəymədən yazsın və yaddaşa verib, faylı bağlasın, məsələn, şəkildəki düsturu Word proqramını açmadan ona necə yaza bilərəm? Şəkil:

Verilmiş cavablar və yazılan şərhlər (8 cavab var)

Eltən (2012-01-05 00:50:09)
Mən bilən, sənin yazdığın kod MS Word 2003 də işə yaramayacaq. Bunu delphidə yazmaq mütləq deyilsə, makrosları araşdır, daha asan olar.

Mehman Elxanoglu (2012-01-05 00:12:56)
[code] begin f:='ax^2+bx-c+a/b+a_b^c+(_a^b)c+sqrt(a)+√(a&b)+∫_a^b▒c+lim┬(n→∞)⁡〖(1+1/n)^n 〗+max┬(0≤x≤1)⁡〖xe^(-x^2 ) 〗=0'; //burada f - String tipdəndir, bir neçə ifadə də özüm əlavə etdim. W:=CreateOleObject('Word.Application'); W.Visible:=True; W.Documents.Add; W.Selection.Font.Name:='Times New Roman'; W.Selection.Font.Size:=12; T:=W.ActiveDocument.Characters.Count; W.Selection.Move(1, t); W.Selection.TypeParagraph; W.ActiveDocument.Range.InsertAfter(f); W.Selection.MoveRight(Count:=Length(f), Extend:=true); W.Selection.OMaths.Add(W.Selection.Range); W.Selection.Range.OMaths.BuildUp; W.Selection.OMaths.Item(1).ParentOMath.Justification:= 3; end; [/code]

Mehman Elxanoglu (2012-01-04 23:20:41)
Sualıma Valeh Ağayevin sayəsində cavab tapdım, makrosdan istifadə etməklə... Kodu tam başa düşmədim, ancaq hər halda işimə yarayacaq: [code] unit Ust; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, [u]StdCtrls, ComObj[/u]; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var W,T:Variant; Count,Extend:Integer; begin W:=CreateOleObject('Word.Application'); W.Visible:=True; W.Documents.Add; T:=W.ActiveDocument.Characters.Count; W.Selection.Move(1, t); W.Selection.TypeParagraph; W.ActiveDocument.Range.InsertAfter('ax^2+bx-c=0'); W.Selection.MoveRight(Count:=13, Extend:=true); W.Selection.OMaths.Add(W.Selection.Range); W.Selection.Range.OMaths.BuildUp; W.Selection.OMaths.Item(1).ParentOMath.Justification:= 3; end; end. [/code]

Eltən (2012-01-03 22:31:17)
Mehman bu ele Equation özüdür də... Sadəcə olaraq field şəklində əlavə edilib və hələ Equation tərəfindən çevrilməyib. Üzərinə iki dəfə klik etsən Equation ilə açılacaq və artıq Equation formulu olacaq. Daha ətraflı başa düşmək üçün aşağıdakıları yerinə yetir 1. MS Word proqramında ctrl+F9 bas. 2. EQ \I(a;b;\f(x;x+1)) sətrini yaz və F9 bas Bağlamaq üçün Word.Quit(); kodunu yazarsan.

Mehman Elxanoglu (2012-01-03 21:23:34)
Sözün düzü bütün interneti ələk-vələk etsəm də, konkret MS Equationda formulu Delphidən necə sənədə yazmaq lazım olduğunu açıqlayan bir resurs tapa bilmədim. Eltən, təklif etdiyin kodu azacıq modifikasiya etdim, bəlkə kiməsə lazım olar, yerləşdirim: [code] begin W:=CreateOleObject('Word.Application'); W.Visible:=true; W.Documents.Add; W.Selection.Fields.Add(W.Selection.Range, -1, EmptyParam,false); W.Selection.Font.Name:='Times New Roman'; W.Selection.TypeText('EQ '); W.Selection.Font.size := 14; W.Selection.TypeText('f\b(x)=3x\S('); W.Selection.Font.size := 10; W.Selection.TypeText('2; )'); W.Selection.Font.size := 14; W.Selection.TypeText('-5x+2+\F(a;b)\I(a;b;x+2)+\R(n;a)-det\b(\A(a;b;c))'); W.Selection.Fields.Update; W.ActiveDocument.SaveAs('C:\sizinFayl.doc'); end; [/code]

Eltən (2012-01-02 23:52:19)
Mən sənin verdiyin suala cavab verdim :) Daha ətraflı bilmək istəsən, buyur \A(a;b;c) massiv, \F(a;b) kəsr, a bölünsün b-ə, \I(a;b;x+2) bu da sənin inteqralın, \R(n;a) n-ci dərəcədən kök altında a.

Mehman Elxanoglu (2012-01-02 22:10:36)
Pis kod deyil, ancaq görüntü baxımından bu kodla işləmək alınmayacaq. Birdən inteqral, limit, kəsr, kök və s. lazım olsaydı?! :)

Eltən (2012-01-02 14:21:01)
Salam. Ən yaxşı üsul deyil, amma vəziyyətdən çıxış yoludur. ComObj modulu mütləq qoşulmalıdır. Uses ComObj; var Word: variant; begin Word:=CreateOleObject('Word.Application'); Word.Visible:=true; Word.Documents.Add; Word.Selection.Fields.Add(Word.Selection.Range, -1, EmptyParam,false); Word.Selection.TypeText('EQ '); Word.Selection.Font.size := 14; Word.Selection.TypeText('3x\S('); Word.Selection.Font.size := 8; Word.Selection.TypeText('2)'); Word.Selection.Font.size := 14; Word.Selection.TypeText('-5x+2=0'); word.Selection.Fields.Update; Word.ActiveDocument.SaveAs('C:\sizinFayl.doc'); end;

Mövzu üzrə bənzər suallara da baxa bilərsiniz.

Delphi DataBase

Telefon usb

Delphi 7 kursu

Delphidən EXE faylı düzgün işə düşmür.

Problem üçün optimal həll lazımdır

Delphi XE2-də problem