Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Ein roter Punkt den man auf dem Desktop verschieben kann (https://www.delphipraxis.net/59795-ein-roter-punkt-den-man-auf-dem-desktop-verschieben-kann.html)

HappyPunk 29. Dez 2005 19:15

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
Liste der Anhänge anzeigen (Anzahl: 1)
kann mir keiner in der Datei den Fehler suchen und den "ausbessern"!

ICh komm da leider net weiter!

thx

faux 29. Dez 2005 19:17

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
Wieso deklarierst du zweimal die Klasse TForm1??
Ein mal im Interface, da gehört sie auch hin, und einmal in der Implementation?

Bitte mach mal
Delphi-Quellcode:
 und
- Tags um einen Code.

Grüße
Faux

HappyPunk 29. Dez 2005 19:31

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
so nochmal!!

ich hoffe der is besser!! :mrgreen:

Delphi-Quellcode:

unit Redpoint;

interface

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

type
  TForm2 = class(TForm)
    Image1: TImage;
  private
    LastX, LastY: Integer;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

end.
            // Zeichenfarbe (Pinsel) auf rot setzen
  self.Image1.Canvas.Brush.Color := clRed;
  // Kreis zeichnen
  self.Image1.Canvas.Ellipse(0, 0, self.Width, self.Height);
  // DoubleBuffer aktivieren (verhindert flackern)
  self.DoubleBuffered := true;     procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // prüfen ob die linke Maustaste gedrückt wurde
  if ssLeft in Shift then
    begin
      // aktuelle Mausposition merken
      self.lastX := Mouse.CursorPos.X;
      self.lastY := Mouse.CursorPos.Y;
      // Modus wechseln
      self.moving := True;
    end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  // wenn Modus moving aktiv
  if self.moving then
    begin
      // Position des Fensters relativ zu Mauskoordinaten ändern
      self.Left := self.Left + (Mouse.CursorPos.X - lastX);
      self.Top := self.Top + (Mouse.CursorPos.Y - lastY);
      // Merken der neuen Position
      self.lastX := Mouse.CursorPos.X;
      self.lastY := Mouse.CursorPos.Y;
    end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // Wenn Linke Maustaste losgelassen wurde
  if Button = mbLeft then
    begin
      // Modus moving verlassen
      self.moving := false;
    end;
end;

Brainstalker 29. Dez 2005 19:33

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
Ok ich frag mich zwar wie man eine Datei so zerstückeln kann, aber ist ja auch egal.
Hier hab ich sie für dich mal "richtig zusammengesetzt".



Delphi-Quellcode:
unit Redpoint;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private-Deklarationen } 
    Moving: Boolean; // <- hier
    LastX, LastY: Integer; // <- und hier
  public
    { Public-Deklarationen } 
  end;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Zeichenfarbe (Pinsel) auf rot setzen
  self.Image1.Canvas.Brush.Color := clRed;
  // Kreis zeichnen
  self.Image1.Canvas.Ellipse(0, 0, self.Width, self.Height);
  // DoubleBuffer aktivieren (verhindert flackern)
  self.DoubleBuffered := true;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // prüfen ob die linke Maustaste gedrückt wurde
  if ssLeft in Shift then
    begin
      // aktuelle Mausposition merken
      self.lastX := Mouse.CursorPos.X;
      self.lastY := Mouse.CursorPos.Y;
      // Modus wechseln
      self.moving := True;
    end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  // wenn Modus moving aktiv
  if self.moving then
    begin
      // Position des Fensters relativ zu Mauskoordinaten ändern
      self.Left := self.Left + (Mouse.CursorPos.X - lastX);
      self.Top := self.Top + (Mouse.CursorPos.Y - lastY);
      // Merken der neuen Position
      self.lastX := Mouse.CursorPos.X;
      self.lastY := Mouse.CursorPos.Y;
    end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // Wenn Linke Maustaste losgelassen wurde
  if Button = mbLeft then
    begin
      // Modus moving verlassen
      self.moving := false;
    end;
end;

end.
edit: Semikolon hinzugefügt. Sry kam von copy&paste

faux 29. Dez 2005 19:38

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
Nur mal so ne Frage, wieso schreibst du immer self. ? Ohne ginge es genau so, da du ja in der TForm1-Klasse bist.

Grüße
Faux

HappyPunk 29. Dez 2005 19:56

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
So jetzt schaut die schon besser aus!!

Aber ich hab noch ein Problem! Ich kann die Software nicht testen (F9)

Delphi-Quellcode:
unit Redpoint;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private-Deklarationen } 
    Moving: Boolean // <- hier
    LastX, LastY: Integer; // <- und hier
  public
    { Public-Deklarationen } 
  end;

implementation

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Zeichenfarbe (Pinsel) auf rot setzen
  self.Image1.Canvas.Brush.Color := clRed;
  // Kreis zeichnen
  self.Image1.Canvas.Ellipse(0, 0, self.Width, self.Height);
  // DoubleBuffer aktivieren (verhindert flackern)
  self.DoubleBuffered := true;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // prüfen ob die linke Maustaste gedrückt wurde
  if ssLeft in Shift then
    begin
      // aktuelle Mausposition merken
      self.lastX := Mouse.CursorPos.X;
      self.lastY := Mouse.CursorPos.Y;
      // Modus wechseln
      self.moving := True;
    end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  // wenn Modus moving aktiv
  if self.moving then
    begin
      // Position des Fensters relativ zu Mauskoordinaten ändern
      self.Left := self.Left + (Mouse.CursorPos.X - lastX);
      self.Top := self.Top + (Mouse.CursorPos.Y - lastY);
      // Merken der neuen Position
      self.lastX := Mouse.CursorPos.X;
      self.lastY := Mouse.CursorPos.Y;
    end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // Wenn Linke Maustaste losgelassen wurde
  if Button = mbLeft then
    begin
      // Modus moving verlassen
      self.moving := false;
    end;
end;

end.

faux 29. Dez 2005 20:03

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
Hallo!

Spezifiziere dein Problem mal. Denn so kann es an hunderten Dingen liegen:
  • anderes Tastaturlayout
  • Syntaxfehler
  • Compiler-Einstellung fehlerhaft
  • Delphi-Trial abgelaufen
  • DLL fehlt
  • etc.

Grüße
Faux

juergen 29. Dez 2005 20:04

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
@ Brainstalker,

Zitat:

Delphi-Quellcode:
 
  private
    { Private-Deklarationen }
    Moving: Boolean // <- hier
    LastX, LastY: Integer; // <- und hier
  public


muss das nicht so deklariert werden?
Delphi-Quellcode:
  private
    { Private-Deklarationen }
  Var
    Moving: Boolean; // <- hier
    LastX, LastY: Integer; // <- und hier
  public
//Jürgen

faux 29. Dez 2005 20:06

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
Zitat:

Zitat von juergen
muss das nicht so deklariert werden?

Nein.

Aber ich sehe gerade, dass ohnehin nach Boolean ein Semikolon fehlt.

Grüße
Faux

phXql 29. Dez 2005 20:06

Re: Ein roter Punkt den man auf dem Desktop verschieben kann
 
Zitat:

Zitat von juergen
@ Brainstalker,

Zitat:

Delphi-Quellcode:
 
  private
    { Private-Deklarationen }
    Moving: Boolean // <- hier
    LastX, LastY: Integer; // <- und hier
  public


muss das nicht so deklariert werden?
Delphi-Quellcode:
  private
    { Private-Deklarationen }
  Var
    Moving: Boolean; // <- hier
    LastX, LastY: Integer; // <- und hier
  public
//Jürgen

nä. Das obere stimmt schon. (Okay, bis auf das fehlende Semikolon)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.
Seite 2 von 3     12 3      

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