- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Советы по 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;