AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi anwendung über tna schließen, bei formclose minimieren
Thema durchsuchen
Ansicht
Themen-Optionen

anwendung über tna schließen, bei formclose minimieren

Ein Thema von inriz · begonnen am 7. Dez 2005 · letzter Beitrag vom 10. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
inriz

Registriert seit: 18. Okt 2005
15 Beiträge
 
#1

anwendung über tna schließen, bei formclose minimieren

  Alt 7. Dez 2005, 11:07
hallo,

meine taskbar anwendung sollte nur über ein popupmenu geschlossen, welches über das icon in der tna erreicht werden kann.
das schließen über das allgemein bekannte X in der anwendung sollte verhindert werden und stattdessen die anwendung in die tna minimieren. das forum hab ich schon durchsucht und bin auf closequery gestossen.
eine lösung habe ich auch schon implementiert, jedoch bin ich damit noch nicht zufrieden.

zur struktur der anwendung:
es besteht die möglichkeit über 3 verschiedene komponente die anwendung zu schließen.
1. X in der anwendung
2. schließen im popupmenu im tna
3. datei->beenden

1, 2 und 3 rufen alle die prozedur close auf.
nun soll closequery überprüfen ob das X in der anwendung gedrückt wurde wenn ja soll die anwendung minimiert werden
ANSONSTEN wird die anwendung geschlossen.

mein hintergedanke ist: sollte eine weitere komponente 4 hinzukommen mit der ich anwendung schließen kann, möchte ich einfach nur die prozedur close aufrufen und das programm wird beendet. ich möchte keine werte für eine globale variable setzen um sie dann später in closequery abzufragen.

wie stelle ich das an?
kann man über sender herausfinden, ob das X gedrückt wurde?

gruß inriz
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#2

Re: anwendung über tna schließen, bei formclose minimieren

  Alt 10. Jul 2009, 11:35
Zitat von inriz:
das schließen über das allgemein bekannte X in der anwendung sollte verhindert werden und stattdessen die anwendung in die tna minimieren.
Hat da mittlerweile jemand eine Lösung für?
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#3

Re: anwendung über tna schließen, bei formclose minimieren

  Alt 10. Jul 2009, 11:40
Du könntest sonst einfach den ganzen Rand verschwinden lassen:
MainForm.BorderSytle:=bsNone
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: anwendung über tna schließen, bei formclose minimieren

  Alt 10. Jul 2009, 11:45
1. ruft nur Close auf, wenn du nicht die Botschaft WM_SYSCOMMAND behandelst und dort das Command SC_CLOSE. Dort könntest du entsprechend deinen Wünschen ein Minimieren auslösen und dann diese Botschaft nicht weiterleiten zu deiner App (kein Inherited, wenn WM_SYSCOMMAND und SC_CLOSE).
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#5

Re: anwendung über tna schließen, bei formclose minimieren

  Alt 10. Jul 2009, 11:52
Wird nicht das Ereignis OnFormCloseQuery ausgelöst?

Dart kannst Du ja dann CanClose auf False setzen und die App minimieren. Beim Schließen über TNA kannst Du ja eine entsprechendes Kennzeichen setzen, daß im oben genannten Event dafür sorgt, daß CanClose dann eben auf True gesetzt wird.

Sherlock
Oliver
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

Re: anwendung über tna schließen, bei formclose minimieren

  Alt 10. Jul 2009, 11:54
oder einfach im FormClose

minimize
und
abort

das sollte auch klappen.

daniel.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: anwendung über tna schließen, bei formclose minimieren

  Alt 10. Jul 2009, 12:02
Zitat von Sherlock:
Wird nicht das Ereignis OnFormCloseQuery ausgelöst?
Bei meinem Vorschlag nicht mehr.

Zitat von Sherlock:
Dart kannst Du ja dann CanClose auf False setzen und die App minimieren. Beim Schließen über TNA kannst Du ja eine entsprechendes Kennzeichen setzen, daß im oben genannten Event dafür sorgt, daß CanClose dann eben auf True gesetzt wird.
Widerspricht seiner Forderung:

Zitat von inriz:
ich möchte keine werte für eine globale variable setzen um sie dann später in closequery abzufragen.
Zitat von DSCHUCH:
oder einfach im FormClose

minimize
und
abort

das sollte auch klappen.
Einfach den von Windows angefragten und im FormClose nun schon von der App zugestimmten Schliessen des Fensters nicht nachzukommen ist schon sehr böse. Dann noch mit Abort den Nachrichten Thread er Anwendung hart verlassen ist schon mutwillige Zerstörung des Programmablaufs. Wenn du das Schliessen des Formulars verhindern willst, dann nutze die dafür vorgesehene Stelle: OnCloseQuery. Windows fragt schliesslich nicht umsonst nach.

Das ist ja dann schon kein programmieren mehr sondern hacken...
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#8

Re: anwendung über tna schließen, bei formclose minimieren

  Alt 10. Jul 2009, 12:06
Zitat von Muetze1:
1. ruft nur Close auf, wenn du nicht die Botschaft WM_SYSCOMMAND behandelst und dort das Command SC_CLOSE. Dort könntest du entsprechend deinen Wünschen ein Minimieren auslösen und dann diese Botschaft nicht weiterleiten zu deiner App (kein Inherited, wenn WM_SYSCOMMAND und SC_CLOSE).
Das Abfangen klappt bei mir. Nur das Auslösen des Minimierens nicht

Müsste es so nicht klappen?

Delphi-Quellcode:
  if (Message.Msg = WM_SYSCOMMAND) and (Message.WParam = SC_CLOSE) then
    Message.WParam := SC_MINIMIZE;

  inherited;
SC_MAXIMIZE funktioniert
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#9

Re: anwendung über tna schließen, bei formclose minimieren

  Alt 10. Jul 2009, 12:09
Also eine private Variable im Formular sollte schon drin sein. Man darf auch nicht vergessen, das Windows mal runtergefahren wird, da ist ein einfaches verbieten des Close auch nicht so nett.

Ich hab' mal ein Copy&Paste aus einem meiner Programme, das je nach Einstellung beim "X" schließt, minimiert oder versteckt.
Delphi-Quellcode:
{TForm1}
private
  procedure WMQueryEndSession (var M: TWMQueryEndSession); message WM_QUERYENDSESSION;
  ShootDown : Boolean


procedure TForm1.WMQueryEndSession (var M: TWMQueryEndSession);
begin
  inherited;
  ShootDown := TRUE;
end;


procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  // Wenn ShootDown, dann beenden
  if ShootDown then begin
    CanClose := TRUE;

  // Kein ShootDown, nur minimieren eingestellt?
  end else begin
    if CBoxMinimize.Checked then begin
      if CBoxNotifyIcon.Checked then AppShowHide(False) else Application.Minimize;
      CanClose := FALSE;
    end else begin
      CanClose := TRUE;
    end;
  end;
end;
Zum Beenden mit einem anderen Button, wird einfach ebenfalls ShootDown vorm Close auf True gesetzt.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: anwendung über tna schließen, bei formclose minimieren

  Alt 10. Jul 2009, 12:38
@Viktorii: Du kannst in deiner lokalen Kopie des Message Records soviel ändern wie du willst das bekommt Windows nicht mit.

@Satty67: Mitglied im Schießclub oder warum schiesst du dein Windows immer runter (shoot) anstatt herunter zu fahren (shutdown)? :stupid:
  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 15:56 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