AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Modales Fenster per Klick auf aufrufende Form schließen lassen

Modales Fenster per Klick auf aufrufende Form schließen lassen

Ein Thema von Hobbycoder · begonnen am 12. Okt 2018 · letzter Beitrag vom 12. Okt 2018
Antwort Antwort
Seite 2 von 2     12
Hobbycoder

Registriert seit: 22. Feb 2017
632 Beiträge
 
#11

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 13:14
Hallo,
du könntest die 2. Form auch semimodal aufrufen,
dann bleibt das 1. Form noch so bedienbar, wie du das willst.

Was passiert aber, wenn der Nutzer auf einen Button in dem 1. Form klickt,
soll dann der Button ausgelöst werden, oder das 2. Form geschlossen werden?
Was meinst du mit "Semimodal"?

Worauf der Benutzer klickt, soll im Grunde egal sein (allerdings soll der OnClick-Event der Controls, was er anklickt nicht ausgeführt werden). Sobald dieser Klick außer halb der Form ist, will ich irgendwas..ein Event, eine Message, damit ich darauf überhaupt reagieren kann.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
6.434 Beiträge
 
Delphi XE4 Professional
 
#12

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 13:29
Hallo,
etwa so

Delphi-Quellcode:
var
  Form : TFormSemi;
  WindowList : Pointer;

procedure ErzeugeForm
begin
  Form:= CreateStateForm(theCaption, theInfo);
  WindowList:= DisableTaskWindows(Form.Handle);
  Form.Show;
  Application.ProcessMessages;

  // hier geht es im 1. Form ganz normale weiter

end;


procedure GibFormFrei
  Form.FCanClose := True;
  EnableTaskWindows(WindowList);
  Form.Free;
Das ganze noch mit einer Boolean-Variable, die im OnKeyDown (KeyPreview=True) des 1. Forms prüft,
ob das semimodale 1. Form gerade läuft und dann in diesem Fall GibFormFrei aufruft
Heiko
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
632 Beiträge
 
#13

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 13:52
Ich habe das mal so versucht:

Delphi-Quellcode:
procedure TModaleForm.WMCapturechanged(var Message: TMessage); //message WM_CAPTURECHANGED;
var
  mp: TPoint;
begin
  if GetCursorPos(mp) then
  begin
    if not (PtInRect(Self.BoundsRect, mp)) then self.Close;
  end;
  inherited;
end;
Funktioniert schon mal wie gewünscht....aber nur beim ersten Mouseklick. Wird dieser innerhalb der modalen Form gemacht, wird WM_CAPTURECHANGED nicht mehr gefeuert.!?
Gibt es eigentlich eine Gegenstückt zu WM_CAPTURECHANGED?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
632 Beiträge
 
#14

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 14:13
Hallo,
etwa so

Delphi-Quellcode:
var
  Form : TFormSemi;
  WindowList : Pointer;

procedure ErzeugeForm
begin
  Form:= CreateStateForm(theCaption, theInfo);
  WindowList:= DisableTaskWindows(Form.Handle);
  Form.Show;
  Application.ProcessMessages;

  // hier geht es im 1. Form ganz normale weiter

end;


procedure GibFormFrei
  Form.FCanClose := True;
  EnableTaskWindows(WindowList);
  Form.Free;
Das ganze noch mit einer Boolean-Variable, die im OnKeyDown (KeyPreview=True) des 1. Forms prüft,
ob das semimodale 1. Form gerade läuft und dann in diesem Fall GibFormFrei aufruft
Hm...muss ich mal probieren. Aber das würde nicht verhindern, dass ein Control der 1. Form angeklickt wird. Das könnte ich in OnMouseDown ja noch regeln.
Und was ist CreateStateForm? Ich kenn nur CreateForm.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
6.434 Beiträge
 
Delphi XE4 Professional
 
#15

AW: Modales Fenster per Klick auf aufrufende Form schließen lassen

  Alt 12. Okt 2018, 16:38
CreateStateForm = TSemiForm.Create

Ich hatte es aus einem alten Projekt rauskopiert und das dort vergessen, u ersetzen
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf