Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar (https://www.delphipraxis.net/168479-inhalt-einer-form-bei-aufruf-sw_shownoactivate-nicht-sichtbar.html)

Helmi 23. Mai 2012 20:32

Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

mittels folgendem Code versuche ich eine Form anzeigen zu lassen, ohne das sie den Fokus erhält
(Code aus dem Forum).

Delphi-Quellcode:
If sichtbar then
  ShowWindow(Handle, SW_SHOWNOACTIVATE)
else
  ShowWindow(Handle, SW_HIDE);
Es funktioniert auch soweit. Also soweit dass die Form ohne Fokus angezeigt wird.
Leider seh ich nur ein weisses Feld in der Größe der Form, dummerweise aber total leer.
Auf dem Bild sieht man es.

Ich sollte noch erwähnen, dass folgende Eigenschaft gesetzt ist:
Delphi-Quellcode:
BorderStyle = bsNone
.

Mach ich aber
Delphi-Quellcode:
Show
seh ich alles auf der Form. Nur hat die Form damit auch den Fokus, was ich aber nicht möchte.

Was ist da faul? - Bzw. wie bekomme ich es hin, dass die Form keinen Fokus hat, dafür aber alles sichtbar ist?

himitsu 23. Mai 2012 21:12

AW: Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
Passiert was, wenn du ein
Delphi-Quellcode:
Perform(CM_VISIBLECHANGED, Ord(sichtbar), 0);
hinterherschickst?

Ist Visible danach True?

Helmi 23. Mai 2012 21:16

AW: Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
Zitat:

Zitat von himitsu (Beitrag 1167798)
Passiert was, wenn du ein
Delphi-Quellcode:
Perform(CM_VISIBLECHANGED, Ord(sichtbar), 0);
hinterherschickst?

Leider nein! - Es bleibt wie bisher: leer!

Luckie 23. Mai 2012 21:23

AW: Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
Und wenn du da nach das Fenster neu zeichnen lässt?

Helmi 23. Mai 2012 21:27

AW: Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
Zitat:

Zitat von Luckie (Beitrag 1167803)
Und wenn du da nach das Fenster neu zeichnen lässt?

Ich habs mit Repaint als auch Refresh probiert - bei beiden das gleiche Phänomen.
Es ändert sich nichts an der Sichtbarkeit der Komponenten auf der Form - sie werden
nicht angezeigt.

jbg 23. Mai 2012 21:27

AW: Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
Delphi-Quellcode:
ShowWindow(Form3.Handle, SW_SHOWNOACTIVATE);
Form3.Visible := True;
Das sollte helfen. Beim SW_HIDE natürlich Visible := False setzen.

himitsu 23. Mai 2012 21:39

AW: Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
Delphi-Quellcode:
    ShowWindow(Handle, SW_SHOWNOACTIVATE);
    Visible := True;
?

[edit]
Ups, wo kommt den jbg denn urplötzlich her. :shock:
Aber scheinbar sieht es so gut aus. :)

Helmi 24. Mai 2012 17:51

AW: Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
Zitat:

Zitat von jbg (Beitrag 1167806)
Delphi-Quellcode:
ShowWindow(Form3.Handle, SW_SHOWNOACTIVATE);
Form3.Visible := True;
Das sollte helfen. Beim SW_HIDE natürlich Visible := False setzen.

Danke! - das hat funktioniert.

Habs jetzt so gemacht:

Delphi-Quellcode:
  If sichtbar then
    begin
      ShowWindow(Handle, SW_SHOWNOACTIVATE);
      Visible := true;
      Repaint;
      BringToFront;
    end
  else
    begin
      ShowWindow(Handle, SW_HIDE);
      Visible := false;
    end;
Stimmt die Erklärung, dass mit ShowWindow "an der VCL vorbei" das Fenster angezeigt wird und deswegen die VCL eigentlich gar nicht weiss das das Fenster angezeigt werden soll. Deswegen muss mit Visible das Fenster auch für die VCL sichtbar gemacht werden?!

Memnarch 9. Jul 2013 08:10

AW: Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
Ich weiß das ich gerade gefahrlaufe Threadnecrophelie zu betreiben, aber da ich gerade vor dem selben Problem stand(was hiermit gelößt wurde) möchte ich noch meine 2Cent zur letzten Frage des Threaderstellers abgeben(falls später nochmals jemand hier drauf googlet):

In diesem speziellen Fall geht das nutzen von ShowWindow sogar soweit, das nichtmal irgendwelche Events von einer Control/Form getriggert werden. Das dürfte bestätigen, das hier an der VCL vorbeigearbeitet wird, da diese dann auch außen vor ist, was Message-Abarbeitung angeht.
Sowas ist also wohl mit Vorsicht zu genießen.


MFG
Memnarch

Helmi 9. Jul 2013 19:25

AW: Inhalt einer Form bei Aufruf "SW_SHOWNOACTIVATE" nicht sichtbar
 
weil das Thema sowieso aufgewärmt wurde, muss ich gleich noch ein Problem loswerden:

Bei WinXP (ja, das gibt's noch) seh ich leider den Inhalt der Form nicht
muss man dabei etwas (anderes) beachten?

[Edit]
Kommando zurück - das Problem liegt auf meiner Seite (dumme If-Anweisung wird ned true)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 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