Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi objectreferenz austauschen ohne globale variablen!!!! (https://www.delphipraxis.net/57226-objectreferenz-austauschen-ohne-globale-variablen.html)

Jens Schumann 17. Nov 2005 15:56

Re: objectreferenz austauschen ohne globale variablen!!!!
 
Zitat:

Zitat von richard_boderich
... das problem ist das die zweite procedure eine standard onclick procedure eines vcl controls ist ...

Das hört sich eher nach einem Designproblem an. Ich vermute mal, Du hast den Code direkt in den OnClick-Handler des Controls geschrieben. Das habe ich anfangs auch öfter gemacht. Dabei bin auf die gleichen Probleme gestoßen wie Du.

Ich habe mir jetzt angewöhnt in Eventhandlern nur noch Methoden aufzurufen. Dann verschwinden solche Probleme.

Garby 17. Nov 2005 15:56

Re: objectreferenz austauschen ohne globale variablen!!!!
 
Ok, Ok ich hab das VCL Control gemeint.

Also steht das VCL Control in irgendeiner Beziehung zu dem Objekt oder nicht?
Deine Angaben sind etwas vage...
Kannst du das Objekt nicht in der procedure 2 erst erstellen?

richard_boderich 17. Nov 2005 16:07

Re: objectreferenz austauschen ohne globale variablen!!!!
 
@garbi

nein kann ich leider nicht. ich denke mal das ich klar gesagt habe was ich will. bitte lies nochmal genau nach. die 2 procedure ist eine ereignisprocedure.
in dieser procedure muss ich auf ein anderes object referenzieren.

Gruß richard

richard_boderich 17. Nov 2005 16:17

Re: objectreferenz austauschen ohne globale variablen!!!!
 
@ jens schumann

ja der code steht im onclick eines actionmenuelements

Jens Schumann 17. Nov 2005 16:20

Re: objectreferenz austauschen ohne globale variablen!!!!
 
Zitat:

Zitat von richard_boderich
@ jens schumann

ja der code steht im onclick eines actionmenuelements

Siehste - das ist das Problem.
Lagere den Code in eine eigene Methode aus. Dieser Methode kannst Du dann als Paramter die Objektreferenz übergeben.
Im OnClick Event steht dann nur noch der Methoden Aufruf.

richard_boderich 17. Nov 2005 16:42

Re: objectreferenz austauschen ohne globale variablen!!!!
 
@ jens schumann ,diese uebergabe ist ja das eigentliche problemob ich den code als methode auslagere oder nicht, spielt doch dabei ueberhaupt keine rolle?
ich verstehe nich wie du das meinst bzw was mir das bringt. die referenz musss ich trotzdem uebergeben. wobei wir wieder bei meiner ursprungsfrage sind?

Gruß richard

Jens Schumann 17. Nov 2005 16:56

Re: objectreferenz austauschen ohne globale variablen!!!!
 
Hallo,
ungefähr so
Delphi-Quellcode:
Type

  TMyForm = class(TForm)
  private
    FRefObject : TObject;
  ...
  end;

procedure TMyForm.CreateRefObject;
begin
  If Not Assinged(FRefObject) then
    FRefObject:=TOBject.Create;
end;

procedure TMyForm.DoSomething(aRefObject : TObject);
begin
  If Assinged(FRefObject) then
    MachWas
end;

procedure TMyForm.XYZClick(Sender : TObject);
begin
  CreateRefObject;
  DoSomething(FRefObject );
end;

richard_boderich 17. Nov 2005 17:58

Re: objectreferenz austauschen ohne globale variablen!!!!
 
ok jens jetz weis ich was du meinst ;)

ich wuerd noch folgendes ergaenzen?

Delphi-Quellcode:
Type

  TMyForm = class(TForm)
  private
    FRefObject : TObject;
  ...
  end;

procedure TMyForm.CreateRefObject;
begin
  If Not Assinged(FRefObject) then
    FRefObject:=TOBject.Create;
end;

procedure TMyForm.DoSomething(aRefObject : TObject);
begin
  If Assinged(FRefObject) then
    MachWas
end;

procedure TMyForm.XYZClick(Sender : TObject);
begin
  CreateRefObject;
  DoSomething(FRefObject );
  frefobject.free                    // um das übergabe object wieder nach benutzung freizugeben?? oder macht er das automatisch?
end;

Khabarakh 17. Nov 2005 18:12

Re: objectreferenz austauschen ohne globale variablen!!!!
 
[gelöscht]


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.
Seite 2 von 2     12   

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