Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Ich die Fehler in meinem Paint Programm nicht!


ss396 - Di 26.06.12 19:04
Titel: Ich die Fehler in meinem Paint Programm nicht!
Hallo,

ich habe ein kleines problem und wollte Fragen ob mal jemand über meinen Quelltext gucken kann, da ich mithilfe eines Informatik Buches ein MiniPaint programmieren möchte. Meine Endversion sieht auch so aus wie die Musterlösung des Buches, trotzdem werden mir Fehler angezeigt.(der Fehler liegt bei der alleschaltflaechenaktiv prozedur. Dort kennt der die ANwendungen nicht.)

Danke im voraus!

ss396


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, Buttons;

const Rot       =clRed;
      Gelb      =clYellow;
      Gruen     =clGreen;
      Blau      =clBlue  ;
      Schwarz   =clBlack  ;
      Grau      =clGray    ;

const Freihand             = 1;
      Punkt                = 2;
      Linie                = 3;
      Rechteck             = 4;
      Ellipse              = 5;
      RechteckTransparent  = 6;
      EllipseTransparent   = 7;

type
  TPaint = class(TForm)
    BitBtnRechteck: TBitBtn;
    BitBtnFreihand: TBitBtn;
    BitBtnEllipse: TBitBtn;
    BitBtnLinie: TBitBtn;
    BitBtnPunkt: TBitBtn;
    BitBtnRot: TBitBtn;
    BitBtnGelb: TBitBtn;
    BitBtnGruen: TBitBtn;
    BitBtnBlau: TBitBtn;
    BitBtnSchwarz: TBitBtn;
    BitBtnRechteckTransparent: TBitBtn;
    BitBtnEllipseTransparent: TBitBtn;
    Panel1: TPanel;


  procedure FormMouseDown (Sender: TObject;Button:TMouseButton;Shift:TShiftState; X,Y:integer);
  procedure FormMouseMove (Sender:TObject; Shift:TShiftState; X,Y:integer);
  procedure FormMouseUp (Sender:TObject; Button:TMouseButton; Shift:TShiftState; X,Y:Integer);
    procedure BitBtnRechteckClick(Sender: TObject);
    procedure BitBtnFreihandClick(Sender: TObject);
    procedure BitBtnEllipseClick(Sender: TObject);
    procedure BitBtnLinieClick(Sender: TObject);
    procedure BitBtnPunktClick(Sender: TObject);
    procedure BitBtnRechteckTransparentClick(Sender: TObject);
    procedure BitBtnEllipseTransparentClick(Sender: TObject);
    procedure BitBtnRotClick(Sender: TObject);
    procedure BitBtnGelbClick(Sender: TObject);
    procedure BitBtnGruenClick(Sender: TObject);
    procedure BitBtnBlauClick(Sender: TObject);
    procedure BitBtnSchwarzClick(Sender: TObject);

  private
  MausGedrueckt :Boolean;
  XAnfang, YAnfang, XEnde, YEnde :Integer;
  Zeichenfarbe: TColor;
  Zeichenart: Integer;
    { Private-Deklarationen }
  public
  procedure AlleSchaltflaechenAktiv;
    { Public-Deklarationen }
  end;

var
  Paint: TPaint;
  MausGedrueckt :Boolean;
  XAnfang, YAnfang, XEnde, YEnde :Integer;
  Zeichenfarbe: TColor;
  Zeichenart: Integer;

implementation

{$R *.DFM}


procedure TPaint.AlleSchaltflaechenAktiv;
BitBtnRechteck.Enabled:=true
BitBtnFreihand.Enabled:=true
BitBtnLinie.Enabled:=true
BitBtnEllipse.Enabled:=true
BitBtnPunkt.Enabled:=true
BitBtnRechtecktransparent.Enabled:=true
BitBtnEllipseTransparent.Enabled:=true
end;
procedure TPaint.BitBtnRechteckClick(Sender: TObject);
begin
AlleSchaltflaechenAktiv;
BitBtnRechteck.Enabled:=False;
Zeichenart:= Rechteck ;
//PanStatus.Caption:=' Zeichenart: Rechteck'
end;

procedure TPaint.BitBtnFreihandClick(Sender: TObject);
begin
AlleSchaltflaechenAktiv;
BitBtnfreihand.Enabled:=False;
Zeichenart:= Freihand ;
//PanStatus.Caption:=' Zeichenart: Freihand'
end;

procedure TPaint.BitBtnEllipseClick(Sender: TObject);
begin
AlleSchaltflaechenAktiv;
BitBtnEllipse.Enabled:=False;
Zeichenart:= Ellipse ;
//PanStatus.Caption:=' Zeichenart: Ellipse'
end;

procedure TPaint.BitBtnLinieClick(Sender: TObject);
begin
AlleSchaltflaechenAktiv;
BitBtnlinie.Enabled:=False;
Zeichenart:= Linie ;
//PanStatus.Caption:=' Zeichenart: linie'
end;

procedure TPaint.BitBtnPunktClick(Sender: TObject);
begin
AlleSchaltflaechenAktiv;
BitBtnPunkt.Enabled:=False;
Zeichenart:= Punkt ;
//PanStatus.Caption:=' Zeichenart: Punkt'
end;

procedure TPaint.BitBtnRechteckTransparentClick(Sender: TObject);
begin
AlleSchaltflaechenAktiv;
BitBtnRechteckTransparent.Enabled:=False;
Zeichenart:= RechteckTransparent ;
//PanStatus.Caption:=' Zeichenart: RechteckTransparent'
end;

procedure TPaint.BitBtnEllipseTransparentClick(Sender: TObject);
begin
AlleSchaltflaechenAktiv;
BitBtnEllipseTransparent.Enabled:=False;
Zeichenart:= EllipseTransparent ;
//PanStatus.Caption:=' Zeichenart: EllipseTransparent'
end;


procedure TPaint.FormMouseDown (Sender: TObject;Button:TMouseButton;Shift:TShiftState; X,Y:integer);
 begin
 MausGedrueckt:=True;
 case Zeichenart of
      Punkt:     begin
                      Canvas.Pen.Color:=Zeichenfarbe;
                      Canvas.Ellipse (x-2,y-2, x+2,y+2);
                 end;
      Freihand:  begin
                      Canvas.Pen.Color:=zeichenfarbe;
                 end;
      Linie,
      Rechteck,
      Ellipse,
      RechteckTransparent,
      EllipseTransparent:  begin
                                Canvas.Pen.Color:=Grau;
                                Canvas.Pen.Mode:=pmNotXor ;
                            end;
      end{case}
      XAnfang:= X;
      YAnfang:= Y;
      XEnde:= X ;
      YENde:= Y;
      Canvas.MoveTo (XAnfang,YAnfang)
end;

procedure TPaint.FormMouseMove (Sender:TObject; Shift:TShiftState; X,Y:integer);
begin
     if MausGedrueckt then begin
        case Zeichenart of
        Freihand: begin
                  Canvas.LineTo (x,y)
                  end;
        Linie: begin
               Canvas.MoveTo (XAnfang,YAnfang);
               Canvas.LineTo (XEnde,YEnde);
               Canvas.MoveTo (XAnfang,YAnfang);
               Canvas.LineTo (X,Y);
               end;
        Rechteck, Ellipse, Rechtecktransparent, EllipseTransparent:
                  begin
                  Canvas.Rectangle (XAnfang,YAnfang,XEnde,YEnde);
                  Canvas.Rectangle (XANfang,YAnfang,X,Y);
                  end;
        end{case}
     XEnde:= X;
     YEnde:= Y;
     end{if MausGedrueckt}
end;

procedure TPaint.FormMouseUp (Sender:TObject; Button:TMouseButton; Shift:TShiftState; X,Y:Integer);
begin
     case Zeichenart of
     Linie:          begin
                     Canvas.Pen.Color:=Zeichenfarbe;
                     Canvas.Pen.Mode:=pmCopy;
                     Canvas.MoveTo (XAnfang,YAnfang);
                     Canvas.LineTo (X,Y) ;
                     end;
     Rechteck:       begin
                     Canvas.Pen.Color:=Zeichenfarbe;
                     Canvas.Pen.Mode:=pmCopy;
                     Canvas.Rectangle (XAnfang,YAnfang,X,Y)
                     end;
     Ellipse:        begin
                     Canvas.Pen.Color:=Zeichenfarbe;
                     Canvas.Pen.Mode:=pmCopy;
                     Canvas.Ellipse (XAnfang,YAnfang,XEnde,YEnde);
                     end;
     EllipseTransparent:
                        begin
                        Canvas.Rectangle (XAnfang,YAnfang,XEnde,YEnde);
                        Canvas.Pen.Color:=Zeichenfarbe;
                        Canvas.Pen.Mode:=pmCopy  ;
                        Canvas.Brush.Style:=bsClear;
                        Canvas.Ellipse (XAnfang,YAnfang,XEnde,YEnde);
                        Canvas.Brush.Style:=bsSolid;
                        end;
     RechteckTransparent:
                        begin
                        Canvas.Rectangle (XAnfang,YAnfang,XEnde,YEnde);
                        Canvas.Pen.Color:=Zeichenfarbe;
                        Canvas.Pen.Mode:=pmCopy  ;
                        Canvas.Brush.Style:=bsClear;
                        Canvas.Rectangle (XAnfang,YAnfang,XEnde,YEnde);
                        Canvas.Brush.Style:=bsSolid;
                        end;
     end{case}
     MausGedrueckt:=False;
end;






procedure TPaint.BitBtnRotClick(Sender: TObject);
begin
Zeichenfarbe:=Rot;
//PanStatus.Caption:=' Zeichenfarbe: Rot'
end;

procedure TPaint.BitBtnGelbClick(Sender: TObject);
begin
Zeichenfarbe:=Gelb;
//PanStatus.Caption:=' Zeichenfarbe: Gelb'
end;

procedure TPaint.BitBtnGruenClick(Sender: TObject);
begin
Zeichenfarbe:=Gruen;
//PanStatus.Caption:=' Zeichenfarbe: Gruen'
end;

procedure TPaint.BitBtnBlauClick(Sender: TObject);
begin
Zeichenfarbe:=Blau;
//PanStatus.Caption:=' Zeichenfarbe: Blau'
end;

procedure TPaint.BitBtnSchwarzClick(Sender: TObject);
begin
Zeichenfarbe:=Schwarz;
//PanStatus.Caption:=' Zeichenfarbe: Schwarz'
end;

end.


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Tranx - Di 26.06.12 19:09


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TPaint.AlleSchaltflaechenAktiv;
begin  // DAS FEHLT
  BitBtnRechteck.Enabled:=true
  BitBtnFreihand.Enabled:=true
  BitBtnLinie.Enabled:=true
  BitBtnEllipse.Enabled:=true
  BitBtnPunkt.Enabled:=true
  BitBtnRechtecktransparent.Enabled:=true
  BitBtnEllipseTransparent.Enabled:=true
end;


Das BEGIN hinter der Procedure-Zeile fehlt.

Bitte setze demnächst Deinen Quelltext in die beiden Begrenzer delphi und /delphi, jeweils in eckigen Klammern


ss396 - Di 26.06.12 19:10

Danke Problem gelöst!!