{Design: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ AdmDlg Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Y}
pType := BAR or CT_LEGEND;
{Design: ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ChartType Ρ 1 - lineΠ½Π° 2 - bar.}
DecimalsNum[CD_YLEG] := 0;
{Design: ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Decimals Ρ 2 Π΄ΠΎ 0}
Stacked := CHART_STACKED;
{Design: ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Stacked Ρ 0 - None Π½Π° 1 - Normal}
RightGap := 20;
{Design: Π’ΠΎΠΆΠ΅}
OpenData[COD_COLORS] := 2;
Color[0] := clBlack;
Color[1] := clYellow;
CloseData[COD_COLORS] := 0;
{Π€Ρ!!}
{Design: ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ² 2 ΡΠ΅ΡΠΈΠΉ:1) Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ThisSerie ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² 0. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ThisColor Π½Π° clBlack.2) Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ThisSerie Π² 1. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ThisColor Π½Π°clYellow.}
Title[CHART_TOPTIT] := 'Π‘ΡΠ°ΡΡΠΈ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ';
Title[CHART_LEFTTIT] := 'CCM';
Title[CHART_BOTTOMTIT] := 'ΠΠ°ΡΡΡ';
{Design: ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π΅ TitleDlg ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡ Π½ΠΈΠΉ, Π»Π΅Π²ΡΠΉ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ}
end;
end;
Procedure TF_Chart.Build2(Ch : TChartFX);
{ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ (Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ» ΡΡΠΎ) Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ}
const
XAbbrevs : array[0..4] of string[4] =('Acc', 'Bar', 'Mas', 'Amex', 'Din');
SeriesTitles : array[0..1] of string[8] =('Π‘ΡΠ°ΡΡΠΈ', 'ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ');
XTitles : array[0..4] of string[20] = ('Access', 'Barclaycard', 'Mastercard', 'American Express', 'Diners');
{Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΈΡΠ°ΡΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ xTitles ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ}
Values : array[0..1, 0..4] of double =((50, 60, 70, 80, 90),(30, 35, 25, 37, 42));
var i, SerieNo : integer;
begin
with Ch do begin
LegendWidth := 120;
{Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ΅ΡΠΈΠΉ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ******************}
OpenData[COD_INIVALUES] := MAKELONG(2, 5);
CloseData[COD_INIVALUES] := 0;
{*********************************************************}
OpenData[COD_VALUES] := 2;
{Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, (Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π²Π²ΠΎΠ΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ SERIES ΠΈ VALUES), ΠΈ CloseData Π½ΠΈΠΆΠ΅, Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½ΠΎ ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ! ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Legend ΠΈ KeyLeg ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· OpenData/CloseData}
ThisSerie := 0;
for i := 0 to 1 do SerLeg[i] := SeriesTitles[i];
for i := 0 to 4 do= begin
Legend[i] := XTitles[i];
KeyLeg[i] := XAbbrevs[i];
end;
SerieNo := 0;
for SerieNo := 0 to 1 do begin
ThisSerie := SerieNo;
for i := 0 to 4 do Value[i] := Values[SerieNo, i];
end;
CloseData[COD_VALUES] := 0;
end;
end;
procedure TF_Chart.FormResize(Sender: TObject);
var w, h : longint;
begin
w := NB.Width;
H := NB.Height;
{ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ/ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ}
Chart1.Width := W β 18;
Chart1.Height := H β 12;
Chart2.Width := W β 18;
Chart2.Height := H β 12;
{ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Π²ΡΡ ΠΎΠ΄Π° Π² ΠΏΡΠ°Π²ΡΠΉ ΡΠ³ΠΎΠ»}
ExitBtn.Left := SpeedPanel.Width β 32;
end;
end.
CHARTFX β ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ
Delphi 2
Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ChartFX Π² Delphi 2β¦. Π― Π΄ΡΠΌΠ°Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈ Π² D1β¦
cfxStockTrends.Adm[CSA_MIN] := X; //ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΠΎ ΠΎΡΠΈ Y
cfxStockTrends.Adm[CSA_MAX] := Y; //Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΠΏΠΎ ΠΎΡΠΈ Y
ΠΡΠΈΠΌΠ΅Ρ CHARTFX
Delphi 1
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ Ρ Delphi, ΡΠ»ΠΈΡΠΊΠΎΠΌ Π·Π°ΠΏΡΡΠ°Π½Π½Π° ΠΈ ΡΡΠΆΠ΅Π»Π°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ VBXβ¦
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡ. Π΄Π»Ρ ChartFX:
{ΠΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΈΡΡΠ΅Ρ ΠΈΡ }
begin
MyTable.active := True; {ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ }
MyTable.first;
MyChart.title[CHART_BOTTOMTIT] := 'ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΠΎ ΠΎΡΠΈ X';
MyChart.title[CHART_LEFTTIT] := 'ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΠΎ ΠΎΡΠΈ Y';
MyChart.OpenData[COD_XVALUES] := MakeLong(numOfSeries,numofPoints);
MyChart.OpenData[COD_VALUES] := MakeLong(numOfSeries, NumofPoints);
MyChart.ThisSerie := SeriesNum; {Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ 0}
While MyTable.EOF <> True do begin
MyChart.value[i] := MyTable.FieldByName('SOMEFIELD').AsFloat;
MyChart.Xvalue[i] := MyTable.FieldByName('SOMEOTHERFIELD').AsFloat;
MyTable.next;
i:=i+1; {Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ 'i'}
end;
MyChart.CloseData[COD_Values] := 0;
MyChart.CloseData[COD_XValues] := 0;
MyTable.active := False; {Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ }
end;
{ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΡΠ½ΠΎΡΡΠΈΡΡΡ ΠΊ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ ΡΠΈΠΏΠ° xy scatter. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠΏ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ChartFX, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ COD_XVALUES}
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ Font ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠ²Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ°Π½Π½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ, ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ OLE/COM ΠΈ Ρ ΠΎΡΠ΅Ρ Π²ΡΡΡΠΎΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Font (ΡΠΈΠΏΠ° Delphi-Π³ΠΎ TFont) Π² ΡΠ²ΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ IFontDisp Π΄Π»Ρ COM Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΈ Delphi-ΠΈΠΉ TFont. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ Font, ΠΈ Π² ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠ΅ΠΊΡΡΠ° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ (Π½Π°ΠΏΡΠΈΡ, ΠΈΠΌΡ ΡΡΠΈΡΡΠ°, ΠΆΠΈΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠ΅ Π½Π°ΡΠ΅ΡΡΠ°Π½ΠΈΠ΅). ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΈΡΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° IFontDisp.
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ ΡΠ°Π³ΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° IFontDisp Π² ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ COM, ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ COM ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ. ΠΠΈΠΆΠ΅ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ»Π½ΡΠΉ Π»ΠΈΡΡΠΈΠ½Π³ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ:
Project1_TLB: ΠΠ°ΡΠΊΠ°Π»Π΅Π²ΡΠΊΠ°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ° Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Unit1: Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°: ΠΊΠΎΠ΄, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ.
Unit2: ΠΠ»Π°Π²Π½Π°Ρ ΡΠΎΡΠΌΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ, Π½ΠΎ ΠΎΠ½ Π² Ρ ΠΎΠ΄Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π²ΡΠ·ΠΎΠ²Ρ Π½Π°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
FontCli: ΠΠ»ΠΈΠ΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΉ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΎΠ±ΡΠΈΠ΅ ΡΠ°Π³ΠΈ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΠ°Π³ΠΎΠ² Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅.
1. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ File|New|ActiveX|Automation Object ΠΈ Π² ΠΠ°ΡΡΠ΅ΡΠ΅ Automation Object Wizard Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ° MyFontServer. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ MyFont ΠΈ ΡΠΈΠΏΠΎΠΌ IFontDisp. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΡΠΈΠΈ ΡΠΌΠΎΡΡΠΈ Developer's Guide, chapter 42 (ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, Π³Π»Π°Π²Π° 42), ΡΠ°ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ².
2. Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π³Π΅ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ°ΡΠΊΠ°Π»Π΅Π²ΡΠΊΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ-ΠΎΠ±Π΅ΡΡΠΊΡ (Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ Unit1). Unit1 Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ±Π΅ΡΡΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° MyFont. ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π²Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²ΠΎΠΉΡΡΠ²Π° MyFont Π² ΡΠΎΡΠΌΠ΅ FFont (TFont) ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΊΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°ΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ (get/set).
Unit1 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Unit2. Unit2 ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΡΠΌΡ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Memo ΠΈ StatusBar Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π»Π΅ΠΉ.
3. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Unit2, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΡΠΌΡ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ TMemo ΠΈ TStatusBar. Π€ΠΎΡΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΆΠΈΠ·Π½Π΅Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Unit1.pas. ΠΡΠΎ ΡΠ°Π³ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ, ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
4. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ FontCli, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅ΡΠΊΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠΈΡΡ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ MyFont Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
unit Project1_TLB;
{ ΠΠ°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ°ΡΠΊΠ°Π»Π΅Π²ΡΠΊΠΈΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ, ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ². ΠΠ°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ (refresh) Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ². ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ΅ΡΡΠ½Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. }
{ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Project1 }
{ ΠΠ΅ΡΡΠΈΡ 1.0 }
interface
uses Windows, ActiveX, Classes, Graphics, OleCtrls, StdVCL;
const LIBID_Project1: TGUID = '{29C7AC94-0807-11D1-B2BA-0020AFF2F575}';
const
{ GUID'Ρ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ }
Class_MyFontServer: TGUID = '{29C7AC96-0807-11D1-B2BA-0020AFF2F575}';
type
{ ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ: ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ }
IMyFontServer = interface;
IMyFontServerDisp = dispinterface;