MiniPaint "Gummilinien"
spacer
Autor Nachricht
10S96
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 08.01.12 20:04 
Hay :) ich habe schon wieder Probleme mit meinem MiniPaint. In den letzten Tagen habe ich nun versucht das Programm um die "Gummilinien" zu erweitern, was leider noch nicht funktioniert hat. Ich hoffe ihr könnt mir wieder so toll helfen wie beim letzten Mal :)

Quelltext
ausblenden volle Höhe Delphi-Quelltext markieren
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:
unit Unit1;

interface

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

type
TPaint = class(TForm)
PnlWerkzeug: TPanel;
BitBtnFrei: TBitBtn;
BitBtnPunkt: TBitBtn;
BitBtnStrecke: TBitBtn;
BitBtnRechteck: TBitBtn;
BitBtnEllipse: TBitBtn;
procedure BitBtnPunktClick(Sender: TObject);
procedure BitBtnFreiClick(Sender: TObject);
procedure FormMouseDown (Sender: Tobject; Button: TMouseButton;
Shift: TShiftState; X,Y: Integer);
procedure FormMouseUp (Sender: Tobject; Button: TMouseButton;
Shift: TShiftState; X,Y: Integer);
procedure FormMouseMove (Sender: Tobject; Shift: TShiftState; X,Y: Integer);
procedure BitBtnStreckeClick(Sender: TObject);
procedure BitBtnRechteckClick(Sender: TObject);

private
{ Private-Deklarationen }
MausGedrueckt : Boolean;
public
{ Public-Deklarationen }
end;

var
Paint: TPaint;

implementation

{$R *.dfm}


procedure TPaint.BitBtnPunktClick(Sender: TObject);
begin
BitBtnPunkt.Enabled := False;
BitBtnPunkt.Enabled := True;

end;

procedure TPaint.BitBtnFreiClick(Sender: TObject);
begin
BitBtnFrei.Enabled := False;
BitBtnFrei.Enabled := True;
end;


procedure TPaint.FormMouseDown (Sender:TObject; Button:TMouseButton;
Shift:TShiftState; X,Y:Integer);
begin
MausGedrueckt := True;
Canvas.MoveTo(X, Y);
end;

begin
if BitBtnFrei.Enabled = False

then begin
MausGedrueckt := True;
Canvas.MoveTo (X,Y)


Canvas.Ellipse (X-1,Y-1,X+1,Y+1);
end;

procedure TPaint.FormMouseMove (Sender:TObject; Shift:TShiftState; X,Y:integer);

begin
if MausGedrueckt
then Canvas.LineTo(X,Y)
end;

procedure TPaint.FormMouseUp (Sender:TObject; Button:TMouseButton;
Shift:TShiftState; X,Y:Integer);
begin
MausGedrueckt := False
end;


procedure TPaint.FormActivate (Sender: TObject);
begin
WindowState := wsMaximized;
Canvas.Pen.Width := 2;
MausGedrueckt := False;
end;



procedure TPaint.BitBtnStreckeClick(Sender: TObject);
begin
procedure TPaint.FormMouseDown (Sender:TObject; Button:TMouseButton;
Shift:TShiftState; X,Y:Integer);
begin
MausGedrueckt := True;
XAnfang := X;
YAnfang := Y;
XEnde := X;
YEnde := Y;
Canvas.MoveTo (XAnfang,YAnfang);
end;

procedure TPaint.MouseMove (Sender:TObject; Button:TMouseButton;
Shift:TShiftState; X,Y:Integer);
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;

end.


Fehlermeldung
ausblenden Delphi-Quelltext markieren
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:
[Fehler] Unit1.pas(64): Undefinierter Bezeichner: 'BitBtnFrei'
[Fehler] Unit1.pas(64): 'THEN' erwartet, aber Bezeichner 'Enabled' gefunden
[Fehler] Unit1.pas(67): Undefinierter Bezeichner: 'MausGedrueckt'
[Fehler] Unit1.pas(68): Undefinierter Bezeichner: 'Canvas'
[Fehler] Unit1.pas(68): Undefinierter Bezeichner: 'X'
[Fehler] Unit1.pas(71): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(71): Nicht genügend wirkliche Parameter
[Fehler] Unit1.pas(74): Anweisung erwartet, aber 'PROCEDURE' gefunden
[Fehler] Unit1.pas(88): Undefinierter Bezeichner: 'FormActivate'
[Fehler] Unit1.pas(88): ';' erwartet, aber '(' gefunden
[Fehler] Unit1.pas(90): Undefinierter Bezeichner: 'WindowState'
[Fehler] Unit1.pas(91): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(99): Anweisung erwartet, aber 'PROCEDURE' gefunden
[Fehler] Unit1.pas(101): Bezeichner redefiniert: 'TPaint.FormMouseDown'
[Fehler] Unit1.pas(103): Undefinierter Bezeichner: 'XAnfang'
[Fehler] Unit1.pas(104): Undefinierter Bezeichner: 'YAnfang'
[Fehler] Unit1.pas(105): Undefinierter Bezeichner: 'XEnde'
[Fehler] Unit1.pas(106): Undefinierter Bezeichner: 'YEnde'
[Fehler] Unit1.pas(110): Undefinierter Bezeichner: 'MouseMove'
[Fehler] Unit1.pas(113): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(114): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(114): Undefinierter Bezeichner: 'YAnfang'
[Fehler] Unit1.pas(115): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(115): Undefinierter Bezeichner: 'YEnde'
[Fehler] Unit1.pas(116): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(117): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(117): Nicht genügend wirkliche Parameter
[Fehler] Unit1.pas(25): Ungenügende Forward- oder External-Deklaration: 'TPaint.BitBtnRechteckClick'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden


Danke schonmal im Voraus :)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 08.01.12 20:22 
Rück den Quelltext einmal richtig ein, dann findest du den Fehler auch... :roll:

Dann sieht der nämlich so aus:
ausblenden volle Höhe Delphi-Quelltext markieren
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:
unit Unit1;

interface

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

type
TPaint = class(TForm)
PnlWerkzeug: TPanel;
BitBtnFrei: TBitBtn;
BitBtnPunkt: TBitBtn;
BitBtnStrecke: TBitBtn;
BitBtnRechteck: TBitBtn;
BitBtnEllipse: TBitBtn;
procedure BitBtnPunktClick(Sender: TObject);
procedure BitBtnFreiClick(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure BitBtnStreckeClick(Sender: TObject);
procedure BitBtnRechteckClick(Sender: TObject);

private
{ Private-Deklarationen }
MausGedrueckt: Boolean;
public
{ Public-Deklarationen }
end;

var
Paint: TPaint;

implementation

{$R *.dfm}

procedure TPaint.BitBtnPunktClick(Sender: TObject);
begin
BitBtnPunkt.Enabled := False;
BitBtnPunkt.Enabled := True;

end;

procedure TPaint.BitBtnFreiClick(Sender: TObject);
begin
BitBtnFrei.Enabled := False;
BitBtnFrei.Enabled := True;
end;

procedure TPaint.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MausGedrueckt := True;
Canvas.MoveTo(X, Y);
end;

begin
if BitBtnFrei.Enabled = False

then
begin
MausGedrueckt := True;
Canvas.MoveTo(X, Y)

Canvas.Ellipse(X - 1, Y - 1, X + 1, Y + 1);
end;

procedure TPaint.FormMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);

begin
if MausGedrueckt then
Canvas.LineTo(X, Y)
end;

procedure TPaint.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MausGedrueckt := False
end;

procedure TPaint.FormActivate(Sender: TObject);
begin
WindowState := wsMaximized;
Canvas.Pen.Width := 2;
MausGedrueckt := False;
end;

procedure TPaint.BitBtnStreckeClick(Sender: TObject);
begin

procedure TPaint.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MausGedrueckt := True;
XAnfang := X;
YAnfang := Y;
XEnde := X;
YEnde := Y;
Canvas.MoveTo(XAnfang, YAnfang);
end;

procedure TPaint.MouseMove(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
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;

end.
Was gehört denn jetzt zu welcher Methode? Speziell die Wörter begin und end.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
10S96 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 08.01.12 21:30 
Tut mir Leid ich sehe es immer noch nicht! :oops:
(Sorry, dass ich mich so dumm anstelle. Es ist das erste Mal, dass ich selbst programmiere.)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 08.01.12 21:43 
Dort ist FormMouseDown zu Ende... alles was danach kommt hängt frei in der Unit, deshalb kann Delphi damit nix anfangen.
ausblenden volle Höhe Delphi-Quelltext markieren
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:
procedure TPaint.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MausGedrueckt := True;
Canvas.MoveTo(X, Y);
end;

begin
if BitBtnFrei.Enabled = False

then
begin
MausGedrueckt := True;
Canvas.MoveTo(X, Y)

Canvas.Ellipse(X - 1, Y - 1, X + 1, Y + 1);
end;

procedure TPaint.FormMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);

begin
if MausGedrueckt then
Canvas.LineTo(X, Y)
end;

procedure TPaint.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MausGedrueckt := False
end;

procedure TPaint.FormActivate(Sender: TObject);
begin
WindowState := wsMaximized;
Canvas.Pen.Width := 2;
MausGedrueckt := False;
end;

procedure TPaint.BitBtnStreckeClick(Sender: TObject);
begin

procedure TPaint.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MausGedrueckt := True;
XAnfang := X;
YAnfang := Y;
XEnde := X;
YEnde := Y;
Canvas.MoveTo(XAnfang, YAnfang);
end;

procedure TPaint.MouseMove(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
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;

end.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
10S96 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 08.01.12 22:18 
Also muss ich nur das `End` entfernen?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 08.01.12 22:43 
Naja, das musst du ja wissen von wo bis wo deine Methode gehen soll. :nixweiss:

Vermutlich meintest du das aber so, ja. Dann ist da aber immer noch ein begin zu viel und hinter dem Code von FormMouseDown muss das end natürlich dann irgendwo hin.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home