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 Objekt kopieren (https://www.delphipraxis.net/29529-objekt-kopieren.html)

Tanadirian 10. Sep 2004 12:31


Objekt kopieren
 
Ich habe mehrere Images und eine Paintbox und will das man beim Drag&Drop statt des Mauszeigers das gezogene Image sieht. Deshalb erstelle ich ein neues Image dem ich das Picture des angeklickten Pictures zuweise und will es dann mit der Maus bewegen.
Hier der Code um das neue Image zu erstellen:

Delphi-Quellcode:
procedure TForm1.ImageXMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var ImageXCopy:TImage;
begin
ImageXCopy:=TImage.Create(TImage(Sender));
ImageXCopy.Left:=x;
ImageXCopy.Top:=y;
ImageXCopy.Picture.Assign(TImage(Sender).Picture);
ImageXCopy.BringToFront;
end;
Aber das neue Image wird nicht angezeigt. Woran könnte es liegen? Ich habe bisher noch nie Objekte kopiert.

mfG Tanadirian

Bitworm 10. Sep 2004 12:39

Re: Objekt kopieren
 
Hi !

So wie ich das sehe ist Parent nicht gesetzt. Füge mal

Code:
ImageXCopy.Parent := TImage(Sender).Parent;
ein. Damit sollte es dann klappen (nicht getestet, aus dem Bauch raus).

Tanadirian 10. Sep 2004 13:18

Re: Objekt kopieren
 
Jo, jetzt gehts, dankeschön!

mfG Tanadirian

Luckie 10. Sep 2004 13:23

Re: Objekt kopieren
 
Wichtig zum Verständnis: Der Owner ist für den Speicher verantwortlich und der Parent für das Zeichnen. ;)

Tanadirian 10. Sep 2004 13:45

Re: Objekt kopieren
 
Ah :idea: gut zu wissen.
Jetzt hab ich auch gleich das nächste prob, ich will dem neuen Image eine Ereignissprozedur zuweisen

Delphi-Quellcode:
ImageXCopy.OnMouseMove:=TForm1.ImageXMouseMove(TImage(Sender), ssLeft ,TImage(Sender).Left,TImage(Sender).Top);
aber bei ssLeft bekomme ich die Fehlermeldung:
"Inkompatible Typen: 'TShiftState' und 'Enumeration'" wieso das? ssLeft ist doch ein mgl Wert von TShiftState.

Gruber_Hans_12345 10. Sep 2004 13:46

Re: Objekt kopieren
 
probier

Delphi-Quellcode:
ImageXCopy.OnMouseMove:=TForm1.ImageXMouseMove(TImage(Sender), [ssLeft] ,TImage(Sender).Left,TImage(Sender).Top);

Tanadirian 10. Sep 2004 13:51

Re: Objekt kopieren
 
Danke, jetzt bekomme ich aber die Meldung " Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt"

scp 10. Sep 2004 14:05

Re: Objekt kopieren
 
Warum gibts du bei der Zuweisung Parameter an und noch TForm1.? Normalerweise sollte es doch so aussehen:
Delphi-Quellcode:
ImageXCopy.OnMouseMove := ImageXMouseMove;

Tanadirian 10. Sep 2004 14:34

Re: Objekt kopieren
 
Mhh, jetzt gehts, ich dachte man müsste wie bei einer Funktion die Parameter mit übergeben und ohne Form1 hat er gemeckert!

Dankeschön

mfg Tanadirian


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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