AGB  ·  Datenschutz  ·  Impressum  







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

VCL Form als Popup Style

Ein Thema von Sunec · begonnen am 3. Dez 2014 · letzter Beitrag vom 3. Dez 2014
Antwort Antwort
Sunec

Registriert seit: 31. Aug 2013
88 Beiträge
 
Delphi XE8 Architect
 
#1

VCL Form als Popup Style

  Alt 3. Dez 2014, 12:45
Delphi-Version: XE7
Unter der Eigenschaft FormStyles habe ich bei Firemonkey Forms die Möglichkeit diese auf Popup zu setzten.

Dies ermöglicht es, dass sich die Form genauso verhält wie ein Popup-Menü.

Die Hauptform behält den Fokus und die Popup-Form "legt" sich lediglich darüber.

Außerdem verschwindet die Popup-Form automatisch sobald eine andere Aktion vom Benutzer ausgeführt wird, die sich nicht auf die Popup-Form bezieht.


Nun versuche ich das ganze in VCL zu realiseren.

Ich dachte an das überschreiben der CreateParams mit WS_POPUP bzw WS_POPUPWINDOW.

Allerdings verliert die Hauptform den Fokus und wird auch nicht automatisch ausgeblendet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: VCL Form als Popup Style

  Alt 3. Dez 2014, 12:49
WS_EX_NOACTIVATE

oder

Kein Show, sondern erst ShowWindow mit SW_SHOWMINNOACTIVE und danach Visible auf True setzen?
$2B or not $2B

Geändert von himitsu ( 3. Dez 2014 um 13:01 Uhr)
  Mit Zitat antworten Zitat
Sunec

Registriert seit: 31. Aug 2013
88 Beiträge
 
Delphi XE8 Architect
 
#3

AW: VCL Form als Popup Style

  Alt 3. Dez 2014, 13:01
Die aufgerufene "Popup-Form" erhält bei einem Klick weiterhin den Fokus und wird auch nicht automatisch ausgeblendet

So wird die Form aufgerufen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowWindow(Form2.Handle, SW_SHOWNOACTIVATE);
  Form2.Visible := true;
end;

Und hier die CreateParams der "Popup-Form"

Delphi-Quellcode:
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or WS_POPUP;
  Params.ExStyle := Params.ExStyle + WS_EX_NOACTIVATE;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: VCL Form als Popup Style

  Alt 3. Dez 2014, 13:08
Warum + , wo du es das erste Mal doch richtig gemacht hast?

Nja, im MSDN steht, daß diese Styles nicht kompatibel mit gewissen anderen Styles sind. (soweit ich mich erinnere)
Wenn ja, dann solltest du dafür sorgen, daß diese Styles nicht ebenfalls enthalten sind.

Und eventuell auch mal dort nachlesen: Bei Google suchendelphi fenster popup
$2B or not $2B
  Mit Zitat antworten Zitat
Sunec

Registriert seit: 31. Aug 2013
88 Beiträge
 
Delphi XE8 Architect
 
#5

AW: VCL Form als Popup Style

  Alt 3. Dez 2014, 13:14
Das + in or abzuändern ist leider auch nicht die Lösung.

Ich frag mich nur, weshalb es im FMX Framework so einfach ist eine Popup Form zu erzeugen und im eigentlich nativen VCL so umständlich?

Gegoogelt habe ich natürlich schon, undzwar mehrere Stunden. Ansonsten hätte ich nicht die Frage gestellt.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#6

AW: VCL Form als Popup Style

  Alt 3. Dez 2014, 13:36
Ich frag mich nur, weshalb es im FMX Framework so einfach ist eine Popup Form zu erzeugen und im eigentlich nativen VCL so umständlich?
Weil nativ weder den Krebs heilt noch den Weltfrieden bringt.
Es heißt nur, dass die VCL die Windows-Controls benutzt, und die geben das von dir gewünschte Verhalten halt nicht ohne Kopfstände her.

Vielleicht ist hier was Interessantes dabei:
http://stackoverflow.com/questions/2...e-a-popup-menu
Uli Gerhardt
  Mit Zitat antworten Zitat
Sunec

Registriert seit: 31. Aug 2013
88 Beiträge
 
Delphi XE8 Architect
 
#7

AW: VCL Form als Popup Style

  Alt 3. Dez 2014, 14:18
Ich frag mich nur, weshalb es im FMX Framework so einfach ist eine Popup Form zu erzeugen und im eigentlich nativen VCL so umständlich?
Weil nativ weder den Krebs heilt noch den Weltfrieden bringt.
Es heißt nur, dass die VCL die Windows-Controls benutzt, und die geben das von dir gewünschte Verhalten halt nicht ohne Kopfstände her.

Vielleicht ist hier was Interessantes dabei:
http://stackoverflow.com/questions/2...e-a-popup-menu

Danke Uli, das war die Lösung!
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#8

AW: VCL Form als Popup Style

  Alt 3. Dez 2014, 15:34
Danke Uli, das war die Lösung!
Uli Gerhardt
  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 15:04 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