Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Delphi Prob (WICHTIG) (https://www.delphipraxis.net/15860-delphi-prob-wichtig.html)

Hezekiel 5. Feb 2004 14:24


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]

ims 5. Feb 2004 14:42

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 ;)

Cuchulainn 5. Feb 2004 15:04

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.

Matze 5. Feb 2004 15:07

Re: Delphi Prob (WICHTIG)
 
Delphi-Quellcode:
procedure TForm1.FormMouseMove (Sender: TObject; Shift: TShiftState;
X,Y: Integer);
begin
if MausGedrueckt
then Canvas.LineTo (X,Y)
end;
Da musst du auch noch MoveTo reinbringen, denn sobald LineTo ausgeführt wird, gibt's ja das vorige MoveTo nicht mehr ;)

Hezekiel 5. Feb 2004 15:11

Re: Delphi Prob (WICHTIG)
 
Vielen Dank euch allen!!! Werde mich dann mal wieder an die Arbeit machen

Cheerz Hezekiel

Matze 5. Feb 2004 15:15

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!

Tonic1024 5. Feb 2004 15:15

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:
[..]
  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;
[Edit]Nachtrag: Matze hat Recht... ist umständlich und kein schöner Style[/Edit]

Luckie 5. Feb 2004 19:39

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 22:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz