![]() |
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! |
Re: Variablen übergeben
Hallo,
globale Variable ist das Stichwort. Definiere eine neue Unit uVars
Delphi-Quellcode:
Die bindest du in beide Forms ein
unit uVars;
var iXXX: Integer; sXXX: String; interface implementation end; und benutzt sie. D.h. du hast nur eine Variable. Heiko |
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 |
Re: Variablen übergeben
Du könntest einfach eine globale Variable, die überall im ganzen Programm zu erreichen ist, deklarieren, nämlich so
Delphi-Quellcode:
oder du machst dir eine Variable in Form1 rein:
...
var Form1: TForm1; meineGlobaleVariable: String; implementation ...
Delphi-Quellcode:
Zum Verwenden kannst du dann in dem ButtonClick Ereignis in Form2 einfach sowas machen
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject); private { Private-Deklarationen} public meineVariable: String; end;
Delphi-Quellcode:
//Beipsiel 1
meineGlobaleVariable := 'abc'; //Beispiel 2 Form1.meineVariable := 'abc'; |
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; |
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. |
Re: Variablen übergeben
Zitat:
So ist es besser: ![]() |
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 =)
|
Re: Variablen übergeben
Oder man lernt es besser gleich richtig.
|
Re: Variablen übergeben
Dafür bin ich ja auch, aber das Stichwort ist "Basics". =)
|
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:
Form2--->
procedure TForm1.Timer1Timer(Sender: TObject);
begin Label1.Caption:=FormatDateTime(AB,Now); end;
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. |
Re: Variablen übergeben
Du hast AB doppelt deklariert.
Nimm AB mal aus den GLOBALEN Variablen (Var) heraus Dann Form2, Button1: Form1.AB := Edit1.Text; |
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:
naja irgendwas hab ich vergessen
procedure TForm2.Button1Click(Sender: TObject);
Var AB:TForm1; begin AB:=TForm1.Create(nil); AB:=Edit1.Text; end; so siehts beim link aus! aber ich weiss nich was der meint mit MeinText
Delphi-Quellcode:
und was ich solnst noch brauche
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; hoffe ihr könnt mir auch da helfen. |
Re: Variablen übergeben
Properties siehe
![]() |
Re: Variablen übergeben
ok danke geht jetzt!
VIELEN VIELEN DANK! Michel habs jetzt so wie du gesagt hast GEHT! |
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