AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Label.text im MainFrame aus frame setzen
Thema durchsuchen
Ansicht
Themen-Optionen

Label.text im MainFrame aus frame setzen

Ein Thema von tkhandel · begonnen am 13. Feb 2025 · letzter Beitrag vom 14. Feb 2025
Antwort Antwort
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
103 Beiträge
 
Delphi 10.4 Sydney
 
#1

Label.text im MainFrame aus frame setzen

  Alt 13. Feb 2025, 12:25
Hallo,
ich habe zwar verschiedenen Beiträge gefunden bezüglich Frames, bin aber nicht schlau daraus
geworden und alle Beispiele haben irgendwie nicht funktioniert.

Eine mainForm ruft ein Frame dynamisch auf das wiederum bei einem Buttoncklick ein anderes Frame dynamich
aufruft das dann in dem MainPanel des aufrufenden Frames angezeigt wird;

procedure TfraTour.btnTourWBClick(Sender: TObject);
var
fraTourLaden_WB1 : TfraTourLadenWB;
begin
fraTourLaden_WB1 := TfraTourLadenWB.Create(self);
fraTourLaden_WB1.Parent := self.pnlMain; // panel des Frame
fraTourLaden_WB1.vAufrufVon := 'Tagestour';
end;



in dem aufgerufenen Frame wird ein datum gewählt und

procedure TfraTourLadenWB.btnWeiterClick(Sender: TObject);
var
fraTour1 : TfraTour;
begin
dm.vWiederbesuch := TMSFNCCalendar1.Date;
dm.vWBString := ( jb_unit.getTag(dm.vWiederbesuch) + DateToStr(TMSFNCCalendar1.Date) );
dm.EinstSaveIni('TagesTour', 'WB', dm.vWBString);

if vAufrufVon = 'Tagestour' then
begin
fraTour1.btnTourWB.Text := dm.vWBString;
end;
...

self.Free;
self := nil;
end;


Fehler Im Projekt TKHKasse.exe ist eine Exception der Klasse $C0000005 mit der Meldung 'access violation at 0x019c42cb: read of address 0xd1e51268' aufgetreten.


Habe auch scon probiert es über procedure in der Mainfrom oder in dem Datenmodul zu lösen, leider ohne Erfolg
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#2

AW: Label.text im MainFrame aus frame setzen

  Alt 13. Feb 2025, 12:48
Ich habe das mal formatiert:
Delphi-Quellcode:
procedure TfraTourLadenWB.btnWeiterClick(Sender: TObject);
var
  fraTour1 : TfraTour;
begin
  dm.vWiederbesuch := TMSFNCCalendar1.Date;
  dm.vWBString := ( jb_unit.getTag(dm.vWiederbesuch) + DateToStr(TMSFNCCalendar1.Date) );
  dm.EinstSaveIni('TagesTour', 'WB', dm.vWBString);

  if vAufrufVon = 'Tagestourthen
  begin
    fraTour1.btnTourWB.Text := dm.vWBString;
  end;
  ...

  self.Free;
  self := nil;
end;
Zum einen ist die lokale Variable fraTour1 an der Stelle offenbar nicht initialisiert und zum anderen sollte man eher selten Self.Free aufrufen und vermutlich niemals Self := nil setzen.

Mir ist auch noch nicht ganz klar, was du überhaupt erreichen willst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#3

AW: Label.text im MainFrame aus frame setzen

  Alt 13. Feb 2025, 13:05
vielleicht Self.Release;
und ja, wenn durch irgendwas, nach deiner Methode, im übergeordneten Code auf die Form zugegriffen wird, dann knallt es natürlich, wenn die Form schon weg ist.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#4

AW: Label.text im MainFrame aus frame setzen

  Alt 13. Feb 2025, 13:10
vielleicht Self.Release;
und ja, wenn durch irgendwas, nach deiner Methode, im übergeordneten Code auf die Form zugegriffen wird, dann knallt es natürlich, wenn die Form schon weg ist.
Anhand des Namens TfraTourLadenWB und der Bemerkung im Original
in dem aufgerufenen Frame wird ein datum gewählt und
gehe ich davon aus, dass es sich um einen Frame handelt. Da ist das Release eher nicht der richtige Ansatz.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.905 Beiträge
 
Delphi 12 Athens
 
#5

AW: Label.text im MainFrame aus frame setzen

  Alt 13. Feb 2025, 13:31
Wenn auf einem Formular ein Frame liegt, der durch einen anderen ausgetauscht werden soll, sollte das auch im Formular passieren. Und wenn ein Frame auf einem Elternframe liegt, sollte sich der Elternframe darum kümmern.

Das bedeutet:
Wenn auf dem Frame eine Aktion ausgelöst wird, die dazu führt, dass der aktuelle Frame entfernt werden soll, sollte das per Event an das Formular oder den Elternframe mitgeteilt werden, damit dort die Aktion ausgeführt wird.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
103 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Label.text im MainFrame aus frame setzen

  Alt 14. Feb 2025, 08:23
Hallo,

ja danke erstmal für die schnellen Antworten!! Aber ich bin damit leider auch nicht weitergekommen.
Kann es sein das es am laden der Frames zur Laufzeit (also dynamisch) oder gar an FMX liegt?

Ich versuche es mal ohne Code zu erklären, ist vielleicht einfacher:

Formular ruft Frame1 auf und Frame1.Parent ist die Form,

Aus Frame1 rufe ich Frame2 für eine Abfrage auf, Frame2 hat als Parent Frame1
Frame2 wieder schließen und das Ergebnis (ein String) auf einem Label in Frame 1 anzeigen.
(hört sich so einfach an, aber ich kriege es nicht hin)

Ich habe es mit einer Procedure im Formular versucht, mit einer Procedure in Frame1 oder über
eine Variable in Frame1 usw. knallt immer.

Das Problem ist ja das FMX nicht wartet sondern weiterarbeitet sonst könnte ich das Ergebnis einfach nach der Rückkehr
aus Frame2 aus einer variable lesen.

bräuchte also mal wieder eure Hilfe.

PS: Was ist falsch daran die Frames nach gebrauch mit Free und nil zu entsorgen?
Jürgen
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:25 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