AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formular modal öffnen

Offene Frage von "himitsu"
Ein Thema von Sankt Rochus · begonnen am 4. Sep 2015 · letzter Beitrag vom 9. Sep 2015
Antwort Antwort
Seite 1 von 2  1 2      
Sankt Rochus

Registriert seit: 30. Nov 2012
15 Beiträge
 
#1

AW: Formular modal öffnen

  Alt 4. Sep 2015, 12:15
Okay, danke schon mal für eure Antworten.

Das ist aber natürlich schade, dass es kein ShowModal mehr gibt ): Ich bin immer mehr der Meinung, dass sich der Einsatz von FireMonkey nur lohnt (und sonst nur Ärger macht), wenn man wirklich für verschiedene Plattformen entwickelt, was wir leider nicht tun. Wieso dann Firemonkey? War nicht meine Entscheidung, und lässt sich jetzt auch nicht mehr so schnell umändern. Okay, zur Sache...

Aktuell werden vom Hauptformular, das die beschriebene Mathode aufruft, die Einstellungen entgegen genommen und in einer Datei gespeichert. Jetzt würde ich das spontan so umbauen, dass das Hauptformular die Methode aufruft und wie von Sir Rufo beschrieben eine Call-Back-Funtion übergibt, die dann von der anonymen Funktion im ShowModal(...) aufgerufen wird und die die Einstellungen in die Datei schreibt.

Hoffe, dass das funktionieren wird.

Danke euch vielmals.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Formular modal öffnen

  Alt 4. Sep 2015, 12:23
Wieso dann Firemonkey?
Ein Grund könnte sein, damit man weg kommt von der strengen Bindung zur Windows API/VCL. Ist sicherlich Zukunftsorientiert!
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#3

AW: Formular modal öffnen

  Alt 4. Sep 2015, 13:29
Zitat:
Das ist aber natürlich schade, dass es kein ShowModal mehr gibt ):
Das fehlt mir nicht:
Denn mit den neuen anonymen Prozeduren bleiben ShowMessage etc. erhalten wie bisher,
nur eben nicht Modal --> so das die Anwendung responsiv bleibt.

Das ist nicht nur gut für iOS und Android, auch Win Anwendungen sind besser wenn nicht bis zum Klick alles
blockiert wird.

Da muss man mal ein bischen Umdenken, aber es lohnt sich die alten Zöpfe abzuschneiden.

Rollo
  Mit Zitat antworten Zitat
Sankt Rochus

Registriert seit: 30. Nov 2012
15 Beiträge
 
#4

AW: Formular modal öffnen

  Alt 4. Sep 2015, 13:43
Zitat:
Ein Grund könnte sein, damit man weg kommt von der strengen Bindung zur Windows API/VCL. Ist sicherlich Zukunftsorientiert!
Klar, für Windows 11 hat Microsoft ja bereits die Windows API abgekündigt

Das Projekt, das ich betreue, habe ich von meinem Kollegen übernommen, der (meine ich) auf FireMonkey aufgestiegen ist, weil er neugierig war. Finde ich grundsätzlich auch die richtige Einstellung. Nur gingen bei uns einfach schon etliche Stunden / Tage ins Land, um Firemonkey-Probleme zu lösen, die aus meiner Sicht sich nicht immer mit unserer anfänglichen FMX-Unkenntnis begründen liesen.

Um ganz ehrlich zu sein ... würde ich heute ein Projekt ganz neu starten, und wäre Plattformunabhängigkeit kein Thema, wohl aber Effizienz und Zukunftssicherheit, ich ginge vermutlich auf die Microsoft-Schiene, C#.NET oder so. Das ist jetzt natürlich meine ganz persönliche Meinung und wurde hier bestimmt schon ganz oft diskutiert Als mehrjähriger Delphi-Entwickler kann ich sagen, dass Delphi an sich toll ist Doch den immer von Embarcadero propagierten "stark wachsenden Markt" kann ich bei den Embarcadero-Produkten aktuell leider nicht sehen. Ich habe die Befürchtung, dass Embarcadero weiterhin Marktanteile verlieren wird und deshalb letztlich zuerst die Qualitätssicherung, später dann die komplette Neuentwicklung bei Embarcadero zurückgehen wird. Ersteres ist IMHO jetzt schon teilweise der Fall. Zumindest die Codegear-Zeiten haben Delphi wirklich nicht gut getan. Microsoft dagegen ist für mich bekannt für einwandfrei integrierte (Microsoft-Landschaft halt), robuste und effiziente Lösungen für die Entwicklung. Microsoft ist stark hinterher, Fehler zu korrigieren, und die Dokumentationen sind sehr ausführlich. Zudem bietet Microsoft das meiste kostenlos an (Windows wird billger / kostenloses Upgrade, Visual-Studio Express-Editions, Dreamspark für Schüler / Studenten) etc.. . Und auch wenn Microsoft der "böse Gigant" ist, gefällt mir Microsofts Produktstrategie meistens ganz gut.

Okay, entschuldigt den Off-Topic
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Formular modal öffnen

  Alt 4. Sep 2015, 14:17
Das ist aber natürlich schade, dass es kein ShowModal mehr gibt ): Ich bin immer mehr der Meinung, dass sich der Einsatz von FireMonkey nur lohnt (und sonst nur Ärger macht), wenn man wirklich für verschiedene Plattformen entwickelt, was wir leider nicht tun.
Dann verstehe ich das Problem nicht: Unter Windows funktioniert das alte parameterlose FMX-ShowModal doch genauso wie in der VCL!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Sankt Rochus

Registriert seit: 30. Nov 2012
15 Beiträge
 
#6

AW: Formular modal öffnen

  Alt 7. Sep 2015, 12:12
Zitat:
Dann verstehe ich das Problem nicht: Unter Windows funktioniert das alte parameterlose FMX-ShowModal doch genauso wie in der VCL!
Hallo Uwe Raabe,

danke für deine Antwort.

Ich dachte auch zunächst, das ShowModal ohne anonyme Funktion entspräche absolut der Fuktionalität wie in der VCL. Tatsächlich bekomme ich, sofern ich das Formular auch irgendwie freigeben möchte, jedoch immer unerwartetes Verhalten. Ich habe schon verschiedene Möglichkeiten ausprobiert, bis hin das Formular gar nicht freizugeben (Nicht schön, aber besser als nichts.).

Das modale Fenster mag sich auch schließen, doch mal bekomme ich dann in Events (Hover etc...) des Hauptformulars seltsame Zugriffsverletzungen, mal frieren Teile der UI ein, da manche Events offenbar gar nicht mehr getriggert werden (z.B. Click bei manchen Buttons), mal läuft irgendwas mit den Styles schief, sodass anstatt des Iceberg-Blaus plötzlich alles schwarz wird, mal crasht die ganze Anwendung.

Kurzum, alles lässt mich darauf schließen, dass Firemonkey intern ein per ShowModal(<Keine Parameter>) angezeigtes Fenster nicht richtig verwaltet, zumindest nicht so wie in der VCL. Ich habe schon jahrelange VCL-Erfahrung und müsste eigentlich wissen, wie man ein Fenster auf macht (Wenn die Luft im Büro stickig ist ), aber ich lass mich natürlich gerne eines besseren belehren, vlt. mache ich tatsächlich etwas falsch.

Ich habe in meinem Eingangspost unter "Variante 2" meinen VCL-Code gepostet. Siehst du (oder jemand anders) darin einen Fehler?

Danke schon einmal.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Formular modal öffnen

  Alt 7. Sep 2015, 14:03
Man könnte auch auf die saudumme Idee kommen und dem blöden FMX modal beizubringen?

z.B. in etwa so (rein schematisch)
Delphi-Quellcode:
var
  WarteVariable: TModalResult;

WarteVariable := mrNone;
MeinDialog.ShowModal(
  procedure(ModalResult: TModalResult)
  begin
    WarteVariable := ModalResult;
  end);
while (WarteVariable = mrNone) and not Application.Terminated do begin
  Application.ProgressMessages;
  Sleep(10);
end;
case WarteVariable of
  mrNone: Exit;
  mrOK: DoA;
  else DoB;
end;
Natürlich schön als als Methode "RealShowModal" per Class-Helper an alle Forms drangehangen.



"ShowModal" ist jedenfalls ein voll bescheuerter Name, denn eigentlich ist es doch ein xxx.Show(OnClose: TCloseEvent); .
Kein Wunder, wenn sich dann welche wundern, daß es doch nicht modal ist.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 7. Sep 2015 um 14:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Formular modal öffnen

  Alt 7. Sep 2015, 15:48
Man könnte auch auf die saudumme Idee kommen und dem blöden FMX modal beizubringen?
FMX ist nicht blöde... Sondern Cross-Plattform compatible...

Um mit berühmten Worten zu Antworten : "Kaum macht man's richtig - schon funktioniert's"

Ein Repeat Processmessage Construct geht natürlich rein technisch gesehen... Aber wenn man so etwas braucht ist es einfach ein Designfehler! Vielleicht nicht unter Windows, aber auf jeden Fall um iOS/Android Umfeld.

Aber daher Funktioniert ein ShowModal unter Windows auch wie gewohnt...
  Mit Zitat antworten Zitat
Sankt Rochus

Registriert seit: 30. Nov 2012
15 Beiträge
 
#9

AW: Formular modal öffnen

  Alt 8. Sep 2015, 10:18
Danke euren Beiträgen.

Zitat:
Man könnte auch auf die saudumme Idee kommen und dem blöden FMX modal beizubringen?
Das dachte ich mir auch schon. War mir dann aber wirklich zu dreckig diese Lösung
Ich weiß auch nicht, wie sich das von der Performance her verhalten würde.

Zitat:
"ShowModal" ist jedenfalls ein voll bescheuerter Name, denn eigentlich ist es doch ein xxx.Show(OnClose: TCloseEvent);
Meine Rede...

Zitat:
Um mit berühmten Worten zu Antworten : "Kaum macht man's richtig - schon funktioniert's"
Ja, wie denn?

Zitat:
Aber daher Funktioniert ein ShowModal unter Windows auch wie gewohnt...
Unter FMX? Wirklich? Dann sage mir bitte, wo bei mir der Fehler lag, oder wie du ein einfaches Fenster unter Nur-Windows-FMX auf und zu machen und anschließend freigeben würdest, ohne dass es mir danach an ganz anderen Stellen scheppert. Ich probiere das gerne aus.

Vielen Dank schon einmal.
  Mit Zitat antworten Zitat
Sankt Rochus

Registriert seit: 30. Nov 2012
15 Beiträge
 
#10

AW: Formular modal öffnen

  Alt 8. Sep 2015, 14:01
Ich habe das mit dem reinen ShowModal() ohne Parameter jetzt nochmals ausprobiert. Dazu habe ich auf mein Hauptformular einen Button btn1 gelegt das ein Testformular öffnet. Ich bekomme es nicht hin

Delphi-Quellcode:
procedure TfMain.btn1Click(Sender: TObject);
var
  l_TestFormular: TTestFormular;
begin
  l_TestFormular := TTestFormular.Create(nil);
  l_TestFormular.ShowModal;
  l_TestFormular.Release;
end;
Das Testformular selbst enthält wirklich NUR einen Label mit dem Text "Dies ist ein Testformular" und einen Button, bei dessen Klick Close() aufgerufen wird. Das Fenster öffnet auch und schließt sich wieder, doch dann bekomme ich plötzlich herbe Style-Fehler in meinem Hauptformular. Kann das so schwer sein?

Muss ich vlt. einen Owner mit angeben? Das war so weit ich weiß in der VCL nicht nötig. Muss ich etwa statt Release Free oder FreeAndNil verwenden oder gar das Formular an dieser Stelle gar nicht freigeben, sondern stattdessen im FormClose-Event ein Action := TCloseAction.caFree; ? Alles ausprobiert, doch ohne Erfolg.

Edit:
Okay, ich habe nun einen sicheren Verdacht. Wir verwenden auf dem Hauptformular ein StyleBook als Non-visible-Component, die ich bisher immer im Designer auf neue Formulare kopiert habe. Jedoch scheinen die Kopien keine echten Kopien zu sein, sondern Referenzen, sodass beim Free das Stylebook mit freigegeben wird. Wie mache ich so etwas denn richtig? Es mag sein, dass das Stylebook-Copy-Past nicht der beste Weg ist.

Geändert von Sankt Rochus ( 8. Sep 2015 um 14:33 Uhr)
  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 21:20 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