AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Formular in Grid-Event freigeben, wo dieses Grid drauf ist
Thema durchsuchen
Ansicht
Themen-Optionen

Formular in Grid-Event freigeben, wo dieses Grid drauf ist

Ein Thema von Getox · begonnen am 10. Mai 2021 · letzter Beitrag vom 11. Mai 2021
Antwort Antwort
lxo

Registriert seit: 30. Nov 2017
303 Beiträge
 
Delphi 12 Athens
 
#1

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 10. Mai 2021, 15:25
Vielleicht so in der Art? Siehe Anhang.
Angehängte Dateien
Dateityp: zip CloseForm.zip (2,2 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Getox

Registriert seit: 28. Dez 2012
155 Beiträge
 
Delphi XE3 Professional
 
#2

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 10. Mai 2021, 15:33
Ich versuche das nochmal anders zu beschreiben.

Wir haben einen Login-Screen. Nach dem Login landet man im Hauptformular. Von dort aus kann man ein Modul (nicht modal) aufrufen.

In diesem Modul ist ein Grid, in dem onKeyDown eine Prüfung auf Lizienznutzungen stattfindet. Wenn festgestellt wird, dass an der Lizenzbelegung von außerhalb manipuliert wurde, soll man zurück in den Login-Screen geworfen werden.

Ich befinde mich also im Key-Down Event des Grids von Modul-Formular. Ganz am Ende des Events schließe dieses Formular. Danach schließe ich im selben Event das Hauptformular, damit man zurück auf die Login-Maske geworfen wird.

Beim Schließen des Hauptformulars wird aber onClose das Modul-Formular mit Freeandnil freigegeben. Das KeyDown-Event des Grids scheint aber iintern noch nachgelagerte Aktionen durchzuführen, die aber fehlschlagen, weil das Fenster und das Grid dann schon nicht mehr existiert.
Ist ein Nilpferd ein Pferd, das nicht vorhanden ist?

Geändert von Getox (10. Mai 2021 um 15:36 Uhr)
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
303 Beiträge
 
Delphi 12 Athens
 
#3

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 10. Mai 2021, 15:38
Ich versuche das nochmal anders zu beschreiben.

Wir haben einen Login-Screen. Nach dem Login landet man im Hauptformular. Von dort aus kann man ein Modul (nicht modal) aufrufen.

In diesem Modul ist ein Grid, in dem onKeyDown eine Prüfung auf Lizienznutzungen stattfindet. Wenn festgestellt wird, dass an der Lizenzbelegung von außerhalb manipuliert wurde, soll man zurück in den Login-Screen geworfen werden.

Ich befinde mich also im Key-Down Event des Grids von Modul-Formular. Ganz am Ende des Events schließe dieses Formular. Danach schließe ich im selben Event das Hauptformular, damit man zurück auf die Login-Maske geworfen wird.

Beim Schließen des Hauptformulars wird aber onClose das Modul-Formular mit Freeandnil freigegeben. Das KeyDown-Event des Grids scheint aber iintern noch nachgelagerte Aktionen durchzuführen, die aber fehlschlagen, weil das Fenster und das Grid dann schon nicht mehr existiert.
Wenn du im CloseEvent des Formulars das Hauptformular schließt und nicht im Event des Grids sollte es funktionieren. Siehe Beispiel das ich vorhin angehängt habe.
Im KeyDownEvent des Grids könntest du dann ja auch noch einen Merker setzen und anhand dessen dann im CloseEvent des Formulars entscheiden ob das Hauptformular mit geschlossen werden soll oder nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

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

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 10. Mai 2021, 15:58
Dafür gibt es Release.

Zitat:
Release gibt das Formular erst frei, nachdem die Ausführung der Ereignisbehandlungsroutinen des Formulars und seiner untergeordneten Komponenten beendet ist. Die Methode stellt auch sicher, dass alle Botschaften in der Ereigniswarteschlange des Formulars vor dessen Freigabe bearbeitet werden. Jede Ereignisbehandlungsroutine für das Formular oder für dessen untergeordnete Objekte sollte Release anstelle von Free (Delphi) oder Delete (C++) benutzen. Ansonsten kann ein Speicherzugriffsfehler auftreten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 10. Mai 2021, 16:17
Wie wäre es mit einem Handler in der Login-Form, der auf eine Nachricht wartet, wenn sie kommt, prüfen welche Forms offen sind und dichtmachen. Wäre das eine Variante? (das key event sendet dann nachricht anstelle was zu schließen...)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Getox

Registriert seit: 28. Dez 2012
155 Beiträge
 
Delphi XE3 Professional
 
#6

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 11. Mai 2021, 07:59
Funktioniert hervorragend. Danke.
Ist ein Nilpferd ein Pferd, das nicht vorhanden ist?
  Mit Zitat antworten Zitat
Getox

Registriert seit: 28. Dez 2012
155 Beiträge
 
Delphi XE3 Professional
 
#7

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 11. Mai 2021, 09:13
Ich wollte noch einmal explizit meinen Respekt für Uwe Raabe ausdrücken. Er weiß scheinbar alles über Delphi und hat immer eine passende, saubere und einfache Lösung parat. Ein Mann von Ehre
Ist ein Nilpferd ein Pferd, das nicht vorhanden ist?

Geändert von Getox (11. Mai 2021 um 09:16 Uhr)
  Mit Zitat antworten Zitat
Getox

Registriert seit: 28. Dez 2012
155 Beiträge
 
Delphi XE3 Professional
 
#8

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 11. Mai 2021, 09:23
Wenn du im CloseEvent des Formulars das Hauptformular schließt und nicht im Event des Grids sollte es funktionieren. Siehe Beispiel das ich vorhin angehängt habe.
Im KeyDownEvent des Grids könntest du dann ja auch noch einen Merker setzen und anhand dessen dann im CloseEvent des Formulars entscheiden ob das Hauptformular mit geschlossen werden soll oder nicht.
Das hatte nicht funktioniert, weil die onClose-Events beider Forms zwischen dem von mir implementierten keyDown-Event und dem was das Grid danach noch so macht abgefeuert werden. Also auch beides "mitten drin". Trotzdem danke für die Mühe. Ich habe ja inzwischen eine Lösung.

Funfact: Als ich dein Projekt erzeugt und gestartet habe, ist Kaspersky durchgedreht, weil es die Anwendung als Virus erkannt hat o.O Direkt desinfizierung des Systems mit anschließendem Neustart, ohne Alternative. Eine halbe Stunde Später stand unser Admin auf der Matte. Netzwerkstecker gezogen und Komplettscan gemacht. Anschließend noch eine unangenehme Abreibung kassiert
Ist ein Nilpferd ein Pferd, das nicht vorhanden ist?
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
303 Beiträge
 
Delphi 12 Athens
 
#9

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 11. Mai 2021, 14:59
Funfact: Als ich dein Projekt erzeugt und gestartet habe, ist Kaspersky durchgedreht, weil es die Anwendung als Virus erkannt hat o.O Direkt desinfizierung des Systems mit anschließendem Neustart, ohne Alternative. Eine halbe Stunde Später stand unser Admin auf der Matte. Netzwerkstecker gezogen und Komplettscan gemacht. Anschließend noch eine unangenehme Abreibung kassiert
Ups
War nicht meine Absicht
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Formular in Grid-Event freigeben, wo dieses Grid drauf ist

  Alt 11. Mai 2021, 15:25
Delphi Rio, Kasperky Internet Security 21.3.10.391(b), projekt geladen, kompiliert, ausgeführt, im 2. Form im Grid "Enter" gedrückt, alles funktioniert ohne das sich mein Scanner meldet.
(habs auf Release gestellt...)
Gruß vom KodeZwerg
  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 09:48 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