AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Zusätzliche Forms unabhängig von der Hauptform steuern
Thema durchsuchen
Ansicht
Themen-Optionen

Zusätzliche Forms unabhängig von der Hauptform steuern

Ein Thema von gsh · begonnen am 29. Jan 2009 · letzter Beitrag vom 3. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 29. Jan 2009, 13:05
Hi leute,

ich habe in einem Projekt mehrere Formulare die ich gerne unabhängig von der Hauptform bedienen möchte. Es ergeben sich nämlich leider folgende Probleme:

Hauptform startet Log Fenster mit .Show. Dem Log Fenster hab ich schon einen eigenen Taskbareintrag gegeben:
Delphi-Quellcode:
procedure TfrmLog.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;
Wenn ich nun die Hauptform in den Tray minimiere:
Delphi-Quellcode:
with Screen do
  begin
    DrawAnimatedRects(Handle, IDANI_CAPTION, BoundsRect,
                      Rect(Width - 20, Height, Width - 10, Height));
  end;
  frmHaupt.Hide;
Dann bleibt das Logfenster erhalten (stimmt so) aber es bleiben auch beide Taskbareinträge erhalten (von der Hauptform und vom Logfenster).

Das Problem scheint aber immer nur mit der ersten zusätzlichen Form aufzutreten. Wenn ich nämlich noch eine starte gibt es mit dieser keine Probleme. Mach ich das ganze umgekehrt hab ich mit dem Log Fenster keine Problem dafür aber mit der anderen.

Kennt ihr dieses Problem und wisst ihr wie ich es lösen kann?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#2

Re: Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 30. Jan 2009, 11:09
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 1. Feb 2009, 15:44
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 1. Feb 2009, 17:24
Hier mal ein Vorschlag...
Angehängte Dateien
Dateityp: zip mehrerefenster_192.zip (3,5 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#5

Re: Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 1. Feb 2009, 22:17
Danke für deinen Vorschlag. Leider ist es nicht gut wenn alle Fenster minimiert werden, sobald das Hauptfenster in den Tray minimiert wird.

Wenn man folgende Proceduren im dem Test Projekt ändert und dann das Hauptfenster minimiert kann man in der Taskleiste schön mein Problem sehen:
Delphi-Quellcode:
procedure TFMain.WMSysCommand(var Message: TWMSysCommand);
begin
  if Message.CmdType and $FFF0 = SC_MINIMIZE then begin
// FormA.Hide;
// FormB.Hide;
    Hide;
  end
  else inherited;
end;

procedure TFMain.TaskbarEvent(var Msg: TMessage);
var Point:TPoint;
begin
  case Msg.LParam of
    WM_LBUTTONUP: begin
      // Linksklick...
// Self.Visible:=true;
// if FormA.isShow then
// FormA.Show;
// if FormB.isShow then
// FormB.Show;
// SetForegroundWindow(Self.Handle);
      Show;
    end;
    WM_RBUTTONUP: begin
      // Rechtsklick...
      GetCursorPos(Point);
      PopupMenu.Popup(Point.x, Point.y);
    end;
   end;
end;
Anbei die veränderte Exe (für die die zu faul sind es zu compilieren ).
Angehängte Dateien
Dateityp: exe formtest_766.exe (395,0 KB, 7x aufgerufen)
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 1. Feb 2009, 22:33
Oh, ok, dann habe ich dich wohl nicht richtig verstanden.

Hier nochmal ein neuer Vorschlag...
Angehängte Dateien
Dateityp: zip mehrerefenster_976.zip (3,4 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#7

Re: Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 1. Feb 2009, 23:55
AAAH das schaut schon besser aus

Ein kleines Problem noch: Wenn man Rechts auf den Taskbar eintrag von der MainForm klickt und dann auf minimieren wird die ganze Anwendung minimiert und außerdem nicht in den Tray "geschoben".
Ich erklär mir das dadurch das bei dieser Aktion die Message
procedure TFMain.WMSysCommand(var Message: TWMSysCommand); nicht aufgerufen wird. Gibt es dafür noch eine andere Message?

Kannst du mir bitte noch erklären was dieser Code genau macht und warum man ihn braucht?:
Delphi-Quellcode:
Owner := GetWindow(Handle, GW_OWNER);
ShowWindow(Owner, SW_HIDE);
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#8

Re: Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 2. Feb 2009, 16:45
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 2. Feb 2009, 19:39
Das mit dem Minimieren ist mir auch schon aufgefallen. Ich habe allerdings kein Event gefunden, das dort ausgelöst wird. Deshalb vermute ich mal, dass dort auch keines ausgelöst wird und Windows das alles selber organisiert. Das Verhalten ist ja prinzipell auch korrekt und der Taskeintrag bleibt erhalten. Dieses Minimieren ist demnach kein richtiges Minimieren der Anwendung.

Das ShowWindow sorgt dafür, dass der Taskeintrag verschwindet.
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
309 Beiträge
 
Delphi 12 Athens
 
#10

Re: Zusätzliche Forms unabhängig von der Hauptform steuern

  Alt 2. Feb 2009, 19:54
Zitat von omata:
Das ShowWindow sorgt dafür, dass der Taskeintrag verschwindet.
Jede Applikation hat nach meinem Wissen ein Applikationsfenster, welches nicht sichtbar ist. Allerdings sorgt dieses im Windows für den Taskbar-Eintrag. Mit GW_OWNER kommt man vom Fensterhandle auf eben jenes Applikationsfenster-Handle, welches dann versteckt wird mit SW_HIDE.

Gruß,
Christoph
  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 12:08 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