Announcement

Collapse
No announcement yet.

Close; Fenster schliesst nicht!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Close; Fenster schliesst nicht!

    Hi,

    wir haben das folgende problem nur bei einem einzigen kunden!
    er klickt auf "schliessen" button, und nichts passiert!

    beim OnClick ist nur eine zeile drin:
    Close;

    aber das fenster wird nicht geschlossen!!!

    meistens lässt sich das fenster schliessen aber manchmal haben die tage, da läuft es permanent nicht! und sie müssen die anwendung per "kill" schliessen, da sie nicht mehr aus diesem dialog-fenster kommen! und dieses fenster wird relativ viel verwendet!

    ich hab keine erklärung für dieses verhalten... das ram ist ok, die maschiene ist ein winxp-home ohne internet zugang.

    unser programm wurde mit D5 Ent. kompiliert.

    ich war heute beim kunden, als das problem da war (dialog-fenster konnte auf keine weise geschlossen werden).
    auf diesem fenster hats noch weitere knöpfe für (drucken, vorschau, einstellungen ändern, löschen, öffnen, schliessen).
    alle ausser dem schliessen funktionierten! auch oben rechts mit dem windows-x knopf, konnte das fenster nicht geschlossen werden! das fenster konnte man auch verschieben! nur reagierte es auf keinen "schliess"-versuch!

    das betroffene fenster hat auch keine ereignisse (ausser OnShow).

    hat jemand einen tip oder schon was ähnliches erlebt?

    gruss

  • #2
    Hallo!
    Schau Dir in der Hilfe mal TCustomForm.Close
    an und überprüf, anhand von CloseQuery, ob das Formular geschlossen werden kann.
    Das Ereigniss OnCloseQuery sollte aufgerufen werden und, falls CanClose false ist, setze es einfach mal auf true ;

    Comment


    • #3
      aber das CloseQuery wird bei diesem fenster nirgends benutzt?! also ist kein ereigniss eingetragen im event-viewer... der "fehler" / die "macke" tritt auch nicht regelmässig auf!

      ich hab jetzt mal CloseQuery beim fenster zugewiesen und CanClose immer auf True gesetzt... mal sehen ob das beim kunden was bringt... ich und viele andere kunden können dieses fenster immer ohne probleme schliessen

      Comment


      • #4
        Idee:
        Kleines mini Testprogramm schreiben um Fenster öffnen und schliessen zu Testen.
        if (Funktioniert das Testprogramm) then
        begin
        // Fehler in der eigenen Anwendung
        Vor dem Neucompilieren alle DCU's löschen
        Welche Componenten werden verwendet (TApplicationEvents?)
        Ereigniss OnCloseQuery einmal anlegen und wieder löschen
        usw.
        end
        else
        Grafiktreiber checken und ggf. update

        Comment


        • #5
          du meinst ein programm welches die ganze zeit hintereinander ein fenster öffnet und wieder schliesst?

          könnt ich machen und schauen ob es irgendwann hängenbleibt..

          Comment


          • #6
            >beim OnClick ist nur eine zeile drin:
            > Close;
            Close verwende ich nur, um die Anwendung an sich zu beenden (zu schliessen). In einer Dialogbox habe ich kein Close.
            Ich setze die Eigenschaft Cancel beim TButton auf TRUE und ModalResult auf mrCancel bzw. beim OK-Schalter auf mrOK. Das OnClick bleibt leer. Dann kann das Dialogfenster auch mit der Taste ESC geschlossen werden. Mit "if ShowModal = idOK then" kann festgestellt werden, daß der Anwender den OK-Schalter mit dem mrOK gewählt hatte.
            Schau bitte in der Hilfe unter "ModalResult".
            Läßt sich Deine Dialogbox mit ESC schliessen

            Comment


            • #7
              Hallo,
              wir haben ein ähnliches Problem bei manchen Kunden.
              Im Hauptformular wird ein Dialog mit ShowModal geöffnet. Dieser Dialog enthält (neben Eingabefeldern und Labels) einen Ok Button und einen Cancel Button. Der Cancel Button ist Standard mit ModalResult mrCancel.
              Der Ok Button hat ein OnClick Ereignis. Dort werden u. a. die Eingaben überprüft. Sind die Eingaben fehlerhaft wird ModalResult auf mrNone gesetzt. Bei korrekten Eingaben wird in einer Datenbanktabelle ein Datensatz angelegt und ModalResult auf mrOk geestzt. Normalerweise wird jetzt das Fenster automatisch geschlossen.
              Bei manchen Kunden bleibt das Fenster aber sichtbar. Der Datensatz ist angelegt und das Hauptfenster hat von ShowModal den Wert mrOk erhalten. Der Dialog ist jetzt aber ein nicht-modales Fenster. Ich kann sowohl in das Hauptfenster als auch den Dialog clicken und das jeweilige Fenster erhält den Focus.
              Der Dialog ist aber nicht mehr zu schließen, weder mit Cancel-Button, Esc noch dem Windows x.

              Das Programm wird momemtan mit Delphi 7 entwickelt, ist aber schon ein altes Programm, was alle Delphi Versionen durchlaufen hat. Andere Dialoge in diesem Programm verhalten sich korrekt. Allerdings wird der fehlerhafte Dialog am meisten aufgerufen.

              Der Fehler ist leider auch nicht reproduzierbar. Er tritt nur sporadisch auf. Auf meinem Entwicklungsrechner und verschiedenen Rechnern unserer Firma ist der Fehler noch nicht einmal aufgetreten. Wir haben sogar einen Kundenrechner(bei dem der Fehler auftritt) bei uns aufgebaut. Es trat kein Fehler auf.

              Alle Rechner auf denen der Fehler auftritt sind neue Rechner. Betriebssytem ist XP sowohl mit als auch ohne Service Pack 2

              Hat irgendjemand eine Idee?

              @VanDeRing: Hast du dein Problem gelöst?

              Grus

              Comment


              • #8
                Hallo Martin,
                .
                ähnliches habe ich auch schon erlebt. Und zwar habe ich herausgefunden, wenn mein Fensterchen sich nicht schließen läßt, dass irgendwo im Hintergrund ein anderes Dialogfenster auf eine Bestätigung wartet. Also z. B. ein Fehlerfenster oder ähnliches.
                Passieren kann das auch mit einem Formular, welches aus einer DLL heraus geöffnet wird, wenn dort ein Meldungsfenster erscheint, ist dieses auch in den Hintergrund gerutscht.
                Versuche mal mit ALT+TAB die geöffneten Dialoge zu untersuchen, die evtl. geöffnet wurden, sich aber im Verborgenen aufhalten.
                Dann einmal einen Blick in den Taskmanager werfen, oder mal den Spy++ aus dem Visual Studio starten und dort alle Fenster (unter)suchen, die zu Deinem Programm gehören.
                .
                Gruß
                Michae

                Comment


                • #9
                  Hallo Michael,
                  danke für die Antowrt. Leider ist ein verstecktes Dialogfenster nicht die Ursache. Mit ALT + TAB erscheint kein Fenster mit einer Fehlermeldung. Ich kann ja in beide Fenster klicken und dort normal weiter arbeiten. Der Dialog wird auch nicht aus einer DLL heraus sondern vom Hauptfenster aus aufgerufen.

                  Hat sonst jemand noch eine Idee?

                  Gruß
                  Marti

                  Comment


                  • #10
                    Hallo Martin,
                    .
                    wenn Du auf das Systemmenü klickst, ist da der Eintrag "X Schließen ALT+F4" grau hinterlegt und deaktiviert

                    Comment


                    • #11
                      Hallo Michael,
                      das Systemmenu ist wie bei Dialogen üblich nicht vorhanden. Es gibt nur den X-Button rechts oben in der Titelleiste

                      Comment

                      Working...
                      X