AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Visible Eigenschaften bei Klassen

Ein Thema von katika90 · begonnen am 15. Feb 2011 · letzter Beitrag vom 15. Feb 2011
Antwort Antwort
katika90

Registriert seit: 11. Dez 2010
16 Beiträge
 
#1

Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 15:44
Hay Community, ich habe eine Frage und zwar:

Wie kann ich innerhalb von Klassen die Visible [true/false] Eigenschaften der Klassen ändern? Die Klasse nennt sich "Punkt" und das Objekt "Punkt1". Der Punkt1 ist im Bild "Image1" und soll dem Mauszeiger folgen. Dies habe ich mit den folgenden Anweisungen erfüllt:

Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Punkt1.setpos(X,Y);
Punkt1.zeigen;
end;

Jetzt habe ich aber das Problem, dass bei jeder Bewegung der Maus ein neuer Punkt erstellt wird und der vorige Punkt nicht gelöscht wird, sodass nach kurzer Zeit ganz viele Punkte auf dem Bild sind.

Wie bekomme ich es hin, dass die alten Punkte bei Mausbewegung weggehen? Wäre es logisch ein neues Attribut einzufügen, wenn ja welches? Von meiner Seite aus würde ich überlegen mit visible zu arbeiten, aber ich wüsste nicht genau wo ich das anwenden sollte ( ich habe ne ahnung)... außerdem meint Delphi wenn ich visible auf die Klasse beziehe, dass es visible nicht gibt. -> muss ich dann im Deklarationsteil noch visible:boolean einfügen?

In meiner Klasse steht die Procedure
Delphi-Quellcode:
constructor Punkt.create(image:TImage);
begin
  self.image1:=image;
  self.image1.canvas.pen.mode:=pmxor;
  self.x:=0;
  self.y:=0;
end;

procedure Punkt.zeichnen;
begin
  self.image1.canvas.ellipse(self.x-10,self.y-10,self.x+10,self.y+10);
end;

//bei der Erstellung der procedure unsichtbar bitte helfen !! :)

Liebe Grüße und Danke im Vorraus
Katika
Katika
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 15:47
Entweder die Originalfarben an den Stellen wegsichern oder einfach Bild neu Laden/Malen(Hintergrund)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 15:51
Da du ja mit dem Modus pmXOR arbeitest, musst du einfach nur VOR dem ändern der Position noch einmal zeichnen, damit wieder das ursprüngliche Bild zu sehen ist

PS: Du musst nicht immer Self vor eigene Variablen schreiben, denen man übrigens i.d.R. gerne ein "F" voranstellt, also z.B. so: FImage
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
katika90

Registriert seit: 11. Dez 2010
16 Beiträge
 
#4

AW: Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 16:14
Da du ja mit dem Modus pmXOR arbeitest, musst du einfach nur VOR dem ändern der Position noch einmal zeichnen, damit wieder das ursprüngliche Bild zu sehen ist
Erstmal danke fürs schnelle beantworten, meinst du das so?

Delphi-Quellcode:

// in der Klasse KPunkt
procedure KPunkt.zeichnen;
begin
  self.image1.canvas.pen.mode:=pmxor;
  self.image1.canvas.ellipse(self.x-5,self.y-5,self.x+5,self.y+5);
end;
oder so?

Delphi-Quellcode:

// in der Unit1
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  KPunkt.image1.canvas.pen.mode:=pmxor;
  Punkt1.setpos(X,Y);
  Punkt1.zeigen;
end;
oder noch anders?

Also:
Die erste Variante bringt garnix und die zweite variante geht nicht weil ich das nicht hinbekomme delphi zu sagen dass das image1 in der Klasse KPunkt schon definiert ist... Delphi findet es zumindest nicht....
Katika
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 16:16
Ganz anders. Du sollst die Funktion "zeichnen" in der Funktion "setpos" aufrufen, bevor du die Koordinaten änderst. Außerdem könntest du es auch noch mal danach aufrufen, dann muss das nicht in MouseMove gemacht werden.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
katika90

Registriert seit: 11. Dez 2010
16 Beiträge
 
#6

AW: Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 16:29
Danke jetzt klappt's ... leider habe ich jetzt noch einen Punkt bei ungefähr P(0,0).
Wie bekomme ich den weg?
Katika
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 16:37
Danke jetzt klappt's ... leider habe ich jetzt noch einen Punkt bei ungefähr P(0,0).
Wie bekomme ich den weg?
Mit TippEx
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
katika90

Registriert seit: 11. Dez 2010
16 Beiträge
 
#8

AW: Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 16:39
Danke jetzt klappt's ... leider habe ich jetzt noch einen Punkt bei ungefähr P(0,0).
Wie bekomme ich den weg?
Mit TippEx
ok und wie sage ich das dem PC?
Katika
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 16:48
Vermutlich kommt der Punkt ja von Deiner Zeichenroutine, also musst Du wieder an diesen Punkt gehen und ihn übermalen wie bereits beschrieben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#10

AW: Visible Eigenschaften bei Klassen

  Alt 15. Feb 2011, 17:25
leider habe ich jetzt noch einen Punkt bei ungefähr P(0,0).
Na ... kommste nicht selber drauf?
Der kommt, wenn du das erste mal die Position zuweist: Du versuchst den alten Punkt zu löschen, aber es gibt ja noch gar keinen alten Punkt.

Es gibt aber noch weitere Probleme: Wenn das Fenster neu gezeichnet wird, gibt es auch keinen alten Punkt mehr und ein neuer wird auch nicht gezeichnet, solange man die Maus nicht bewegt, da du ja nur in diesem Ereignis zeichnest
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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