AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Minimieren abfangen klappt jedoch nur 1x
Thema durchsuchen
Ansicht
Themen-Optionen

Minimieren abfangen klappt jedoch nur 1x

Ein Thema von Timi-loader · begonnen am 23. Nov 2006 · letzter Beitrag vom 23. Nov 2006
Antwort Antwort
Timi-loader

Registriert seit: 10. Okt 2005
Ort: Berlin
97 Beiträge
 
Delphi 7 Personal
 
#1

Minimieren abfangen klappt jedoch nur 1x

  Alt 23. Nov 2006, 15:31
hallo

unzwar habe ich son applicationevents und dort das ereignis onminimize mit folgendem code:
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
application.ProcessMessages;
PostMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
application.ProcessMessages;
form1.Minimieren1Click(Sender);
end;
..in dem minimierenklick wird die form1.visible:=false gesetzt und dann das trayicon angezeigt. dies ist notwendig, da ich eine form6 habe die auch wenn das programm "minimiert" ist, angezeigt werden soll.

jo.. also es klappt gut mit dem minimieren beim ersten mal. dann klicke ich auf das icon und so stellt er form1 wieder sichtbar und auch zusätzlich nochmal ein PostMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
aber wenn man jetzt entweder auf das minimieren des fensters oder einfach in die taskleiste klickt passiert nichts. wenn ich mitm rechtsklick inner taskleiste auf die anwendung klicke sehe ich auch das minimieren deaktiviert. wiederherstellen dagegen kann ich klicken und ab dann gehts es wieder einmal.

aber ich dachte dieses SC_RESTORE ist wiederherstellen??
also irgendwas funktioniert da ebend nicht richtig mit dem wiederherstellen.

mfg
timi-loader
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Minimieren abfangen klappt jedoch nur 1x

  Alt 23. Nov 2006, 15:37
oh, versuch lieber das WM_SYSCOMMAND direkt abzufangen.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  [...]
    procedure NoMinimize(var AMsg: TWMSysCommand); message WM_SYSCOMMAND;
[...]
procedure TForm1.NoMinimize(var AMsg: TWMSysCommand);
begin
  if AMsg.CmdType = SC_MINIMIZE then
    AMsg.Result := -1
  else
    inherited;      
end;
Noch sinnvoller ist jedoch einfach bei den BorderIcons das Minimieren auszublenden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Timi-loader

Registriert seit: 10. Okt 2005
Ort: Berlin
97 Beiträge
 
Delphi 7 Personal
 
#3

Re: Minimieren abfangen klappt jedoch nur 1x

  Alt 23. Nov 2006, 15:59
hey cool!
danke für die schnelle und sehr gute antwort

klappt dann so schon ganz gut, aber wenn man in der taskleiste drauf klickt minimiert es sich immernoch wie normal.

und wegen ausblenden: minimierenbutton kann man zwar ausblenden in der titelleiste, aber die anwendung soll ja eh virtuell minimiert werden (ebend nur anders)

mfg
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Minimieren abfangen klappt jedoch nur 1x

  Alt 23. Nov 2006, 16:07
Der Grund liegt darin das dann direkt an Application.Handle das wm_syscommand geschickt wird. Ich guck mal schnell ob die Lösung die mir vorschwebt da geht.

So, die Variante mit der Message musst du lassen. Damit wird verhindert dass, das Form minimiert wird. Wenn du in der Taskleiste drauf klickst wird das Minimieren an die Anwendung geschickt und muss somit dort verhindert werden:
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
  if (Msg.hwnd = Application.Handle) and (Msg.message = WM_SYSCOMMAND) and (Msg.wParam = SC_MINIMIZE) then
    Handled := True;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Timi-loader

Registriert seit: 10. Okt 2005
Ort: Berlin
97 Beiträge
 
Delphi 7 Personal
 
#5

Re: Minimieren abfangen klappt jedoch nur 1x

  Alt 23. Nov 2006, 16:30
ok jo das funzt dann auch.
..hab auch in die prozedure dann wieder mein minimieren1click reingetan und jop.

ein'n hab i noch^^

unzwar: dieses desktop-anzeigen-symbol bzw die funktion. kann man auch auf diese reagieren?
..ansich macht das nichts aus, da eh form6 beim ereignis trotzdem angezeigt wird, aber trotzdem wärs schön wenns einheitlich gehn würd

mfg
und thx
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Minimieren abfangen klappt jedoch nur 1x

  Alt 23. Nov 2006, 16:33
Dieses "Desktop anzeigen" funktioniert anders und minimiert nicht. Dies hat den Vorteil das auch Programme in den Hintergrund wandern welche keinen Minimieren-Button haben. Letzendlich wird dabei nur der Desktop nach ganz vorn gebracht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Timi-loader

Registriert seit: 10. Okt 2005
Ort: Berlin
97 Beiträge
 
Delphi 7 Personal
 
#7

Re: Minimieren abfangen klappt jedoch nur 1x

  Alt 23. Nov 2006, 16:49
aha ok.
na dann lass ich das ohne ereignis. ..findet der user ja evtl auch nicht so schön, wenn ein programm gleich in den tray wandert, wenn er nur den desktop sehen will^^

mfg
  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 03:41 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