Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi mit 1. Form auf 2. Form zugreifen (https://www.delphipraxis.net/126135-mit-1-form-auf-2-form-zugreifen.html)

mkinzler 18. Dez 2008 19:56

Re: mit 1. Form auf 2. Form zugreifen
 
Für was, eine Variable im Interface, öffentlicher Formmember oder property?

taaktaak 18. Dez 2008 19:58

Re: mit 1. Form auf 2. Form zugreifen
 
Delphi-Quellcode:
private
  FIrgendwas : Integer;
public
  property Irgendwas : Integer read FIrgendwas write FIrgendwas;
end;

implementation

//..

FIrgendwas:=99;

//..
Nun kannst du im Form2 auf Form1.Irgendwas zugreifen!

Chemiker 18. Dez 2008 20:08

Re: mit 1. Form auf 2. Form zugreifen
 
Hallo Affemitwaffe93,

oder so:

z.B.:

Form2 – Aufrufen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  sTestString: String;
begin
  sTestString:= 'Aufruf ';
  TForm2.GetData1 (sTestString);
  ShowMessage('Das ist ein TestString: '+sTestString);
end;
In Form2 deklarieren:

Delphi-Quellcode:
public
    { Public-Deklarationen }
      class function GetData1 (var sString: String): Boolean;



implementation

class function TForm2.GetData1 (var sString: String): Boolean;
begin
  with TForm2.Create(nil) do
    try
      Result := ShowModal=mrok; // ModalResult auf mrOk im OI einstellen
      if Result then
      begin
        sString:= sString+ 'Das ist ein Test';
      end;
      finally
       free;                
   end;
end;
Edit: end; nachgereicht

Bis bald Chemiker

taaktaak 18. Dez 2008 20:12

Re: mit 1. Form auf 2. Form zugreifen
 
Delphi-Quellcode:
if Result then
      begin
        sString:= sString+ 'Das ist ein Test';
      finally
       free;                
   end;
Hmm, sind begin und end da richtig gesetzt?
Schaut irgendwie komisch aus?

Chemiker 18. Dez 2008 20:19

Re: mit 1. Form auf 2. Form zugreifen
 
Hallo taaktaak,

Zitat:

Zitat von taaktaak
Schaut irgendwie komisch aus?

habe den Quellcode verbessert, ich hoffe er ist jetzt richtig.

Bis bald Chemiker

taaktaak 18. Dez 2008 20:33

Re: mit 1. Form auf 2. Form zugreifen
 
Hallo Chemiker,
bin kein Erbsenzähler, aber bevor es einen Einsteiger verwirrt...
:hi:

Affemitwaffe93 19. Dez 2008 10:50

Re: mit 1. Form auf 2. Form zugreifen
 
irgendwie sieht das von Taaktaak einfacher aus ^^

Delphi-Quellcode:
property Irgendwas : Integer read FIrgendwas write FIrgendwas;
das brauch ich alles oder ???

und dann hald nur die variable auf meinen Namen ändern ^^

taaktaak 19. Dez 2008 10:53

Re: mit 1. Form auf 2. Form zugreifen
 
JEIN, "write ..." wird nur benötigt, wenn du den Wert von ausserhalb auch ändern möchtest. Aber in jedem Fall - das ist insgesamt nur eine Möglichkeit von mehreren, so etwas zu realisieren.

Affemitwaffe93 19. Dez 2008 10:56

Re: mit 1. Form auf 2. Form zugreifen
 
ahhh ok ... ja will ich ^^

also nochmal vielen dank^^

taaktaak 19. Dez 2008 11:30

Re: mit 1. Form auf 2. Form zugreifen
 
Vielleicht noch mal etwas weiter erklärt. Mein Beispiel ist eigentlich noch nicht sehr sinnvoll. Gleiches wäre erreicht, wenn du die Variable einfach nur als public deklarierst:
Delphi-Quellcode:
private
  public
    Irgendwas : Integer;
end;

implementation

//..

Irgendwas:=99;

//..
So richtig sinnvoll sind Properties m.E. erst, wenn der Zugriff über Getter/Setter-Methoden erfolgt. Beispiel:

Delphi-Quellcode:
  private
  FIrgendwas : Integer;
  procedure SetIrgendwas(NeuerWert:Integer)
  function GetIrgendwas:Integer;
public
  property Irgendwas : Integer read GetIrgendwas write SetIrgendwas;
end;

implementation

//..

procedure T~~.SetIrgendwas(NeuerWert:Integer);
begin
  if NeuerWert>0 then FIrgendwas:=NeuerWert;
  ShowMessage('FIrgendwas wurde verändert')
end;

function T~~.GetIrgendwas:Integer;
begin
  Result:=FIrgendwas;
  ShowMessage('FIrgendwas wurde gelesen')
end;

//..
Damit erhälts du interessante Möglichkeiten; du kannst z.B. den neuen Wert prüfen und eine Änderung nur unter bestimmten Bedingungen zulassen. Ausserdem sind lesende und schreibende Zugriffe auf die interne Variable jetzt quasi zu einem Event geworden auf das du unit-intern reagieren kannst (das ShowMessage() ist hier nur ein Platzhalter). Denkbar ist z.B., daß nach einer Änderung des Wertes von aussen, die Unit eine Anzeige aktualisiert - das wär ohne den Setter schon schwieriger zu realisieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz