AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Form Activate, Focus

Ein Thema von schwa226 · begonnen am 25. Aug 2009 · letzter Beitrag vom 26. Aug 2009
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

Problem mit Form Activate, Focus

  Alt 25. Aug 2009, 18:22
Hi

ich habe ein App, die StayOnTop verwendet.

Die Form besteht aus einem Panel das oben am Screen ist und nicht die ganze Desktophöhe einnimmt.
Jedoch die ganze Breite schon.

Je nach Einstellung im Programm habe ich z.B. links unter dem Panel ein weiteres kleineres Panel das nicht die ganze Desktopbreite einnimmt.
Somit sieht es dann aus wenn beide sichtbar sind wie ein auf dem Bauch liegendes "L".
Da ja keine sechseckige Form möglich ist habe ich mir mit dieser Form die Transparent gemacht:
http://www.delphipraxis.net/internal...?p=32213#32213

Es wird also die ganze Form per RGN_DIFF durchsichtig gemacht.
Dann füge ich mit RGN_OR die beiden Panels wieder ein und ein L-Form entsteht.

Soweit so gut!

Doch per Tastendruck will ich die Form verstecken/wiederanzeigen.

Hört sich leicht an - ist es aber nicht.

Lösung 1:
Visible := False geht noch, doch sobald ich wieder Visible := True mache
Werden meine 2 Panels normal angezeigt. Doch der Rest der "L" Form wird nicht transparent!?

Es schaut so aus als würde die Form gezeichnet werden und dann erst Transparent gemacht werden.
Denn wenn ich ein anderes Fenster nehme und über das graue "darüber wische" wird der Hintergrund dahinter wieder angezeigt.
Fokus wird gesetzt und nach dem Wiedereinblenden kann ich die Form per Keyboard steuern.

Lösung 2:
Ich lasse das mit Visible True/False komplett weg und mache die Form unsichtbar durch RGN_DIFF ohne die Panels hinzuzufügen.
Somit ist sie ganz versteckt.
Wenn ich sie wieder anzeigen will mache ich wieder die ganze Form Transparent und füge dann wieder die 2 Panel hinzu.
Nun bleibt die "L"-Form und der Hintergrund ist so sichtbar wie es sein soll.

Aber da ist dann das Problem, dass ich auf meine Form den Focus nicht setzen kann.
Wenn ein anderes Programm aktiv ist bleibt der Fokus darauf und ich kann meine Form nicht mehr mit den Keyboard steuern.

Ich hole beim Anzeigen die Form auch noch hiermit in den Vordergrund:
Delphi-Quellcode:
              SetWindowPos(MainFormHandle, HWND_TOPMOST, Left,Top, Width,
                 Height, SWP_SHOWWINDOW);
Auch ein Versuch mit SetFocus(MainFormHandle), Main.Activate oder Button1.SetFocus hilft nichts. Der Fokus bleibt bei dem anderem Programm.
Wenn ich mit der Mouse draufdrücke bekommt meine Main Form den Focus und Keyboard geht wieder.
Main.Active sagt mir immer True, auch wenn ein anderes Programm Aktive ist!?

Auch ein Windows.GetFocus; sagt mir das mein Handle noch den Fokus hat obwohl ein anderes Programm aktiv ist!

Ich hoffe mein Problem ist halbwegs verständlich!
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Problem mit Form Activate, Focus

  Alt 25. Aug 2009, 20:37
Schau dir vielleicht mal das hier an:

Ein beliebiges Fenster transparent schalten.

Guido.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Problem mit Form Activate, Focus

  Alt 25. Aug 2009, 21:12
Ansonsten den SetTransparent Code mal im OnPain Ereigniss des Formulars aufrufen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.345 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem mit Form Activate, Focus

  Alt 25. Aug 2009, 22:03
Hast du es denn einmal mit der normalen Methode statt Visible versucht? Also mit Hide/Show?
Denn Visible funktioniert schon bei normalen Fenstern manchmal nicht, z.B. unter Windows 98 gab es da Probleme.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#5

Re: Problem mit Form Activate, Focus

  Alt 26. Aug 2009, 07:07
Erstmal vielen Dank für die Tipps!

Beim testen habe ich herausgefunden, dass es an der AlphaControls Komponente liegt.

Ohne passt es, mit passt es nicht.

Ich habe hier einmal ein Sample hochgeladen.
Beide Versionen sind kompiliert wenn einer die AlphaControls Komponente nicht hat!

Die Lösung mit Hide/Show habe ich versucht. Keine Änderung!

@Guido Eisenbeis
Das ist leider nicht das was ich suche. Das mit den Rectangle passt super da ich damit sozusagen 6-Eckige Formen erzeugen kann.
In der Area wo die Form voll Transparent ist kann ich mit der Mouse auf das darunter liegende Fenster klicken.
Angehängte Dateien
Dateityp: zip transparenz_978.zip (1,30 MB, 10x aufgerufen)
Delphi 2010, Update 4 & 5
  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 01:03 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