Code:
unit mVersuch1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
BitBtnFrei: TBitBtn;
BitBtnPunkt: TBitBtn;
BtEnde: TButton;
Panel2: TPanel;
BitBtnStrecke: TBitBtn;
BitBtnRechteck: TBitBtn;
BitBtnEllipse: TBitBtn;
Neu: TButton;
BitBtnRot: TBitBtn;
BitBtnGelb: TBitBtn;
BitBtnGruen: TBitBtn;
BitBtnBlau: TBitBtn;
BitBtnEraser: TBitBtn;
BitBtnSt1: TBitBtn;
BitBtnSt2: TBitBtn;
BitBtnSt3: TBitBtn;
BitBtnSt4: TBitBtn;
BitBtnSchwarz: TBitBtn;
procedure BtEndeClick(Sender: TObject);
procedure BitBtnPunktClick(Sender: TObject);
procedure BitBtnFreiClick(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure BitBtnStreckeClick(Sender: TObject);
procedure BitBtnRechteckClick(Sender: TObject);
procedure BitBtnEllipseClick(Sender: TObject);
procedure NeuClick(Sender: TObject);
procedure BitBtnRotClick(Sender: TObject);
procedure BitBtnBlauClick(Sender: TObject);
procedure BitBtnGelbClick(Sender: TObject);
procedure BitBtnGruenClick(Sender: TObject);
procedure BitBtnEraserClick(Sender: TObject);
procedure BitBtnSt1Click(Sender: TObject);
procedure BitBtnSt2Click(Sender: TObject);
procedure BitBtnSt3Click(Sender: TObject);
procedure BitBtnSt4Click(Sender: TObject);
procedure BitBtnSchwarzClick(Sender: TObject);
private
XAnfang, YAnfang, XEnde, YEnde : integer;
Mausgedrueckt : Boolean; {Zustandsveriable}
procedure Switchcolor;
procedure Switchwidth;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BtEndeClick(Sender: TObject);
begin
close;
end;
procedure TForm1.BitBtnRotClick(Sender: TObject);
begin
BitBtnBlau.enabled := true;
BitBtnGelb.enabled := true;
BitBtnRot.enabled := false;
BitBtnGruen.enabled := true;
BitBtnSchwarz.enabled := true;
Switchcolor; //Farbwechsel
end;
procedure TForm1.BitBtnBlauClick(Sender: TObject);
begin
BitBtnBlau.enabled := false;
BitBtnGelb.enabled := true;
BitBtnRot.enabled := true;
BitBtnGruen.enabled := true;
BitBtnSchwarz.enabled := true;
Switchcolor; //Farbwechsel
end;
procedure TForm1.BitBtnGelbClick(Sender: TObject);
begin
BitBtnBlau.enabled := true;
BitBtnGelb.enabled := false;
BitBtnRot.enabled := true;
BitBtnGruen.enabled := true;
BitBtnSchwarz.enabled := true;
Switchcolor; //Farbwechsel
end;
procedure TForm1.BitBtnGruenClick(Sender: TObject);
begin
BitBtnBlau.enabled := true;
BitBtnGelb.enabled := true;
BitBtnRot.enabled := true;
BitBtnGruen.enabled := false;
BitBtnSchwarz.enabled := true;
Switchcolor; //Farbwechsel
end;
procedure TForm1.Switchcolor; // Wechsel der Stiftfarbe
begin
if BitBtnRot.Enabled = false
then Canvas.Pen.Color := clred
else
if BitBtnGelb.enabled = false
then Canvas.Pen.color := clyellow
else
if BitBtnGruen.enabled = false
then Canvas.Pen.Color := clgreen
else
if BitBtnBlau.Enabled = false
then Canvas.Pen.color := clblue
else
if BitBtnSchwarz.Enabled = false
then Canvas.Pen.Color := clblack;
end;
procedure TForm1.Switchwidth;
begin
if BitBtnSt1.enabled = false
then Canvas.pen.Width := 1
else
if BitBtnSt2.enabled = false
then Canvas.pen.color := 3
else
if BitBtnSt3.enabled = false
then Canvas.pen.Width := 5
else
if BitBtnSt4.enabled = false
then Canvas.Pen.Width := 7;
end;
procedure TForm1.BitBtnPunktClick(Sender: TObject); // Punktbutton wird deaktiviert bzw. aktiviert
begin
BitBtnStrecke.enabled := true;
BitBtnFrei.Enabled := true;
BitBtnPunkt.Enabled := false;
BitBtnEllipse.Enabled := true;
BitBtnRechteck.Enabled := true;
BitBtnEraser.enabled := true;
Panel2.Caption := (' Zeichenart: Punkt '); // Meldung welcher Zeichentyp aktiviert ist
end;
procedure TForm1.BitBtnFreiClick(Sender: TObject); // Freihandbutton wird deaktiviert bzw. aktiviert
begin
BitBtnStrecke.enabled := true;
BitBtnFrei.Enabled := false;
BitBtnPunkt.Enabled := true;
BitBtnEllipse.Enabled := true;
BitBtnRechteck.Enabled := true;
BitBtnEraser.enabled := true;
Panel2.Caption := (' Zeichenart: Freihandzeichnen '); // Meldung welcher Zeichentyp aktiviert ist
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); // Bei Bewegung der Maus
begin
if (Mausgedrueckt)
and (BitBtnStrecke.enabled = false)
then
begin
Canvas.Pen.Mode := pmNotXor;
Canvas.MoveTo (XAnfang,YAnfang);
Canvas.LineTo(XEnde,YEnde);
Canvas.MoveTo(XAnfang,YAnfang);
Canvas.LineTo(X,Y);
XEnde := x;
YEnde := y;
end
else
if (Mausgedrueckt)
and (BitBtnRechteck.Enabled = false)
then
begin
Canvas.Brush.Style := bsclear;
Canvas.Pen.Mode := pmNotXor;
Canvas.Rectangle(XAnfang,YAnfang,XEnde,YEnde);
Canvas.MoveTo(XAnfang,YAnfang);
Canvas.Rectangle(XAnfang,YAnfang,XEnde,YEnde);
XEnde := x;
YEnde := y;
end
else
if (Mausgedrueckt)
and (BitBtnEllipse.enabled = false)
then
begin
Canvas.Brush.Style := bsclear;
Canvas.Pen.Mode := pmNotXor;
Canvas.Ellipse(XAnfang,YAnfang,XEnde,YEnde);
Canvas.MoveTo(XAnfang,YAnfang);
Canvas.Ellipse(XAnfang,YAnfang,XEnde,YEnde);
XEnde := x;
YEnde := y;
end
else
if (Mausgedrueckt)
and (BitBtnEraser.enabled = false)
then
begin
Canvas.LineTo(X,Y);
end
else
if Mausgedrueckt
then
begin
Canvas.LineTo(X,Y);
end;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); // Betätigung der linken Maustaste (drücken)
begin
if BitBtnStrecke.enabled = false
then
begin
Mausgedrueckt := true;
XAnfang := x;
YAnfang := y;
XEnde := x;
YEnde := y;
Canvas.MoveTo(XAnfang,YAnfang);
end
else
if (BitBtnFrei.Enabled = false)
then
begin
Mausgedrueckt := true;
canvas.MoveTo(X,Y);
end
else
if BitBtnRechteck.enabled = false
then
begin
Mausgedrueckt := true;
XAnfang := x;
YAnfang := y;
XEnde := x;
YEnde := y;
Canvas.MoveTo(XAnfang,YAnfang);
end
else
if BitBtnEraser.enabled = false
then
begin
Mausgedrueckt := true;
canvas.Pen.Mode := pmCopy;
Canvas.Pen.Color := clwhite;
Canvas.MoveTo(X,Y);
end
else
if BitBtnEllipse.enabled = false
then
begin
Mausgedrueckt := true;
XAnfang := x;
YAnfang := y;
XEnde := x;
YEnde := y;
Canvas.MoveTo(XAnfang,YAnfang);
end
else
if BitBtnPunkt.Enabled = false
then
begin
Canvas.Ellipse(x-1,y-1,x+1,y+1)
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); // Betätigung der linken Maustaste (loslassen)
begin
if BitBtnFrei.Enabled = false
then
begin
canvas.Pen.mode := pmcopy;
Mausgedrueckt := false;
end
else
if BitBtnPunkt.enabled = false
then
begin
canvas.pen.mode := pmcopy;
Canvas.Ellipse(x-1,y-1,x+1,y+1);
end
else
if BitBtnStrecke.Enabled = false
then
begin
canvas.Pen.Mode := pmcopy;
Canvas.MoveTo(XAnfang,YAnfang);
canvas.LineTo(XEnde,YEnde);
Mausgedrueckt := false;
end
else
if BitBtnRechteck.Enabled = false
then
begin
canvas.Pen.Mode := pmcopy;
Canvas.MoveTo(XAnfang,YAnfang);
Canvas.Rectangle(XAnfang,YAnfang,XEnde,YEnde);
Mausgedrueckt := false;
end
else
if BitBtnEllipse.enabled = false
then
begin
canvas.Pen.Mode := pmcopy;
Canvas.MoveTo(XAnfang,YAnfang);
Canvas.Ellipse(XAnfang,YAnfang,XEnde,YEnde);
Mausgedrueckt := false;
end
else
if BitBtnEraser.enabled = false
then
begin
canvas.Pen.Mode := pmcopy;
Mausgedrueckt := false;
Switchcolor;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Switchcolor;
if BitBtnFrei.enabled = false
then
begin
Panel2.Caption := (' Zeichenart: Freihandzeichnen '); // Standardmeldung bei Programmstart
end
else
begin
Panel2.Caption := (' Zeichenart: Punkt ');
end;
end;
procedure TForm1.BitBtnStreckeClick(Sender: TObject); // Streckebutton wird deaktiviert bzw. aktiviert
begin
BitBtnStrecke.enabled := false;
BitBtnFrei.Enabled := true;
BitBtnPunkt.Enabled := true;
BitBtnEllipse.Enabled := true;
BitBtnRechteck.Enabled := true;
BitBtnEraser.enabled := true;
Panel2.Caption := (' Zeichenart: Strecke '); // Meldung welcher Zeichentyp aktiviert ist
end;
procedure TForm1.BitBtnRechteckClick(Sender: TObject); // Rechteckbutton wird deaktiviert bzw. aktiviert
begin
BitBtnStrecke.enabled := true;
BitBtnFrei.Enabled := true;
BitBtnPunkt.Enabled := true;
BitBtnEllipse.Enabled := true;
BitBtnRechteck.Enabled := false;
BitBtnEraser.enabled := true;
Panel2.Caption := (' Zeichenart: Rechteck '); // Meldung welcher Zeichentyp aktiviert ist
end;
procedure TForm1.BitBtnEllipseClick(Sender: TObject); // Kreisbutton wird deaktiviert bzw. aktiviert
begin
BitBtnStrecke.enabled := true;
BitBtnFrei.Enabled := true;
BitBtnPunkt.Enabled := true;
BitBtnEllipse.Enabled := false;
BitBtnRechteck.Enabled := true;
BitBtnEraser.enabled := true;
Panel2.Caption := (' Zeichenart: Kreis '); // Meldung welcher Zeichentyp aktiviert ist
end;
procedure TForm1.NeuClick(Sender: TObject);
begin
Form1.color := clwhite;
refresh;
end;
procedure TForm1.BitBtnEraserClick(Sender: TObject);
begin
BitBtnStrecke.enabled := true;
BitBtnFrei.Enabled := true;
BitBtnPunkt.Enabled := true;
BitBtnEllipse.Enabled := true;
BitBtnRechteck.Enabled := true;
BitBtnEraser.enabled := false;
Panel2.Caption := (' Zeichenart: Radierer '); // Meldung welcher Zeichentyp aktiviert ist
end;
procedure TForm1.BitBtnSt1Click(Sender: TObject);
begin
BitBtnSt1.enabled := false;
BitBtnSt2.enabled := true;
BitBtnSt3.enabled := true;
BitBtnSt4.enabled := true;
Switchwidth;
end;
procedure TForm1.BitBtnSt2Click(Sender: TObject);
begin
BitBtnSt1.enabled := true;
BitBtnSt2.enabled := false;
BitBtnSt3.enabled := true;
BitBtnSt4.enabled := true;
Switchwidth;
end;
procedure TForm1.BitBtnSt3Click(Sender: TObject);
begin
BitBtnSt1.enabled := true;
BitBtnSt2.enabled := true;
BitBtnSt3.enabled := false;
BitBtnSt4.enabled := true;
Switchwidth;
end;
procedure TForm1.BitBtnSt4Click(Sender: TObject);
begin
BitBtnSt1.enabled := true;
BitBtnSt2.enabled := true;
BitBtnSt3.enabled := true;
BitBtnSt4.enabled := false;
Switchwidth;
end;
procedure TForm1.BitBtnSchwarzClick(Sender: TObject);
begin
BitBtnBlau.enabled := true;
BitBtnGelb.enabled := true;
BitBtnRot.enabled := true;
BitBtnGruen.enabled := true;
BitBtnSchwarz.enabled := false;
Switchcolor; //Farbwechsel
end;
end.