![]() |
Variable aus anderem Formular übernehmen
von Matze
Zitat:
Gruß Willie. Wie kann ich erreichen, dass Zitat: Matze zu lesen ist? |
AW: Variable aus anderem Formular übernehmen
Zeig mal deinen Code (nur den betreffenden Teil), sonst kann dir hier keiner helfen.
|
AW: Variable aus anderem Formular übernehmen
Sind die Variablen wirklich im abschnitt "public" der Form1 deklariert?
Gehören die beiden Units für Form1 und Form2 tatsächlich zu deinem Projekt und werden gemeinsam compiliert? Möglicherweise wird bei dir nur die Unit für Form2 übersetzt und greift auf eine veraltete Form1.dcu zu, die diese Variablen noch nicht hat. Gib den Formularen mal vernünftige Namen und versuch es erneut. |
AW: Variable aus anderem Formular übernehmen
Sprichst du die Variablen von Form2 aus auch als Form1.Variable1 an oder nur mit Variable1?
|
AW: Variable aus anderem Formular übernehmen
Unit TelListe_h
Delphi-Quellcode:
Unit TelListe_Zeig
private
{Private-Deklarationen } public TelList: TTelList; Wei: Boolean; PfDateina: string; end; var MainForm: TForm;
Delphi-Quellcode:
MainForm.Wei wird in TelListe_Zeig nicht gefunden.
unit TelListe_Zeig;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, TelListe_h, Vcl.StdCtrls, Edit1, Vcl.ExtCtrls; Gehören zum gleichen Projekt und werden gemeinsam kompiliert. |
AW: Variable aus anderem Formular übernehmen
Zitat:
Hier ist der Fehler: es muss MainForm: TMainForm heißen. Ich hatte im Objekt Inspektor Name Form1 in MainForm geändert. Aber warum hat es vorher mit Form1 auch nicht funktioniert? |
AW: Variable aus anderem Formular übernehmen
Wahrscheinlich stand da auch schon
Delphi-Quellcode:
und nicht
var Form1: TForm
Delphi-Quellcode:
, warum auch immer.
var Form1: TForm1
|
AW: Variable aus anderem Formular übernehmen
Ich mache das immer etwas anders.
Ich referenziere nach Möglichkeit nie die aufrufende Form, wenn es sich vermeiden lässt. Da ich die aufzurufende Form eh in die Uses der aufrufenden Form aufnehmen muss, setze ich auch von dort die Daten.
Delphi-Quellcode:
Bei Umfangreicheren Datenstrukturen übergebe ich nur den Zeiger auf das Objekt oder schreibe mir ein Assign, mache mir also eine Kopie in eine Object, welches als Public in der frmDetails deklariert ist, und verteile die Daten dann im TfrmDetails.OnFormShow.
procedure TMainForm.btnEdit(Sender: TObject);
begin frmDetails.edtName.Text:=BeispielObject.Name; frmDetails.edtAlter.Text:=IntToStr(BeispielObject.Name); if frmDetails.ShowModal=mrOK then begin BeispielObject.Name:=frmDetails.edtName.Text; BeispielObject.Alter:=StrToInt(frmDetails.edtAlter.Text); end; end; So vermeide ich Rückwärtsbeziehungen. Ich bestimme den Zeitpunkt, wann und wie meine Variablen in der aufrufenden Form aktualisiert werden. |
AW: Variable aus anderem Formular übernehmen
Ich mache es noch anders und verpasse dem aufzurufenden Form entsprechende Properties, die ich dann setzen und auslesen kann. Das hat den Vorteil, dass es mir egal ist, wo und in welchen Komponenten die jeweiligen Daten dargestellt werden.
Delphi-Quellcode:
Auf der anderen Seite dann
type
TModalForm = class(TForm) edtName: TEdit; // weitere Komponenten private function GetUserName: string; procedure SetUserName(const Value: string); public property UserName: string read GetUserName write SetUserName; end; ... function TModalForm.GetUserName: string; begin Result := edtName.Text; end; procedure TModalForm.SetUserName(const Value: string); begin edtName.Text := Value; end;
Delphi-Quellcode:
procedure TfrmDingens.EditUsername;
var frm: TModalForm; begin frm := TModalForm.Create(nil); try frm.UserName := Username; if frm.ShowModal = mrOK then Username := frm.UserName; finally frm.Free; end; end; |
AW: Variable aus anderem Formular übernehmen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz