Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Delphi. ВСрсия 1.4.3 ΠΎΡ‚ 1.1.2001Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 99

Автор Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ ΠžΠ·Π΅Ρ€ΠΎΠ²

  {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;