KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Валентин Озеров, "Советы по Delphi. Версия 1.4.3 от 1.1.2001" бесплатно, без регистрации.
Перейти на страницу:

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

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*