diff options
Diffstat (limited to 'raetselunit.pas')
-rw-r--r-- | raetselunit.pas | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/raetselunit.pas b/raetselunit.pas index 6898c6c..b61358d 100644 --- a/raetselunit.pas +++ b/raetselunit.pas @@ -39,7 +39,8 @@ type zeichenFlaeche: tImage; erzeugeBtn, speichernBtn, - ladenBtn: tButtonWithArrowKeys; + ladenBtn, + druckenBtn: tButtonWithArrowKeys; zufallSE: tSpinEdit; progressBar1: tProgressBar; aktuelleFarbe: tColor; @@ -54,6 +55,7 @@ type procedure erzeugeOnClick(sender: tObject); procedure speichernOnClick(sender: tObject); procedure ladenOnClick(sender: tObject); + procedure druckenOnClick(sender: tObject); procedure farbWahlFlaecheBemalen; procedure loeschen; dynamic; abstract; procedure leeren; dynamic; abstract; @@ -70,7 +72,7 @@ type onSetCaption: tOnSetCaption; constructor create(aOwner: tForm); destructor destroy; override; - procedure zeichnen; dynamic; abstract; + procedure zeichnen(cursor: boolean = true); dynamic; abstract; end; tFelderRaetsel = class(tRaetsel) @@ -106,7 +108,7 @@ type public constructor create(aOwner: tForm; anzInhTypen: longint; alphabetFunktion: tAlphabetFunktion); destructor destroy; override; - procedure zeichnen; override; + procedure zeichnen(cursor: boolean = true); override; end; {$DEFINE interface} @@ -130,7 +132,7 @@ const implementation uses - math, dialogs, lclintf; + math, dialogs, lclintf, extDlgs; {$DEFINE alphabetFunktion} function zahlenAlphabetFunktion(i: longint): string; @@ -232,6 +234,13 @@ begin ladenBtn.caption:='Laden!'; ladenBtn.onClick:=@ladenOnClick; ladenBtn.onKeyDown:=@onKeyDown; + druckenBtn:=tButtonWithArrowKeys.create(besitzer); + druckenBtn.parent:=besitzer; + druckenBtn.left:=ladenBtn.left+ladenBtn.width+spacing; + druckenBtn.top:=spacing; + druckenBtn.caption:='Drucken!'; + druckenBtn.onClick:=@druckenOnClick; + druckenBtn.onKeyDown:=@onKeyDown; zufallSE:=tSpinEdit.create(besitzer); zufallSE.parent:=besitzer; zufallSE.top:=erzeugeBtn.top+erzeugeBtn.height+spacing; @@ -265,7 +274,7 @@ begin result:= max( zeichenFlaeche.width+zeichenFlaeche.left, - ladenBtn.width+ladenBtn.left + druckenBtn.width+druckenBtn.left )+spacing; end; @@ -368,6 +377,26 @@ begin openDialog1.free; end; +procedure tRaetsel.druckenOnClick(sender: tObject); +var + safePictureDialog1: tSavePictureDialog; + img: tImage; +begin + safePictureDialog1:=TSavePictureDialog.create(besitzer); + if safePictureDialog1.execute then begin + img:=zeichenFlaeche; + zeichenFlaeche:=tImage.create(img.parent); + zeichenFlaeche.width:=img.width; + zeichenFlaeche.height:=img.height; + zeichnen(false); + zeichenFlaeche.picture.saveToFile(safePictureDialog1.fileName); + zeichenFlaeche.free; + zeichenFlaeche:=img; + img:=nil; + end; + safePictureDialog1.free; +end; + procedure tRaetsel.farbWahlFlaecheBemalen; var i: integer; @@ -676,7 +705,7 @@ begin end; end; -procedure tFelderRaetsel.zeichnen; +procedure tFelderRaetsel.zeichnen(cursor: boolean = true); var i: longint; begin @@ -712,7 +741,7 @@ begin end; zeichenFlaeche.canvas.pen.width:=3; zeichenFlaeche.canvas.pen.color:=$8080ff; - if (cursorPosition>=0) and (dim>0) then begin + if (cursorPosition>=0) and (dim>0) and cursor then begin zeichenFlaeche.canvas.brush.color:= $ffffff - $181818 * byte( diagonalenCB.checked and ( |