AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Neues Fenster öffnen per Button klick?? iOS
Thema durchsuchen
Ansicht
Themen-Optionen

Neues Fenster öffnen per Button klick?? iOS

Ein Thema von GummiBaum · begonnen am 15. Jan 2014 · letzter Beitrag vom 16. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2      
GummiBaum

Registriert seit: 6. Nov 2012
22 Beiträge
 
#1

Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 10:34
Hallo zusammen

ich bin gerade dabei eine einfache App zu schreiben
mit der ich eine Socketverbindung zu einem Server aufnehmen kann.
Mit fest eingetragener IP-Adresse und Port funktioniert das auch schon alles wunderbar.

Ich will die IP-Adresse und den Port der angesteuert werden soll aber nicht fest einkompilieren.

Meine Frage ist, wie kann ich über einen Button klick ein neues Fenster öffnen wo der Bediener diese Daten eingeben kann,
und wenn ich das Fenster schließe diese an mein 'Hauptprogramm' übergeben werden, oder ich diese in meinem Hauptprogramm benutzen kann?

Über einen Hinweis wäre ich sehr dankbar Ich hab keinen schimmer wie ich das angehen soll.

Es wäre super wenn ihr mir helfen könntet Danke!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 10:48
Das geht wie mit jeder anderen Komponente auch.

z.B.:
Delphi-Quellcode:
Fenster := TMeinEingabeFenster.Create(nil); // Owner braucht man nicht unbedingt, da es ja manuell freigegeben wird
try
  // hier könnte man eventuell noch was an das Fenster übergeben
  if Fenster.ShowModal = mrOK then begin
    x := Fenster.IPEdit.Text;
    y := StrToInt(Fenster.PortEdit.Text);
  end;
finally
  Fenster.Free;
end;
In dem Fenster (neune VCL-Form) sind zwei Edits und zwei Buttons.
Ein Button mit ModalResult = mrOK und der Andere mit mrCancel

Über ModalResult wird automatisch die Form, bzw. der "Dialog" geschlossen.
Aber du kannst im OnClick des OK-Buttons nochmal die Eingaben prüfen und dann entweder ModalResult im Fehlerfall auf mrNone zurücksetzen,
oder dort überhaupt erst auf mrOK setzen, wenn alles OK ist.

[edit]
OK, wenn man das Fenster von der VCL automatisch erstellen läßt (Projektoptionen > Formulare), dann ginge das auch noch etwas anders,
aber sowas macht man ja nicht.

Ach ja, bei TMeinEingabeFenster muß Visible natürlich auf False stehen, im OI.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Jan 2014 um 10:54 Uhr)
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.250 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 11:01
Show reicht! Showmodal braucht man i.d.R. nicht da nur immer ein Fenster sichtbar ist. Sei denn um es mal mit den Worten einen anderen Users hier zu beschreiben, man macht Designfehler und der Code muss auf das Schließen des anderen Fensters warten!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 11:02
Und jetzt nochmal auf Deutsch?

[edit] Da haben sich Dein Edit und mein Post überschnitten [/edit]
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
Benutzerbild von himitsu
himitsu

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

AW: Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 11:10
Show reicht! Showmodal braucht man i.d.R. nicht da nur immer ein Fenster sichtbar ist. Sei denn um es mal mit den Worten einen anderen Users hier zu beschreiben, man macht Designfehler und der Code muss auf das Schließen des anderen Fensters warten!
Ich glaub du hast ShowModal falsch verstanden.
ShowModal zeigt das Fenster an UND wartet bis es wieder geschlossen wurde.

Show zeigt es NUR an und macht dann weiter.



Bei ShowModal kann sich der Aufrufer darum kümmer und in Ruhe die Werte auslesen, welche er haben möchte.


Bei Show muß man entweder einen Callback übergeben, worüber der aufgerufene die Daten zurück gibt
oder man muß ein Interface für den Rückruf implementieren

oder der Aufgefufene muß dem Aufrufer die Daten geben (er muß ihn also direkt kennen), aber hier sind dann Komponenten nicht wiederverwendbar, da sie hart verlinkt sind und jeder den Anderen braucht.

Delphi-Quellcode:
// Fenster muß eventuell eine halbwegs globale Variable sein und man muß dann auch noch aufpassen, daß das Fenster nur einmal vorkommt.

Fenster := TMeinEingabeFenster.Create(Self); // hier braucht man nun den Owner
// hier könnte man eventuell noch was an das Fenster übergeben
Fenster.Show;
Delphi-Quellcode:
// jetzt muß man eine schöne Stelle finden, wo man das übergibt
x := Fenster.IPEdit.Text;
y := StrToInt(Fenster.PortEdit.Text);
Delphi-Quellcode:
Fenster.Free;
// oder
Fenster.Close; // und im OnClose muß caFree gesetzt werden
Da hat der erste Vorschlag den vorteil daß man das schön debuggen kann,
man weiß genau was wann und wie passiert,
die Komponente ist komplett vom Aufrufer getrennt und wiederverwendbar,
und hier gibt auch der die Form wieder frei, welcher Diese erstellt hat. (Erstellen und Freigabe in der selben Ebene)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Jan 2014 um 11:16 Uhr)
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.250 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 13:00
Ja ich bin die letzten Tage auch wegen Ferndiagnosen hier wegen Designfehler angesprochen worden, deshalb trage ich das mal weiter. Unter Desktop hat Showmodal seine Berechtigung, damit der Benutzer gelenkt wird und nicht im falschen Fenster rumklickt. Auf Mobilen Geräten kann das nicht passieren, da kann man das mit Design des Programms abfangen!

PS: unter XE5 und Android geht Showmodal nicht auch mit den angegeben Tricks war es nicht zum Warten zu bringen!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 13:36
ShowModal funktioniert im iOS nicht?
Wenn ja, dann würde ich das als schwerwiegenden Bug einstufen.

Im Prinzip kommt das ShowModal auf Folgendes hinaus.
Delphi-Quellcode:
Fenster := TMeinEingabeFenster.Create(Self);
try
  // hier könnte man eventuell noch was an das Fenster übergeben - z.B. Fenster.PortEdit.Text := IntToStr(StandardPort);

  // alle anderen Fenster disablen (was hier ja scheinbar nicht nötig wäre, aber es dürfte auch nicht stören)
  Fenster.Show;
  repeat
    Application.ProcessMessages;
  until ApplicationTerminated or (Fenster.ModalResult <> mrNode) or not Fenster.Visible;
  Fenster.Hide;
  // alle anderen Fenster wieder enablen

  if Fenster.ModalResult = mrOK then begin
    x := Fenster.IPEdit.Text;
    y := StrToInt(Fenster.PortEdit.Text);
  end;
finally
  Fenster.Free;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Jan 2014 um 13:41 Uhr)
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.250 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 16:10
Unter Android funktioniert es nicht: iOS gehts
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 18:05
Showmodal ist sowohl auf iOS als auch Android "ne schlechte Idee"

Es macht nur Probleme und wird auch nicht gebraucht, da im Prinzip alle Fenster Modal "aussehen".

Mavarik

PS.: hier nochmal der Link zu meinem Video für die Datenübertragung zum/vom PC
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.250 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Neues Fenster öffnen per Button klick?? iOS

  Alt 15. Jan 2014, 18:09
Showmodal ist sowohl auf iOS als auch Android "ne schlechte Idee"

Es macht nur Probleme und wird auch nicht gebraucht, da im Prinzip alle Fenster Modal "aussehen".

Mavarik

PS.: hier nochmal der Link zu meinem Video für die Datenübertragung zum/vom PC
Schön formuliert
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:03 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