![]() |
Delphi Prob (WICHTIG)
Hallo zusammen,
ich weiss nicht ob es hier rein gehört, man möge mir verzeihen wenn nicht. Weiss aber nicht mehr an wen ich mich wenden kann diesbezüglich!!! Ich muss für die Schule ein Programm mit Delphi schreiben, das so ähnlich wie MS Paint funktioniert, aber nur die 4 BitButtons Freihandzeichen, Strich zeichnen, Viereck und Ellipse hat. Dazu noch ein paar Farben. Schnelle Hilfe wäre wichtig, hab Mittwoch das nächste mal info und ich komme nich weiter. Hier mein Script, dass leider i.M "noch" nicht richtig funzt. Könnt ihr es euch mal bitte anschauen was ich falsch mache?? Ich danke euch!!
Delphi-Quellcode:
unit umain;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons; type TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; BitBtn_stift: TBitBtn; BitBtn_strich: TBitBtn; BitBtn_viereck: TBitBtn; BitBtn_ellipse: TBitBtn; BitBtn_schwarz: TBitBtn; BitBtn_weiss: TBitBtn; BitBtn_rot: TBitBtn; BitBtn_gruen: TBitBtn; BitBtn_blau: TBitBtn; BitBtn_gelb: TBitBtn; BitBtn_violett: TBitBtn; Image1: TImage; procedure FormCreate (Sender: TObject); procedure BitBtn_stiftClick(Sender: TObject); procedure BitBtn_strichClick(Sender: TObject); procedure BitBtn_viereckClick(Sender: TObject); procedure BitBtn_ellipseClick(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 Merkwuerdig (Sender: TObject); private { Private-Deklarationen } MausGedrueckt: Boolean; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin image1.canvas end; procedure TForm1.BitBtn_stiftClick(Sender: TObject); begin BitBtn_stift.Enabled := False; BitBtn_strich.Enabled := True; BitBtn_viereck.Enabled := True; BitBtn_ellipse.Enabled := True; end; procedure TForm1.BitBtn_strichClick(Sender: TObject); begin BitBtn_stift.Enabled := True; BitBtn_strich.Enabled := False; BitBtn_viereck.Enabled := True; BitBtn_ellipse.Enabled := True; end; procedure TForm1.BitBtn_viereckClick(Sender: TObject); begin BitBtn_stift.Enabled := True; BitBtn_strich.Enabled := True; BitBtn_viereck.Enabled := False; BitBtn_ellipse.Enabled := True; end; procedure TForm1.BitBtn_ellipseClick(Sender: TObject); begin BitBtn_stift.Enabled := True; BitBtn_strich.Enabled := True; BitBtn_viereck.Enabled := True; BitBtn_ellipse.Enabled := False; end; procedure TForm1.FormMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer); begin MausGedrueckt := True; Canvas.MoveTo (X,Y) ; end; procedure TForm1.FormMouseMove (Sender: TObject; Shift: TShiftState; X,Y: Integer); begin if MausGedrueckt then Canvas.LineTo (X,Y) end; procedure TForm1.FormMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer); begin MausGedrueckt := False end; procedure TForm1.Merkwuerdig; var I: Boolean; begin for I := False to True do Form1.Left := Form1.Left+50; end; end. Cheerz Hezekiel [edit=FuckRacism]Delphi-Syntax hinzugefügt. Bitte absofort selber machen. Mfg, FuckRacism[/edit] |
Re: Delphi Prob (WICHTIG)
schreib doch bitte was nicht funktioniert und was für fehlermeldungen erscheinen. ansonsten kann dir nicht sehr gut geholfen werden.
was ich bemerkt habe ist, du definierst nirgends die variable "Mausgedrueckt" (oder seh ich das falsch...?) nachdem ich diese nämlich definiert habe, klappte das freihandzeichnen tiptop! gruss, dave PS: ändere deinen titel, wird nicht gern gesehen da zu wenig aussage kräftig ;) |
Re: Delphi Prob (WICHTIG)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe hier mal schnell etwas gebastelt. Es ist nicht schön und auch nicht gut, aber schließlich habe ich nur einige Minuten dran gearbeitet. Aber sieh es dir mal an, vielleicht hilft es dir weiter bei deinem Programm. Wenigstens als kleine Anregung kann mein Programm dir bestimmt dienen.
Benutz den Debugger, um dir den Programmablauf anzusehen, und überleg dir, was man verbessern kann (es ist eine ganze Menge) und wie. Ich habe den Quelltext ein wenig kommentiert. Hoffentlich nützt es dir etwas. |
Re: Delphi Prob (WICHTIG)
Delphi-Quellcode:
Da musst du auch noch MoveTo reinbringen, denn sobald LineTo ausgeführt wird, gibt's ja das vorige MoveTo nicht mehr ;)
procedure TForm1.FormMouseMove (Sender: TObject; Shift: TShiftState;
X,Y: Integer); begin if MausGedrueckt then Canvas.LineTo (X,Y) end; |
Re: Delphi Prob (WICHTIG)
Vielen Dank euch allen!!! Werde mich dann mal wieder an die Arbeit machen
Cheerz Hezekiel |
Re: Delphi Prob (WICHTIG)
Ach, nochwas. Das mit Mausgedrückt ist schon umständlich, machso doch so:
Delphi-Quellcode:
procedure TForm1.FormMouseMove (Sender: TObject; Shift: TShiftState;
X,Y: Integer); begin if ssleft in shift then begin Canvas.LineTo(X,Y); Canvas.MoveTo(X,Y); end; end; Nachtrag: Noch herzlich willkommen in der DP! |
Re: Delphi Prob (WICHTIG)
Hi...
Ich hab ein bissel länger gebraucht, will aber auch noch posten... Mein CFD-beitrag zum thema viereck basierend auf dem code von hezekiel:
Delphi-Quellcode:
[Edit]Nachtrag: Matze hat Recht... ist umständlich und kein schöner Style[/Edit]
[..]
private { Private-Deklarationen } MausGedrueckt: Boolean; X1: Integer; Y1: Integer; [..] procedure TForm1.FormMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer); begin MausGedrueckt := True; Canvas.MoveTo (X,Y) ; X1:= X; Y1:= Y; end; procedure TForm1.FormMouseMove (Sender: TObject; Shift: TShiftState; X,Y: Integer); begin if MausGedrueckt then begin if not BitBtn_stift.Enabled then Canvas.LineTo(X,Y); if not Bitbtn_viereck.Enabled then begin canvas.Pen.Color:=clbtnface; Canvas.Rectangle(X1, Y1, X, Y); canvas.Pen.Color:=clblack; Canvas.Rectangle(X1, Y1, X, Y); end; end; end; procedure TForm1.FormMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer); begin MausGedrueckt := False; if not Bitbtn_viereck.Enabled then begin canvas.Pen.Color:=clblack; Canvas.Rectangle(X1, Y1, X, Y); end; end; |
Re: Delphi Prob (WICHTIG)
@Hezekiel: Bitte benenn umgehend deinen Thread sinnvoll um (ersten Beitrag editieren und Topic ändern). Hilfe in Delphi brauchen hier die meisten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz