summaryrefslogtreecommitdiff
path: root/raetselunit.pas
diff options
context:
space:
mode:
Diffstat (limited to 'raetselunit.pas')
-rw-r--r--raetselunit.pas43
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 (