Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Название:Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание
…начиная с 1001. Смотрите другие файлы…
Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Если вы распространяете ваш ActiveX в Интернете, то вы должны задать режим разработки для конечного пользователя (в противоположность передачи другим разработчикам), и вам в этом случае не потребуется лицензия времени разработки.
Кроме того, для показа ActiveForm необходимо установить в Internet Explorer уровень «Active content security» (безопасность активного содержимого) в medium (средняя). Чтобы это сделать, войдите в Панель Управления и щелкните на иконке Internet. Перейдите на страницу безопасности и нажмите на кнопку «Safety Level» (уровень безопасности). Убедитесь в том, что уровень находится на отметке «средний».
Примечание: Данный совет отностится только если вы разрабатываете собственные элементы управления. Потенциально хакерские элементы ActiveX могут нанести вред компьютеру!
Добавление IPERSISTPROPERTYBAG к активным элементам управления
Delphi 3
Данный совет рассказывает о том, как можно добавить интерфейс IPersistPropertyBag к элементу управления ActiveX. Существует возможность установки свойств элемента управления ActiveX с помощью HTML тэгов PARAM. Добавление интерфейса IPersistPropertyBag в элемент управления ActiveX также позволяет изменять его свойства с помощью инструментов типа ActiveX Control Pad.
Добавление интерфейса IPersistPropertyBag к элементу управления ActiveX очень простая процедура. Все, что необходимо сделать, это добавить интерфейс к определению класса объекта и реализовать три метода интерфейса. Приведенный здесь пример покажет вам эту технологию шаг за шагом, где наш элемент управления ActiveX будет базироваться на TButton. Для упрощения примера мы покажем реализацию функциональности для свойства "Caption" (заголовок). Для реализации полной функциональности можно экстраполировать данный пример на все доступные свойства элемента управления.
Начнем с использования ActiveX Control Wizard и создадим элемент управления ActiveX на основе TButton.
Активизируйте пункт меню File|New и выберите в диалоге New Item (новый элемент) закладку ActiveX. Затем в списке выберите элемент "ActiveX Control". В появившемся диалоговом окне выберите TButton для VCL Class Name. Все остальные настройки можете не трогать и оставить как есть. После нажатия на кнопку OK Delphi сгенерирует базовый код для вашего элемента управления.
Следующим шагом будет добавление интерфейса IPersistPropertyBag к определению класса. Измените первую строку определения, декларирующую тип…
typeTButtonX = class(TActiveXControl, IButtonX)
на…
typeTButtonX = class(TActiveXControl, IButtonX, IPersistPropertyBag)
Теперь интерфейс IPersistPropertyBag добавлен к объявлению типа. Затем объявите необходимые методы, добавляя следующие строки в секцию protected:
functionIPersistPropertyBag.InitNew = PersistPropBagInitNew;
functionIPersistPropertyBag.Load = PersistPropBagLoad;
functionIPersistPropertyBag.Save = PersistPropBagSave;
functionPersistPropBagInitNew: HResult; stdcall;
functionPersistPropBagLoad( constpPropBag: IPropertyBag; constpErrorLog: IErrorLog): HResult; stdcall;
functionPersistPropBagSave( constpPropBag: IPropertyBag; fClearDirty: BOOL; fSaveAllProperties: BOOL): HResult;
stdcall;
Затем, конечно, реализуйте эти функции…
// – реализация PersistPropBagInitNew
functionTButtonX.PersistPropBagInitNew: HResult;
begin
Result := S_OK;
end;
// -- реализация PersistPropBagLoad
functionTButtonX.PersistPropBagLoad( constpPropBag: IPropertyBag; constpErrorLog: IErrorLog): HResult; stdcall;
varv: OleVariant;
begin
ifpPropBag.Read('Caption', v, pErrorLog) = S_OK thenFDelphiControl.Caption := v;
Result := S_OK;
end;
// -- реализация PersistPropBagSave
functionTButtonX.PersistPropBagSave( constpPropBag: IPropertyBag; fClearDirty: BOOL; fSaveAllProperties: BOOL) : HResult; stdcall;
varv: OleVariant;
begin
v:= FDelphiControl.Caption;
pPropBag.Write('Caption', v);
Result := S_OK;
end;
Добавлением этого кода завершается создание элемента управления. Продолжаем дальше: соберите (build) элемент управления ActiveX и разместите его в сети. Сделайте это с помощью мастера Web Delpoy Wizard. Просто сделайте необходимые настройки на странице Project|Web Delpoyment Options и разместите ActiveX через Project| Web Deploy.
Мастер Web Deployment Wizard создаст HTML-страницу, содержащую тэг OBJECT, которая должна выглядеть приблизительно так:
Эта страница должна заработать без проблем. Тем не менее, теперь у вас имеется возможность задания заголовка для кнопок через HTML простым добавлением тэга PARAM. Вам измененный тэг OBJECT должен выглядеть таким образом:
Заголовок кнопки теперь будет говорить вам «Привет». В нашем примере заголовок будет доступен только с помощью данного метода. Для того, чтобы рулить другими свойствами, следуйте нашему примеру и изменяйте имя свойства, которое вы хотите использовать.
Использование ChartFX
Delphi 1
Это код, который я использую для установки chartfx.
chart1.Opendata[cod_values]:=makelong(no_of_series, no_of_classes);
{установка последовательных значений}
chart1.closedata[cod_values]:=0;
unitTstChart;
interface
uses= WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Menus, Dialogs, StdCtrls, Buttons, ExtCtrls, Tabs, ChartFX, {Похоже, действительно необходимо включить этот модульв список, чтобы иметь доступ к константам, например к COD_VALUES} VBXCtrl, Chart2fx;
typeTF_Chart = class(TForm)
SpeedPanel: TPanel;
ExitBtn: TSpeedButton;
NB: TNotebook;
TB: TTabSet;
Chart1: TChartFX;
Chart2: TChartFX;
procedureExitItemClick(Sender: TObject);
procedureFormCreate(Sender: TObject);
procedureTBClick(Sender: TObject);
procedureFormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ProcedureBuild1(Ch : TChartFX);
ProcedureBuild2(Ch : TChartFX);
end;
varF_Chart: TF_Chart;
implementation
{$R *.DFM}
procedureTF_Chart.ExitItemClick(Sender: TObject);
begin
Close;
end;
procedureTF_Chart.FormCreate(Sender: TObject);
begin
TB.Tabs := NB.Pages;
NB.PageIndex := 0;
Build1(Chart2);
Build2(Chart2); {добавляем значения для Chart2: length... и т.д.}
end;
procedureTF_Chart.TBClick(Sender: TObject);
begin
NB.PageIndex := TB.TabIndex;
end;
ProcedureTF_Chart.Build1(Ch : TChartFX);
begin
{Эта процедура изменяет свойства, которые могут устанавливаться во время разработки или временя выполнения. В коментариях подробно указано чем занимается метод Design}
withCh do begin
Adm[CSA_GAP] := 25.0;
{Design: Используйте свойство AdmDlg для изменения координаты Y}
Интервал:
Закладка: