Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi wie kann ich einem objekt ein z.b. ein label zuweisen (https://www.delphipraxis.net/10257-wie-kann-ich-einem-objekt-ein-z-b-ein-label-zuweisen.html)

zopf 14. Okt 2003 19:43


wie kann ich einem objekt ein z.b. ein label zuweisen
 
wer kann mir auf die sprünge helfen?
ich möchte für ein programm objekte deklarieren, da ich mehrer gleiche instanzen davon benötige.
die einzelnen objekte sollen daten verarbeiten und dann an bestimmten stellen auf meiner form
ausgeben (TLabel).
wie kann ich jeder instanz ein bestimmtes TLabel zuweisen, welches ich bereits zur entwurfszeit auf
die form gelegt habe?
also nach dem motto:

Delphi-Quellcode:
  procedure form1.create;
  begin
     meinObjekt1.create;
     meinObjekt1.ini(label1);
     ....
  end;
das objekt soll bei ini(...) das Label1 als ausgabeort übergeben bekommen und weiss fortan,
wo es einen bestimmten string ausgibt (nämlich immer in Label1).

vielen dank im voraus, chris (zopf)!

[edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit]

Christian Seehase 14. Okt 2003 19:50

Re: wie kann ich einem objekt ein z.b. ein label zuweisen
 
Moin Chris,

wenn ich davon ausgehe, dass beim Erzeugen des Objektes schon klar ist, wohin es seine Daten ausgeben soll, kannst Du es ja schon im Konstruktor als Parameter übergeben, und dann in einen privaten Feld des Objektes speichern.

OLLI_T 14. Okt 2003 20:19

Re: wie kann ich einem objekt ein z.b. ein label zuweisen
 
HY Zopf!

Vielleicht kannst Du Dir Tag Properties Deiner Labels zunutze machen? Ich ziehe auf diese Weise Daten aus Stored Procedures auf Formulare. Wenn Du Deine Objekte in einem Array ablegst, kannst Du eventuell hiermit was anfangen:

Delphi-Quellcode:
 
Var i:Integer; Lbl:TLabel;
For i:=0 To ComponentCount-1 Do Begin
    If Components[i] is TLabel Then Begin
      Lbl:=TLabel(Components[i]);
      ObjectArray[Lbl.Tag].Label:=Lbl;
    End;
  End;
Viel Erfolg!

OLLI

zopf 15. Okt 2003 05:17

Re: wie kann ich einem objekt ein z.b. ein label zuweisen
 
hi olly, hi christian,
vielen dank erstmal für eure antworten!
ja christian, bei programmstart ist klar, wohin die daten sollen.
will im constructor auch das entsprechende label übergeben, bekomme jedoch
immer eine fehlermeldung.
hier mein code, vielleicht könnt ihr mir sagen, was ich falsch gemacht habe:

Delphi-Quellcode:
//das steht in einer eigenen unit
   INTERFACE

   type TTest = class(TObject)
      private
         FAnzeige:TLabel;
      public
         constructor create(Alabel:TLabel);
         //...
         procedure zeig;
   end;

   IMPLEMTATION

      constructor TTest.create(ALabel:TLabel);
      begin
        inherited create;
        FAnzeige:=ALabel; //diese übergabe funzt nicht...warum?
      end;

      procedure TTest.zeig;
      begin
         FAnzeige.Caption:='bla...bla';
      end;
...........................................................
// im hauptprogramm dann...

IMPLEMENTATION
  USES ...; //die Unit mit der Klassendeklaration

  var
    myTest:TTest;

  procedure myForm.create;
  begin
    myTest.create(Label1); //label1 zur entwurfszeit auf die form gelegt
    // an der stelle fehlermeldung
    ...
  end;
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künfig selber machen. Danke. Mfg, Christian Seehase[/edit]

Christian Seehase 15. Okt 2003 10:41

Re: wie kann ich einem objekt ein z.b. ein label zuweisen
 
Moin Chris,

der Fehler kommt daher, dass Du das Objekt falsch erzeugst.
Es muss heissen:

Delphi-Quellcode:
MyTest := TTest.Create(Label1);
MyTest ist eine Variable vom Typ TTest, und mit TTest.Create(...) wird ein Objekt der Klasse TTest erzeugt, und der Zeiger auf dieses Objekt wird dann der Variablen übergeben.

zopf 15. Okt 2003 16:55

Re: wie kann ich einem objekt ein z.b. ein label zuweisen
 
hi christian,
natürlich, du hast recht, manchmal macht man so blöde fehler und ist blind wie ein maulwurf.
ich danke dir, für deine mühe. bis zum nächsten mal, herzlichst, chris! (zopf)

p.s. falls du mal auf meine hp gehen willst hier der link: www.chris-hertzsch.de


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