AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Objekt-Eigenschaft mit anderem Objekt verbinden, evtl Zeiger
Thema durchsuchen
Ansicht
Themen-Optionen

Objekt-Eigenschaft mit anderem Objekt verbinden, evtl Zeiger

Ein Thema von jokeBB · begonnen am 17. Apr 2010 · letzter Beitrag vom 17. Apr 2010
Antwort Antwort
jokeBB

Registriert seit: 7. Okt 2009
Ort: Böblingen
10 Beiträge
 
Delphi 2010 Professional
 
#1

Objekt-Eigenschaft mit anderem Objekt verbinden, evtl Zeiger

  Alt 17. Apr 2010, 20:59
Hallo,
wage mich bei einem neuen Programm jetzt erstmalig an OOP. Hat soweit zwar schon gut geklappt, aber jetzt stehe ich grade auf dem Schlauch....

Im Programm gibt es ein komplexes Berechnungsformular. Da ich die Daten an verschiedenen Stellen brauche, habe ich die Speicherung in ein zentrales Datenobjekt ausgelagert (separate Unit), sagen wir mal myData := TCalcData.Create mit (stark vereinfacht)

Delphi-Quellcode:
type TCalcData= class(TObject)
  private
    F_X: Double;
    function getValue: Double;
    procedure setValue(dd: Double);
  public
    property X: Double read getValue write setValue;
end;
Weil ich da recht viele spezielle Eingabefelder mit Text drumrum und bestimmtem Verhalten usw. brauche, habe ich mir auch ein Objekt InputBox, das im Kern ein Editfeld dynamisch generiert, geschrieben, auch ausgelagert in eine andere Unit. Mit wenig Zeilen kann ich mir jetzt viele Eingabefelder erzeugen, also in etwa

Delphi-Quellcode:
inpX := TInputBlock.Create;
inpX.Value := 10;
inpX.ShowBox(...);
Das Box-Objekt schreibt Eingaben auch brav in sein internes Feld. Soweit so gut.

Jetzt meine (Anfänger)frage: wie kann ich erreichen, dass dieses Eingabe-Objekt inpX gleich in myData.X schreibt, natürlich nicht hart, sondern das inpY dann in myData.Y usw. Ich könnte zwar das ganze Objekt myData übergeben, aber dann weiß ich ja noch nicht die richtige Eigenschaft X. Und ich will natürlich nicht nur einmalig den Double-WErt übergeben, sondern jede weitere Änderung soll im myData.X landen. Kann ich dem inpX irgendwie einen Zeiger auf myData.X mitgeben oder so ähnlich? Wie müsste man das definieren, mit Zeigern mache ich sonst gar nichts...

Wäre für Tipps dankbar...
Gruß, jokebb
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Objekt-Eigenschaft mit anderem Objekt verbinden, evtl Ze

  Alt 17. Apr 2010, 21:25
Delphi-Quellcode:
type TInputBlock= class(TObject)
  private
    FData: TCalcData;
    ...
  public
    constructor Create ( AData: TCalcData);
    procedure ShowBox( ...);
    ...
end;
...
constructor TInputBlock.Create ( AData: TCalcData);
begin
    FData := AData;
end;

Delphi-Quellcode:
inpX := TInputBlock.Create( <Datenobjekt>);
inpX.ShowBox(...);
Markus Kinzler
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#3

Re: Objekt-Eigenschaft mit anderem Objekt verbinden, evtl Ze

  Alt 17. Apr 2010, 21:39
Hab gerade kein Delphi da, gebe also keine Garantie für syntaktische Richtigkeit:
Delphi-Quellcode:
type
  TDataName = (X, Y, Z);

  TData = array [TDataName] of Double;

  TCalcData = class
  private
    FData: TData;
  protected
    function GetValue(Name: TDataName): Double;
    procedure SetValue(Name: TDataName; AValue: Double);
  public
    property Value[Name: TDataName]: Double read GetValue write SetValue; default;
  end;

  TInputBlock = class
  private
    FSource: TCalcData;
    FDataName: TDataName;
  protected
    procedure SetValue(Value: Double);
  public
    constructor Create(Source: TCalcData; DataName: TDataName);
  end;

..
  procedure TInputBlock.SetValue(Value: Double);
  begin
    if Value <> FSource[FDataName] then
      FSource[FData] := Value;
  end;
..

  InpX := TInputBlock.Create(MyCalcData, X);
Statt F_X und F_Y also ein Array und ein passender Aufzählungstyp um auf "X" und "Y" zuzugreifen.

Grüsse, Dirk
  Mit Zitat antworten Zitat
jokeBB

Registriert seit: 7. Okt 2009
Ort: Böblingen
10 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Objekt-Eigenschaft mit anderem Objekt verbinden, evtl Ze

  Alt 17. Apr 2010, 22:43
Super, vielen Dank für die schnellen Antworten. Das mit dem Array ist eine gute Idee. Muss noch ein bißchen tüfteln, aber in die Richtung müsste es klappen (dann schließe ich die Frage).
Grüße, jokebb
  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 15:19 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