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" бесплатно, без регистрации.
Перейти на страницу:

   03030303030303F8FF0303F8FF03030303030303030303030303FA0202020403

   030303030303030303030303F8FF0303F8FF03030303030303030303030303FA

   0202040303030303030303030303030303F8FF03F8FF03030303030303030303

   03030303FA0202030303030303030303030303030303F8FFF803030303030303

   030303030303030303FA0303030303030303030303030303030303F803030303

   0303030303030303030303030303030303030303030303030303030303030303

   0303

  }

  Margin = 2

  NumGlyphs = 2

  Spacing = -1

  IsControl = True

 end

 object CancelBtn: TBitBtn

  Left = 108

  Top = 216

  Width = 69

  Height = 39

  Caption = '&Отмена'

  TabOrder = 4

  Kind = bkCancel

  Margin = 2

  Spacing = -1

  IsControl = True

 end

 object Panel2: TPanel

  Left = 16

  Top = 88

  Width = 153

  Height = 49

  BevelInner = bvLowered

  BevelOuter = bvNone

  TabOrder = 1

  object Label1: TLabel

   Left = 24

   Top = 8

   Width = 5

   Height = 13

  end

  object Label2: TLabel

   Left = 8

   Top = 8

   Width = 48

   Height = 13

   Caption = 'Значение 2:'

  end

  object Edit2: TEdit

   Left = 8

   Top = 24

   Width = 121

   Height = 20

   MaxLength = 10

   TabOrder = 0

   Text = '0'

  end

 end

 object Panel1: TPanel

  Left = 16

  Top = 16

  Width = 153

  Height = 49

  BevelInner = bvLowered

  BevelOuter = bvNone

  TabOrder = 0

  object Label4: TLabel

   Left = 8

   Top = 8

   Width = 48

   Height = 13

   Caption = 'Значение 1:'

  end

  object Edit1: TEdit

   Left = 8

   Top = 24

   Width = 121

   Height = 20

   MaxLength = 10

   TabOrder = 0

   Text = '0'

  end

 end

 object Panel3: TPanel

  Left = 16

  Top = 144

  Width = 153

  Height = 49

  BevelInner = bvLowered

  BevelOuter = bvNone

  TabOrder = 2

  object Label6: TLabel

   Left = 8

   Top = 8

   Width = 48

   Height = 13

   Caption = 'Значение 3:'

  end

  object Edit3: TEdit

   Left = 8

   Top = 24

   Width = 121

   Height = 20

   MaxLength = 10

   TabOrder = 0

   Text = '0'

  end

 end

end

{ ***   КОНЕЦ КОДА DDEDLG.DFM *** }


{ *** НАЧАЛО КОДА DDEDLG.PAS *** }

{***************************************************}

{                                                   }

{   Delphi 1.0 DDEML Демонстрационная программа     }

{   Copyright (c) 1996 by Borland International     }

{                                                   }

{***************************************************}


{ Данный модуль определяет интерфейс сервера DataEntry DDE

(DDEMLSRV.PAS). Здесь определены имена Service, Topic,и Item, поддерживаемые сервером, и также определенаструктура данных, которая может использоватьсяклиентом для локального хранения "показательных" данных.

Сервер Data Entry Server делает свои "показательные"данные доступными в текстовом виде (cf_Text)сформированными в виде трех различных топика (Topics).Клиент может их преобразовывать в целое дляиспользования со структурой данных, которая здесь определена.}

unit Ddedlg;


interface


uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons, StdCtrls, Mask, ExtCtrls;

type TDataEntry = class(TForm)

 OKBtn: TBitBtn;

 CancelBtn: TBitBtn;

 Bevel1: TBevel;

 Panel2: TPanel;

 Label1: TLabel;

 Label2: TLabel;

 Panel1: TPanel;

 Label4: TLabel;

 Panel3: TPanel;

 Label6: TLabel;

 Edit1: TEdit;

 Edit2: TEdit;

 Edit3: TEdit;

 procedure OKBtnClick(Sender: TObject);

 procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

S1, S2, S3: String;

 { Public declarations }

end;

var DataEntry: TDataEntry;

implementation


{$R *.DFM}


procedure TDataEntry.OKBtnClick(Sender: TObject);

begin

 S1 := Edit1.Text;

 S2 := Edit2.Text;

 S3 := Edit3.Text;

end;


procedure TDataEntry.FormShow(Sender: TObject);

begin

 Edit1.Text := '0';

 Edit2.Text := '0';

 Edit3.Text := '0';

 Edit1.SetFocus;

end;


end.

{ ***  КОНЕЦ КОДА DDEDLG.PAS *** } 

Как добавить группу в Program Manager?

Delphi 1 

interface

procedure CreateGroup;


implementation


procedure TSetupForm.CreateGroup;

{ Для установки группы в Program Manager используем компонент TProgMan }

var

 ItemList: TStringList;

 GroupName: String;

 ItemName: String;

 i: word;

begin

 { Получаем из INI-файла строку GroupName }

 GroupName := IniFile.ReadString('General', 'PMGroup', '');

 { Если один есть, устанавливаем группу }

 if GroupName <> '' then begin

  ItemList := TStringList.Create;

  try

   { читаем элементы для установки }

   IniFile.ReadSectionValues('PMGroup', ItemList);

   with TProgMan.Create(Self) do try

    CreateGroup(GroupName);

    for i := 0 to ItemList.Count  – 1 do begin

     { получаем имя файла }

     ItemName := Copy(ItemList.Strings[i], 1, Pos('=', ItemList.Strings[i]) – 1);

     { прибавляем путь к имени файла и добавляем элемент }

     AddItem(GetTarget(ItemList.Values[ItemName][1]) + ItemName, ItemName);

    end;

   finally

    Free;

   end;

  finally

   ItemList.Free;

  end;

 end;

end

OLE 

OLE-автоматизация в Delphi 1

Delphi 1 

Delphi 16 также может осуществлять автоматизацию OLE, как она может и многое другое. Другое дело, что у нее нет компонентов-инкапсуляторов, и нет традиционных объектов, делающих работу с OLE такой же легкой, как это происходит с другими вещами в Delphi. Delphi32 таки должен иметь какие-то характеристики для работы с OLE (я так надеюсь).

Так, если вы собираетесь делать какие-то действия с любым типом OLE-сервера, то для этого вам необходимо будет использовать все нудные и противные рутинки из набора Windows SDK. Но будет лучше, если всем этим будет заправлять специализированный компонент. Но этот вопрос уже не к Borland. 

OLE сервер

Delphi 1 

Следующий код компилируется без проблем. Он не так ясен и понятен, но он может вам помочь:

unit Unit1;

interface

function OLEfunction(x, y, z: integer): integer; cdecl; export;


implementation


function OLEfunction(x, y, z: integer): integer;

begin

end;


procedure buildOLEstructure;

var F: pointer;

begin

 F := @OLEfunction; { Компилируется без проблем … }

end;


end.

Используйте метод, приведенный ниже. Вы должны объявить одну вызывающую функцию к каждой комбинации параметров, которые вы собираетесь передавать. Затем вы вызываете вызывающую функцию (сорри) и передаете ей как указатель функцию, которую вы хотите вызвать (еще раз сорри). Непонятно? Поясню на примере:

library pcdecl;

function olefunction(a1: pchar; a2: longint; x: integer): integer; cdecl; export;

begin

end;


function callolefunction(func: pointer; a1: pchar; a2: longint; x: integer): integer; assembler;

asm

 push x { помещаем параметры в обратном порядке }

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