Delphi - Corel Draw, Corel PhotoPaint programozása Delphi-ből

Corel 1. rész

forráskód letöltése
Most induló cikksorozatunkban azt mutatjuk be, hogy miként "rajzolhatunk" egy Delphi-vel készült programból a CorelDraw-ban, vagy hogyan használhatjuk a Corel PhotoPaint programját. Mivel ezek a programok is lehetőséget biztosítanak arra, hogy egy másik alkalmazásból vezéreljük őket, így dolgunk viszonylag egyszerű: csak ismernünk kell a Corel programok lehetőségeit, programozhatóságát. Mielőtt neki kezdenénk a CorelDraw programozásának, egy hasznos dolgot azért tegyünk meg. Ez pedig nem más, mint a Delphi help-jének kiegészítése a CorelDraw help-jének azon részével, amiben a Corel alkalmazások függvényei vannak dokumentálva.
Először másoljuk át a Corel telepítő CD-ről a Draw_scr.* fájlokat (.hlp, .cnt) a Delphi Help könyvtárába. Ezután válasszuk ki a Delphi menüjéből a Customize… menüpontot. A megjelenő ablakban a Contents, Index és Links laphoz adjuk hozzá a Draw_scr.cnt fájlt, majd mentsük el a beállításokat. Ettől kezdve a Corel függvényekhez ugyanúgy kapunk segítséget, mintha csak egy beépített Delphi függvény lenne. A Help-ben ugyan VisualBasic példák vannak, de ennek ellenére nagyon jól használható.

A függvényeknél az egyes értékeket konstansokkal is megadhatunk, ha viszont ezeket szeretnénk használni, akkor importálnunk kell a Corel Type Library-t. Ehhez a Project menü Import Type Library menüpontját kell kiválasztani. A megjelenő listából válasszuk ki a Corel DRAW-t, Corel Photo Paint-et. Ha nem találjuk a listában, akkor az Add gombbal adjuk hozzá a "coreldrv.tlb" fájlt, amit a Corel Programs alkönyvtárában találhatunk meg. Ha a telepítésnél olyan hibaüzenetet kapunk, hogy a Type Library-ban található osztályok elnevezései már szerepelnek, akkor ezeket át kell neveznünk a Class Names listában. Ekkor viszont számolnunk kell azzal, hogy a forráskód más gépeken valószínűleg nem lesz lefordítható, kivéve akkor, ha ott is ugyanezeket a neveket használták. Ha elkészítettük a Type Library-t (Create Unit gomb), akkor ne felejtsünk el hivatkozni rá a forráskódban.
Type Library-t nem kötelező készíteni, mivel az egyes paraméterek megadhatók számmal is, konstansok helyett, és ezek megfelelően vannak dokumentálva a Help-ben.

Ebben a részben elsősorban a fájlműveleteket nézzük meg, ezek közül is a fájl megnyitást, mentést, és nyomtatást. A példaprogramok a CorelDraw 9-es verziójával lettek kipróbálva és tesztelve.

Ahhoz, hogy elérjük a CorelDraw függvényeit, természetesen kapcsolódni kell az alkalmazáshoz. Ehhez viszont létre kell hoznunk egy változót OleVariant típussal.
var
  Draw: OleVariant;
A Button1 OnClick eseményénél kapcsolatot hozunk létre a CorelDraw alkalmazással. Ezután a FileOpen függvénnyel megnyitjuk a "Corel01.cdr" nevű fájlt. A SetDocVisible függvénnyel láthatóvá tesszük a megnyitott dokumentumot. Ha ennek paramétere hamis, akkor a dokumentummal a háttérben dolgozhatunk anélkül, hogy a felhasználó látná ügyködésünket. A ZoomToAllObjects függvény úgy állítja be a nézetet, hogy a dokumentum összes objektuma látható legyen.
procedure TForm1.Button1Click(Sender: TObject);
begin
  Draw := CreateOleObject('CorelDraw.Automation.9');
A kapcsolat létrehozásához a CorelDraw.Automation.9 sztringet adjuk meg a CreateOleObject részére. Ez persze csak a 9-es verziójú Corel esetén fog működni. A sztring végén lévő 9-es számot más verziójú Corel esetén át kell írni!
  Draw.FileOpen('Corel01.cdr');
  Draw.SetDocVisible(true);
  Draw.ZoomToAllObjects;
end;
A dokumentum mentését a Button4 OnClick eseményénél végezzük el. A mentéshez a FileSave függvényt kell meghívnunk. Ennek a függvénynek a következő paraméterei vannak:
- FileName: állomány név.
- ThumbNailSize: a fájl mellé elmentett előnézeti kép típusa:
0 = nincs előnézeti kép,
1 = 1k (fekete-fehér),
5 = 5k (színes),
10 = 10k (színes).
- SaveSelectedOnly: igaz érték esetén csak a kijelölt objektumokat menti el, ellenkező esetben az egész dokumentumot.
- FileVersion: a fájl verziószámát adja meg:
0 = Version 9.0
1 = Version 5.0
2 = Version 6.0
3 = Version 7.0
4 = Version 8.0
- IncludeCMXData: igaz esetén elmenti a CMX adatokat is a fájlba. Ez lehetővé teszi, hogy más verziójú CorelDraw-ba is be lehessen tölteni a fájlt.
procedure TForm1.Button4Click(Sender: TObject);
begin
  Draw.FileSave('Corel02.cdr', 5, false, 1, false);
  ShowMessage('A dokumentumot elmentettük "Corel02.cdr" néven!');
end;
A dokumentum kinyomtatása minden eddiginél egyszerűbb, hiszen itt még paramétert sem kell megadnunk. A dokumentum a FilePrint függvény meghívásával azonnal nyomtatásra kerül.
procedure TForm1.Button3Click(Sender: TObject);
begin
  Draw.FilePrint;
end;
Most már nem maradt más hátra, bezárjuk a fájlunkat és kilépünk a CorelDraw-ból. A FileClose függvénnyel bezárjuk a dokumentumot, és a FileExit függvénnyel kilépünk a CorelDraw-ból. Mindkét függvénynek egy paramétere van, ami egy logikai érték. Igaz érték esetén megkérdezi a felhasználót, hogy tényleg bezárja-e a dokumentumot illetve az alkalmazást.
procedure TForm1.Button2Click(Sender: TObject);
begin
  try
    Draw.FileClose(false);
    Draw.FileExit(false);
  finally
    Draw := Unassigned;      
  end;
end;

Corel cikksorozat