Смекни!
smekni.com

Розробка програми для сумісної роботи з додатками PowerPoint з використанням технології OLE (стр. 3 из 3)

Перелік використаних джерел

1. Фаронов В.В. Программирование баз данных в Delphi6: Учебный курс. – СПб: Питер, 2003. – 352 с.

2. Калиткин Н.Н. Численные методы. – М: Главная редакция физико-математической литературы изд-ва «Наука», 1978. – 512 с. (електронна версія)

3. Архангельский А.Я. Программирование в Delphi 6. – М.: БИНОМ, 2003. – 1120 с.

4. Фаронов В.В. Delphi 6: Учеб. курс. – М.: Издатель Молгачева С.В., 2003. – 672 с.

Додаток

Лістинг програми PowerPoint++:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, comobj, StdCtrls, OleServer, PowerPointXP, Buttons, OleCtnrs;

type

TForm1 = class(TForm)

PowerPointApplication1: TPowerPointApplication;

PowerPointPresentation1: TPowerPointPresentation;

Button_EXIT: TButton;

Button_FIRST: TBitBtn;

Button_LAST: TBitBtn;

Button_NEXT: TBitBtn;

Button_PREV: TBitBtn;

Button_RUN: TBitBtn;

Button_CLOSE: TBitBtn;

Edit_Path: TEdit;

OpenDialog1: TOpenDialog;

Button_Way_to_File: TButton;

Button_NUMBER: TButton;

Edit_NUM: TEdit;

Label_NUM: TLabel;

procedure Button_RUNClick (Sender: TObject);

procedure Button_CLOSEClick (Sender: TObject);

procedure Button_EXITClick (Sender: TObject);

procedure Button_NEXTClick (Sender: TObject);

procedure Button_PREVClick (Sender: TObject);

procedure Button_FIRSTClick (Sender: TObject);

procedure Button_LASTClick (Sender: TObject);

procedure Button_Way_to_FileClick (Sender: TObject);

procedure Button_NUMBERClick (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

PowerPointApp: OLEVariant; // объект самой презентации

St1: string; // строка пути к файлу

Num, // Номер слайда, выбранного пользователем

K, // Номер текущего слайда

ALL: integer; // Общее количество слайдов

procedure Form_refresh1;

implementation

{$R *.dfm}

procedure Form_refresh1;

begin

// Если слайд первый

If (K=1) then

begin

Form1. Button_FIRST. Enabled:=false;

Form1. Button_PREV. Enabled:=false;

Form1. Button_NEXT. Enabled:=true;

Form1. Button_LAST. Enabled:=true;

end;

// Если слайд не первый и не последний (все остальные)

If ((K>1) and (K<=ALL-1)) then

begin

Form1. Button_FIRST. Enabled:=true;

Form1. Button_PREV. Enabled:=true;

Form1. Button_NEXT. Enabled:=true;

Form1. Button_LAST. Enabled:=true;

end;

// Если слайд последний

If (K=ALL) then

begin

Form1. Button_FIRST. Enabled:=true;

Form1. Button_PREV. Enabled:=true;

Form1. Button_NEXT. Enabled:=false;

Form1. Button_LAST. Enabled:=false;

end;

end;

procedure TForm1. Button_RUNClick (Sender: TObject);

begin

try

PowerPointApp:= CreateOleObject ('PowerPoint. Application');

Button_CLOSE. Enabled:=True;

Button_RUN. Enabled:=False;

Button_FIRST. Enabled:=false;

Button_PREV. Enabled:=false;

Button_NEXT. Enabled:=True;

Button_LAST. Enabled:=True;

Button_NUMBER. Enabled:=True;

Edit_NUM. Enabled:=true;

Label_NUM. Visible:=true;

K:=1; // Номер текущего слайда

except

ShowMessage ('Ошибка! Проверьте наличие PowerPoint.');

Exit;

end;

// Сделать PowerPoint видимым

PowerPointApp. Visible:= True;

// Открыть презентацию

PowerPointApp. Presentations. Open (St1, False, False, True);

// Запустить презентацию

PowerPointApp. ActivePresentation. SlideShowSettings. Run;

// Показать текущую версию презентации

ShowMessage (Format('Powerpoint version:%s', [PowerPointApp. Version]));

ALL:=StrToInt (Format(' % s', [PowerPointApp. ActivePresentation. Slides. Count]));

Label_NUM. Caption:=InttoStr(K);

end;

procedure TForm1. Button_CLOSEClick (Sender: TObject);

begin

// Закрытьпрезентациюивыгрузитьизпамяти

PowerPointApp. Quit;

PowerPointApp:= UnAssigned;

// Заблокированиекнопокприуспешномзакрытии

Button_CLOSE. Enabled:=False;

Button_RUN. Enabled:=True;

Button_FIRST. Enabled:=False;

Button_PREV. Enabled:=False;

Button_NEXT. Enabled:=False;

Button_LAST. Enabled:=False;

Button_NUMBER. Enabled:=False;

Edit_NUM. Enabled:=false;

Label_NUM. Visible:=false;

end;

procedure TForm1. Button_EXITClick (Sender: TObject);

begin

Form1. Close;

end;

procedure TForm1. Button_NEXTClick (Sender: TObject);

begin

// Перейти к следующему слайду

PowerPointApp. ActivePresentation. SlideShowWindow. View. Next;

K:=K+1;

Label_NUM. Caption:=InttoStr(K);

Form_refresh1;

end;

procedure TForm1. Button_PREVClick (Sender: TObject);

begin

// Переход к предыдущему слайду

PowerPointApp. ActivePresentation. SlideShowWindow. View. Previous;

K:=K-1;

Label_NUM. Caption:=InttoStr(K);

Form_refresh1;

end;

procedure TForm1. Button_FIRSTClick (Sender: TObject);

begin

// Переход к первому слайду

PowerPointApp. ActivePresentation. SlideShowWindow. View. First;

K:=1;

Label_NUM. Caption:=InttoStr(K);

Form_refresh1;

end;

procedure TForm1. Button_LASTClick (Sender: TObject);

begin

// Переход к последнему слайду

PowerPointApp. ActivePresentation. SlideShowWindow. View. Last;

K:=ALL;

Label_NUM. Caption:=InttoStr(K);

Form_refresh1;

end;

procedure TForm1. Button_Way_to_FileClick (Sender: TObject);

begin

OpenDialog1. Execute;

St1:=OpenDialog1. FileName;

if St1<>'' then

begin

Edit_Path.text:=St1;

Button_RUN. Enabled:=true;

end

else

with Application do

begin

NormalizeTopMosts;

MessageBox ('Ошибка! Файлневыбранилиимеетнеправильныйформат!', 'Ошибкаввода', MB_ICONERROR);

RestoreTopMosts;

end;

end;

procedure TForm1. Button_NUMBERClick (Sender: TObject);

begin

// Перейти к сладу с номером, указанным пользователем

if (Edit_NUM. Text<>'') then

begin

Num:=StrtoInt (Edit_NUM. Text);

if ((Num>=1) and (Num<=ALL)) then

begin

PowerPointApp. ActivePresentation. SlideShowWindow. View. GoToSlide(Num);

K:=Num;

Label_NUM. Caption:=InttoStr(K);

Form_refresh1;

end

else

with Application do

begin

NormalizeTopMosts;

MessageBox ('Ошибка! Введите правильное число!', 'Ошибка ввода', MB_ICONERROR);

RestoreTopMosts;

end;

end

else

with Application do

begin

NormalizeTopMosts;

MessageBox ('Ошибка! Введите номер слайда!', 'Ошибка ввода', MB_ICONERROR);

RestoreTopMosts;

end;

end;

end.