AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Variable aus anderem Formular übernehmen

Ein Thema von Willie1 · begonnen am 17. Jun 2020 · letzter Beitrag vom 19. Jun 2020
Antwort Antwort
Seite 1 von 2  1 2   
Willie1

Registriert seit: 28. Mai 2008
618 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Variable aus anderem Formular übernehmen

  Alt 17. Jun 2020, 11:29
von Matze
Zitat:
Re: Variable einer anderen Form übergeben!
Alt 2. Mär 2005, 16:06
Die Variable in Form1 global deklarieren (z.B. unter public).

Im Form2 bei den uses Unit1 eintragen und du kannst mittels

Variable := Form1.x; darauf zugreifen oder ohne vorangestelltes "Form1", wenn die Variable in Form1 da deklariert ist, wo "Form1: TForm1;" steht.

Aber das hatten wir schon des öfteren.
Hallo, ich bin genauso vorgegangen. Sie wird in Form2 nicht erkannt. Form1 schon aber keine Variablen aus Form1 unter public.
Gruß Willie.

Wie kann ich erreichen, dass Zitat: Matze zu lesen ist?
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
664 Beiträge
 
Delphi 12 Athens
 
#2

AW: Variable aus anderem Formular übernehmen

  Alt 17. Jun 2020, 12:28
Zeig mal deinen Code (nur den betreffenden Teil), sonst kann dir hier keiner helfen.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Variable aus anderem Formular übernehmen

  Alt 17. Jun 2020, 16:02
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.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Variable aus anderem Formular übernehmen

  Alt 17. Jun 2020, 17:24
Sprichst du die Variablen von Form2 aus auch als Form1.Variable1 an oder nur mit Variable1?
Ralph
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
618 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Variable aus anderem Formular übernehmen

  Alt 17. Jun 2020, 17:29
Unit TelListe_h
Delphi-Quellcode:
  private
    {Private-Deklarationen }
  public
    TelList: TTelList;
    Wei: Boolean;
    PfDateina: string;
  end;

var
  MainForm: TForm;
Unit TelListe_Zeig
Delphi-Quellcode:
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;
MainForm.Wei wird in TelListe_Zeig nicht gefunden.
Gehören zum gleichen Projekt und werden gemeinsam kompiliert.
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
618 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Variable aus anderem Formular übernehmen

  Alt 17. Jun 2020, 17:45
Zitat:
MainForm: TForm;
<------------------
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?
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
664 Beiträge
 
Delphi 12 Athens
 
#7

AW: Variable aus anderem Formular übernehmen

  Alt 17. Jun 2020, 18:35
Wahrscheinlich stand da auch schon

var Form1: TForm und nicht var Form1: TForm1 , warum auch immer.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
926 Beiträge
 
#8

AW: Variable aus anderem Formular übernehmen

  Alt 18. Jun 2020, 08:04
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:
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;
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.

So vermeide ich Rückwärtsbeziehungen. Ich bestimme den Zeitpunkt, wann und wie meine Variablen in der aufrufenden Form aktualisiert werden.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.533 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Variable aus anderem Formular übernehmen

  Alt 18. Jun 2020, 08:55
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:
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;
Auf der anderen Seite dann
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
926 Beiträge
 
#10

AW: Variable aus anderem Formular übernehmen

  Alt 18. Jun 2020, 10:26
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.
ist ja fast das gleiche. Nur, dass ich auf Getter und Setter verzichtet habe.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr.
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