AGB  ·  Datenschutz  ·  Impressum  







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

Zuweisung property Delphi 2010

Ein Thema von Thorben86 · begonnen am 18. Mär 2010 · letzter Beitrag vom 19. Mär 2010
Antwort Antwort
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#1

Zuweisung property Delphi 2010

  Alt 18. Mär 2010, 23:00
Hi, ich hab hier ein kleines Problem mit D2010 und einer Property.
Und zwar hab ich hier ne Komponente wo TDragObject aus der Controls-Unit verwendet wird.

DragObject.DragPos ist ein TPoint. Jetzt würde ich das gerne zuweisen, aber habe hier schon gelesen, dass das mit D2010 nicht mehr so geht. Nur wie kann ich dem jetzt was zuweisen? Kann ja schließlich nicht die vorgefertigten Units umschreiben..

Delphi-Quellcode:
procedure TCustomElTree.StartDragTransfer(Sender : TObject; var DragObject : TDragObject);
{ Transfers FView OnStartDrag event to the outside world. }
begin
{$IFDEF VCL_4_USED}
  if DragObject <> nil then
  with DragObject.DragPos do
 begin
    y := y + FView.Top;
    X := X + FView.Left;
  end;
...
Hoffe mir kann hier wer helfen?
Gibts eigentlich irgendwo en gutet Tutorial, was man bei den ganzen Änderungen in D2010 beachten/ändern muss?

Viele Grüße
Thorben
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Zuweisung property Delphi 2010

  Alt 18. Mär 2010, 23:41
Ich wüsste jetzt spontan keinen Grund, wieso sich in D2010 eine Property nicht beschreiben lassen sollte, sein denn, die Property wäre ReadOnly. Das wäre aber kein "Problem" von D2010 sondern die "Eigenschaft" der Property, die sich auch mit z.B. D7 nicht beschreiben ließe.

Lasse mich aber gern eines Besseren belehren.
Sollte der Unterschied von D2009 zu D2010 doch so heftig sein?? Kann ich kaum glauben.

Wobei sich mir auch die Frage stellt, wieso man im DragStart die Start-Position ändern muss?
Aber du wirst bestimmt Gründe dafür haben ...

Was sagt denn der Compiler dazu?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#3

Re: Zuweisung property Delphi 2010

  Alt 18. Mär 2010, 23:47
Delphi 2010 meckert jetzt endlich mal, wenn man sowas versucht, denn früher war es zwar möglich, aber nicht wirklich.

Gab vor 'ner Weile auch einen Thread dazu.

.DragPos ließt wirklich das Property (TPoint) aus, aber X und Y würden nur innerhalb des ausgelesenen Wertes geändert und nicht innerhalb der Komponente

Delphi-Quellcode:
with DragObject.DragPos do
begin
  y := y + FView.Top;
  X := X + FView.Left;
end;
ergibt intern
Delphi-Quellcode:
with DragObject.GetDragPos do
begin
  y := y + FView.Top;
  X := X + FView.Left;
end;
Delphi-Quellcode:
temp := DragObject.GetDragPos;
temp.Y := temp.Y + FView.Top;
temp.X := temp.X + FView.Left;
Und nun fällt vielleicht auch auf, warum sowas nun nicht mehr zugelassen wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Zuweisung property Delphi 2010

  Alt 18. Mär 2010, 23:58
Aha. Kling sinnig. Gut zu wissen.

Wäre dann die Lösung width nicht zu verwenden?


Also so:
Delphi-Quellcode:
procedure TCustomElTree.StartDragTransfer(Sender : TObject; var DragObject : TDragObject);
{ Transfers FView OnStartDrag event to the outside world. }
begin
    DragObject.DragPos.y := DragObject.DragPos.y + FView.Top;
    DragObject.DragPos.X := DragObject.DragPos.X + FView.Left;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#5

Re: Zuweisung property Delphi 2010

  Alt 19. Mär 2010, 05:33
Zitat von gmc616:
Wäre dann die Lösung width nicht zu verwenden?
genau

im Prinzip gibt es diese Möglichkeiten:
Delphi-Quellcode:
var V: TPoint;

V := DragObject.DragPos;
V.Y := V.Y + FView.Top;
V.X := V.X + FView.Left;
DragObject.DragPos := V;
Delphi-Quellcode:
var V: TPoint;

V := DragObject.DragPos;
DragObject.DragPos := Point(V.X + FView.Left, V.Y + FView.Top);
[delphi]DragObject.DragPos := Point(DragObject.DragPos.X + FView.Left,
DragObject.DragPos.Y + FView.Top);/delphi]
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Zuweisung property Delphi 2010

  Alt 19. Mär 2010, 07:01
Ein wenig aufpassen muss man hier allerdings, weil wenn hinter der Property kein Record (=Wertetyp) sondern eine Klasse (=Referenztyp) steht, DANN ginge was du zu Anfang gemacht hast sehr wohl. Bei Klassen wird nämlich keine Kopie der Werte, sondern eine Referenz auf exakt die anhängige Instanz zurückgegeben. Die Variante für Records tut dann zwar auch, ist aber an sich zu viel gemacht. Wenn man nicht weiss was sich hinter einer Property genau verbirgt, wäre das also erstmal der sichrere Weg.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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:54 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