Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Variablen übergeben (https://www.delphipraxis.net/144374-variablen-uebergeben.html)

jonsen2.0.0.9 6. Dez 2009 13:25


Variablen übergeben
 
Hallo,

ich schreibe gerade ein programm bei dem ich 2 forms habe.

allerdings möchte ich wenn man auf form2 einen button klick, das ein bestimmter wert(Form2.Edit1.text) übergeben wird an Form 1 und dort dann eine Vaiable dieses als wert annimmt.


Also kurz:

Form1 und Form2

in Form2 wirt ein wert mit hilfe eines buttons und eines editfeldes ermittelt (ein format für die zeit),

dieses format soll an eine globale variable der unit1 übergeben werden.

sorry noch kein code vorhanden der helfen könnte!

hoika 6. Dez 2009 13:36

Re: Variablen übergeben
 
Hallo,

globale Variable ist das Stichwort.

Definiere eine neue Unit uVars

Delphi-Quellcode:
unit uVars;

var
  iXXX: Integer;
  sXXX: String;

interface

implementation

end;
Die bindest du in beide Forms ein
und benutzt sie.

D.h. du hast nur eine Variable.



Heiko

Jens Hartmann 6. Dez 2009 13:36

Re: Variablen übergeben
 
Hallo,

der richtige Weg, wären so glaube ich zumindesten probertys. Die Frage ist halt, was du damit in der zweiten Form machen willst. Du kannst das ganze auch z.B. als Sender an eine Funktion in der anderen Form übergeben.

Die Frage wäre halt, was Du damit machen willst.

[EDIT] Das mit dem Unit uVars wäre natürlich auch eine Möglichkeit.
MFG

Jens

fui-tak 6. Dez 2009 13:55

Re: Variablen übergeben
 
Du könntest einfach eine globale Variable, die überall im ganzen Programm zu erreichen ist, deklarieren, nämlich so
Delphi-Quellcode:
...
var
  Form1: TForm1;
  meineGlobaleVariable: String;

implementation
...
oder du machst dir eine Variable in Form1 rein:
Delphi-Quellcode:
TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen}
  public
    meineVariable: String;
  end;
Zum Verwenden kannst du dann in dem ButtonClick Ereignis in Form2 einfach sowas machen
Delphi-Quellcode:
//Beipsiel 1
meineGlobaleVariable := 'abc';

//Beispiel 2
Form1.meineVariable := 'abc';

Micha88 6. Dez 2009 14:09

Re: Variablen übergeben
 
oder, wenn es viele zusammengehörige Variablen sind so:

Delphi-Quellcode:
type TmyRecord packed record
 myVar1: String;
 myVar2: String;
end;

// var
var
 //Form1: TForm1;
 mySpecialVars: TmyRecord;

// procedure button ..
begin
 mySpecialVars.myVar1 := 'abc';
 mySpecialVars.myVar2 := 'def';
end;

himitsu 6. Dez 2009 14:32

Re: Variablen übergeben
 
Nimm Unit1 (Form1) in die Uses der Unit2 (Form2) auf ... und zwar im Implementation-Abschnitt,
dann kannst du auf die Form1 zugreifen und kannst dort die Werte übergeben.

Oder in Form1 greifst du auf Form2 zu und holst dort die Werte ab.

Jenachdem wie die Forms angezeigt werden.

Luckie 6. Dez 2009 14:38

Re: Variablen übergeben
 
Zitat:

Zitat von hoika
globale Variable ist das Stichwort.

Autsch. Aber leider das falsche.

So ist es besser: http://www.michael-puff.de/Developer...tauschen.shtml

Micha88 6. Dez 2009 14:40

Re: Variablen übergeben
 
Ich dneke, wenn man nicht weis, wie man eine for-schleife bedient, Variablen übrgibt usw, dann sollte man um propertys einen Bogen machen =)

Luckie 6. Dez 2009 14:41

Re: Variablen übergeben
 
Oder man lernt es besser gleich richtig.

Micha88 6. Dez 2009 14:42

Re: Variablen übergeben
 
Dafür bin ich ja auch, aber das Stichwort ist "Basics". =)

jonsen2.0.0.9 6. Dez 2009 14:49

Re: Variablen übergeben
 
nagut ich hab jetzt mal alles durchprobiert...aber nichts klappt.

Also:

in das edit feld in form2 soll man ein muster eingeben wie die uhrzeit dann formatiert werden soll (z.B. hh:nn:ss)

dann soll eine Variable diesen wert annehmen (z.B. hh:nn:ss) und dieses wird dann mit einem Timer ausgeführt und so die uhrzeit angezeigt:

Form1--->
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CheckLst, Menus, ExtCtrls, ShellAPI, unit2;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Musik1: TMenuItem;
    Video1: TMenuItem;
    Spiele1: TMenuItem;
    Anderes1: TMenuItem;
    CheckListBox1: TCheckListBox;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    Label2: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Optionen1: TMenuItem;
    ime1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ime1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    AB: String;
  end;

var
  Form1: TForm1;
   sDir:String;
   AB:string;
implementation

{$R *.dfm}


Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=FormatDateTime(AB,Now);
end;
Form2--->
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}


procedure TForm2.Button1Click(Sender: TObject);
begin
 AB:=Edit1.Text;
end;

end.

Micha88 6. Dez 2009 14:57

Re: Variablen übergeben
 
Du hast AB doppelt deklariert.

Nimm AB mal aus den GLOBALEN Variablen (Var) heraus

Dann Form2, Button1:

Form1.AB := Edit1.Text;

jonsen2.0.0.9 6. Dez 2009 14:57

Re: Variablen übergeben
 
ok aus dem link werde ich nich ganz schlau.

hab jetzt ma probiert aber der meckert: [Fehler] Unit2.pas(39): Inkompatible Typen: 'TForm2' und 'TCaption'
naja weiss halt nich genau wie das gehen soll.

so siehts bis jetzt aus:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
Var AB:TForm1;
begin
AB:=TForm1.Create(nil);
AB:=Edit1.Text;
end;
naja irgendwas hab ich vergessen
so siehts beim link aus! aber ich weiss nich was der meint mit MeinText

Delphi-Quellcode:
uses
  Unit2;

procedure TForm1.Button1Click(Sender: TObject);
var
  ZweiteForm: TForm2;
begin
  ZweiteForm := TForm2.Create(nil);
  try
    ZweiteForm.MeinText := 'Dieser Text kommt aus Form1';       \\<-----------aber ich weiss nich was der meint mit MeinText
    ZweiteForm.ShowModal;
  finally
    ZweiteForm.Free;
  end;
end;
und was ich solnst noch brauche
hoffe ihr könnt mir auch da helfen.

Micha88 6. Dez 2009 14:59

Re: Variablen übergeben
 
Properties siehe hier

jonsen2.0.0.9 6. Dez 2009 15:00

Re: Variablen übergeben
 
ok danke geht jetzt!

VIELEN VIELEN DANK!

Michel habs jetzt so wie du gesagt hast GEHT!

Micha88 6. Dez 2009 15:35

Re: Variablen übergeben
 
Zu meiner Lösung ist zu sagen:

Wenn du ein Programm mit VIELEN Variablen machst, und 20 dieser Variablen gehören zu "EINEM Gebiet", so fast man diese als record zusammen.

Ich verwende soetwas z.B. in meinem MovieManagement Programm,
ich lege alle Film-Bezogenen Variablen (Name, Titel, Länge usw..) in eine, Record ab.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.

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