PowerpointAutomation/de
From Lazarus wiki
│
Deutsch (de) │
Powerpoint als OleObjekt
Für die Oleautomation muss die Unit ComObj eingebunden werden.
Grundsätzlich sollte für das Arbeiten mit Powerpoint die Unit lclproc eingebunden werden.
Die Unit lclproc stellt die nötigen Routinen für das Umwandeln der Stringtypen (Stringcasting) bereit.
Speicherplatz reservieren
var
varPptApp: OleVariant; // reserviert den Speicher für die Powerpointadresse
OleObjekt erstellen
begin
...
try
varPptApp := CreateOleObject('Powerpoint.Application'); // erstellt das Powerpointobjekt
except
WriteLn('MS Powerpoint kann nicht gestartet werden.'); // Fehlerbehandlung
end;
...
end;
OleObjekt beenden und den Speicher freigeben
begin
...
varPptApp.Quit;
varPptApp := Unassigned;
...
end;
Powerpoint Version ermitteln
begin
...
ShowMessage(varPptApp.Version);
...
end;
Sichtbarkeit steuern
Wenn Powerpoint während der automatisierten Erstellung einer Präsentation unsichtbar ist, dann flackert der Bildschirm nicht.
begin
...
varPptApp.Visible := False; //macht Powerpoint unsichtbar
varPptApp.Visible := True; //macht Powerpoint sichtbar
...
end;
Powerpoint Präsentation
Speicher für die Präsentation reservieren
varPptSlide: OleVariant; // reserviert den Speicher für die Präsentation
strName: String;
neue Datei erstellen
<br>
begin
...
varPptApp.Presentations.Add(True); // Fügt eine neue Präsentation ein
...
end;
vorhandene Datei öffnen
Um in Powerpoint eine vorhandene Präsentation zu öffnen, müssen sie den String in das UTF16-format umwandeln (casten),
da die Powerpointschnittstelle nur UTF16 versteht.
begin
...
varPptApp.Presentations.Open(UTF8ToUTF16('D:\Arbeit\Test\TestDateien\Test.ppt')) // Benötigt die Unit lclproc
// Alternative
// Einer Variablen vom Typ OleVariant wird die Adresse der Prässentation übergeben
varPptSlide := varPptApp.Presentations.Open(UTF8ToUTF16('D:\Arbeit\Test\TestDateien\Test.ppt'));
...
end;
Präsentation speichern
begin
...
varPptApp.ActivePresentation.Save; // speichert die aktive Präsentation
// Alternative
varPptSlide.Save; // speichert die aktive Präsentation
...
end;
Folien
Speicher für die Präsentation reservieren
intZaehl: Integer; // reserviert den speicher für die anzahl der Folien
Folien zählen
begin
...
intZaehl := varPptApp.ActivePresentation.Slides.Count; //Zählt die Folien
// Alternative
intZaehl := varPptSlide.Slides.Count; //Zählt die Folien
...
end;
Auszug aus den Powerpointkonstanten
unit uPPTConst;
interface
const
ppSaveAsPresentation = $00000001;
ppSaveAsPowerPoint7 = $00000002;
ppSaveAsPowerPoint4 = $00000003;
ppSaveAsPowerPoint3 = $00000004;
ppSaveAsTemplate = $00000005;
ppSaveAsRTF = $00000006;
ppSaveAsShow = $00000007;
ppSaveAsAddIn = $00000008;
ppSaveAsWizard = $00000009;
ppSaveAsPowerPoint4FarEast = $0000000A;
ppSaveAsDefault = $0000000B;
//Bibliothek PpSlideLayout
ppLayoutBlank = 12;
ppLayoutChart = 8;
ppLayoutChartAndText = 6;
ppLayoutClipartAndText = 10;
ppLayoutClipArtAndVerticalText = 26;
ppLayoutFourObjects = 24;
ppLayoutLargeObject = 15;
ppLayoutMediaClipAndText = 18;
ppLayoutMixed = -2;
ppLayoutObject = 16;
ppLayoutObjectAndText = 14;
ppLayoutObjectAndTwoObjects = 30;
ppLayoutObjectOverText = 19;
ppLayoutOrgchart = 7;
ppLayoutTable = 4;
ppLayoutText = 2;
ppLayoutTextAndChart = 5;
ppLayoutTextAndClipart = 9;
ppLayoutTextAndMediaClip = 17;
ppLayoutTextAndObject = 13;
ppLayoutTextAndTwoObjects = 21;
ppLayoutTextOverObject = 20;
ppLayoutTitle = 1;
ppLayoutTitleOnly = 11;
ppLayoutTwoColumnText = 3;
ppLayoutTwoObjects = 29;
ppLayoutTwoObjectsAndObject = 31;
ppLayoutTwoObjectsAndText = 22;
ppLayoutTwoObjectsOverText = 23;
ppLayoutVerticalText = 25;
ppLayoutVerticalTitleAndText = 27;
ppLayoutVerticalTitleAndTextOverChart = 28;
// Bibliothek MsoTriState
msoCTrue = 1;
msoFalse = 0;
msoTriStateMixed = -2;
msoTriStateToggle = -3;
msoTrue = -1;
implementation
end.
--Olaf 16:39, 27 September 2012 (UTC)