AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Android/iOS Öffnen von anderen Forms
Thema durchsuchen
Ansicht
Themen-Optionen

Android/iOS Öffnen von anderen Forms

Ein Thema von rbrose · begonnen am 10. Jun 2016 · letzter Beitrag vom 14. Jun 2016
Antwort Antwort
rbrose

Registriert seit: 7. Jun 2016
8 Beiträge
 
#1

Android/iOS Öffnen von anderen Forms

  Alt 10. Jun 2016, 11:41
Hallo,

ich habe folgendes Problem. Ich finde nirgendwo im Internet wie man bei einer Android App oder iOS richtig die Forms wechselt und die korrekt schließt?

Also ich habe meine Anfangs Show LoginForm. Wenn ich ein Button Registrieren klicke, will ich die Registrieren Form öffnen. Das mache ich mit:

Delphi-Quellcode:
procedure TForm1.RegisterPopupButtonClick(Sender: TObject);
var
  RegisterForm: TForm2;
begin
//
  RegisterForm := RegistrierenForm.TForm2.CreateWithEmailAndPassword(EmailEdit.Text, registerPasswordEdit.Text);
  RegisterForm.Show;
end;
Die Register Form wird geöffnet und korrekt angezeigt.
Wenn ich jetzt aber wieder zurück will muss ich die procedure "Close" aufrufen und meine LoginForm wird wieder angezeigt.

Wenn ich aber aus der RegisterForm in eine neue Form springen will "HauptForm", erstelle ich mit HauptForm.Create(nil) ... und öffne die Form HauptForm.Show.
Soweit so gut, aber ich will das die RegisterForm geschloßen wird und ich beim schließen der HauptForm nicht mehr zurück zu RegisterForm komme sondern zum Login.

Wie schließe ich die RegisterForm korrekt? Also das die beim Öffnen der Hauptform nicht mehr im Speicher ist?
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#2

AW: Android/iOS Öffnen von anderen Forms

  Alt 10. Jun 2016, 13:55
Dein TForm2 hat ein OnClose und da kannst du den Rückgabewert auf cafree setzen.

Peter
  Mit Zitat antworten Zitat
rbrose

Registriert seit: 7. Jun 2016
8 Beiträge
 
#3

AW: Android/iOS Öffnen von anderen Forms

  Alt 12. Jun 2016, 09:57
Vielen Dank Peter, das funktioniert gut.

Ich habe aber wieder ein anderes Problem.
Meine Android zeigt beim starten eine LoginForm und der User kann sich einloggen. Wenn er sich eingeloggt hat, wird die MainForm angezeigt.
Wenn der Benutzer jetzt den Android back button klickt, kommt er wieder auf die LoginForm. Das soll er aber nicht. Wie kann ich es machen das die LoginForm nach dem öffnen von der MainForm weg ist? Und bei drücken des back Buttons die APP sich schließt?

Und eine andere Sache noch, wenn der User sich das erste Mal eingeloggt hat wird es in der Datenbank gemerkt, beim nächsten Start will ich direkt auf die MainForm springen ohne die LoginForm zu öffnen. Kann ich die Überprüfung direkt im Program unit machen? Da wo Applikation.run aufgerufen wird? Oder wie macht man das korrekt?
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Android/iOS Öffnen von anderen Forms

  Alt 12. Jun 2016, 10:28
Die Frage kann man mit 100 Möglichkeiten beantworten.

Ich würde eine Steuerunit bauen...
Das MainForm ist eigentlich leer. Nur damit "was" zum laden da ist...

Darin kannst Du den Programmablauf steuern.

Main -> Passwort? Nein -> Form; Ja KeinForm
..|
Eigentliches Mainform...


usw...

Mavarik
  Mit Zitat antworten Zitat
rbrose

Registriert seit: 7. Jun 2016
8 Beiträge
 
#5

AW: Android/iOS Öffnen von anderen Forms

  Alt 13. Jun 2016, 18:48
Sorry ist mir irgendwie noch nicht klar.

Wenn ich z.B.

Delphi-Quellcode:
procedure TMasterDetailForm.FormCreate(Sender: TObject);
var
  LoginForm: TForm1;
begin
  DB:=TDB.Create(FDConnection1);
  try
    if not DB.isLogged then
      begin
       LoginForm := TForm1.Create(nil);
       LoginForm.Show;
      end;

  finally
    //nothing todo
  end;
end;
Im MainForm im Event FormCreate die LoginForm öffne, dann wird diese im Hintergrund geöffnet. Wie kriege ich diese in den Vordergrund?

Kann ich nicht vorher die Überprüfung machen? Und die mainform überhaupt nicht laden zu dem Zeitpunkt?
Oder muss eine Form existieren beim Programm start? In Android ist es ja eine Activity.

Wenn das nicht geht, dann muss ich die LoginForm in den Vordergrund kriegen und beim Android Back button die App schließen. Richtig?
  Mit Zitat antworten Zitat
rbrose

Registriert seit: 7. Jun 2016
8 Beiträge
 
#6

AW: Android/iOS Öffnen von anderen Forms

  Alt 13. Jun 2016, 20:52
Also ich habe jetzt bisschen rumprobiert und habe eine Möglichkeit gefunden. Habe aber noch ein Problem

Es wird immer die MainForm gestartet und in dem CreateForm Ereignis prüfe ich ob der User sich einloggen muss und wenn ja öffne ich so die LoginForm:

Delphi-Quellcode:
var
  LoginForm: TForm1;
begin
  DB:=TDB.Create(FDConnection1);
  try
    if not DB.isLogged then
      begin
       LoginForm := TForm1.Create(nil);
       LoginForm.ShowModal(procedure(ModalResult : TModalResult)
                begin
                  if ModalResult = mrOK then
                    // do something here
                end);
      end;

  finally
    //nothing todo
  end;
ABER, wenn ich jetzt in eine Edit Komponente reinklicke ... taucht die Tastatur nicht mehr auf Ich kann den Benutzernamen und Passwort nicht eingeben.

Wenn ich jetzt aber den Code oben in ein Button onClick Ereignis reintune, wird die LoginForm geöffnet und ich kann problemlos Benutzername und Passwort eingeben.

Wieso ist das so? Liegt es daran das der Focus nicht an der LoginForm liegt? Was für eine Möglichkeit habe ich?


Habe eine Lösung gefunden, die Form einfach im Thread starten und schon funktioniert es super:

http://stackoverflow.com/questions/3...monkey-project

Geändert von rbrose (13. Jun 2016 um 21:08 Uhr)
  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 08:36 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