AGB  ·  Datenschutz  ·  Impressum  







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

Eine Art Semi-ShowModal?

Ein Thema von sh17 · begonnen am 26. Aug 2015 · letzter Beitrag vom 27. Aug 2015
Thema geschlossen
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.675 Beiträge
 
Delphi 11 Alexandria
 
#1

Eine Art Semi-ShowModal?

  Alt 26. Aug 2015, 13:06
Hallo,

wenn man ShowModal mit einem Dialog macht, ist z.B. das Hauptmenü nicht mehr zu bedienen. Klar.

Code:
procedure OnClick;
begin
  MachDies;
  Form.ShowModal;
  MachDas;
end;
Wenn ich das ganze durch Show ersetze, ist klar, rauscht er sofort durch MachDas;

Was wäre die eleganteste Variante, um das ShowModal durch Show zu ersetzen (um im Hintergrund das Hauptmenü nutzen zu können) und doch eine Art ShowModal zu haben, die wartet und dann MachDas; aufruft?

Threads, Monitor,... Muss ja sicher im MainThread laufen
Sven Harazim
--
 
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Eine Art Semi-ShowModal?

  Alt 26. Aug 2015, 13:12
Eine Art OnClose-Handler als anonyme Methode? So ähnlich, wie es auf den mobilen Plattform für die MessageBox umgesetzt wurde. Das Form selbst würde dann mittels .Show() angezeigt und hätte je nach Bedarf sowas wie StayOnTop aktiv.
Daniel R. Wolf
mit Grüßen aus Hamburg
 
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Eine Art Semi-ShowModal?

  Alt 26. Aug 2015, 13:35
Und warum nicht einfach "MachDas" in eine separate Unit auslagern, und dann aus der "modalen" Form - die ganz normal mit Show angezeigt wird - aufrufen?
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
 
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.675 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Eine Art Semi-ShowModal?

  Alt 26. Aug 2015, 13:43
Und warum nicht einfach "MachDas" in eine separate Unit auslagern, und dann aus der "modalen" Form - die ganz normal mit Show angezeigt wird - aufrufen?
Hmm, ja, ne. Ist mir jetzt zu unflexibel. Mal schauen, wenn es gar nicht anders geht.
Sven Harazim
--
 
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.152 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Eine Art Semi-ShowModal?

  Alt 26. Aug 2015, 13:49
Und warum nicht einfach "MachDas" in eine separate Unit auslagern, und dann aus der "modalen" Form - die ganz normal mit Show angezeigt wird - aufrufen?
Hmm, ja, ne. Ist mir jetzt zu unflexibel. Mal schauen, wenn es gar nicht anders geht.
oder Du nimmst einfach den Vorschlag aus #2
 
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#6

AW: Eine Art Semi-ShowModal?

  Alt 27. Aug 2015, 11:18
Delphi-Quellcode:
class TSemimodalForm (TForm);
  private
    finished: boolean;

  public
    procedure WaitForMe;
    procedure show; override;
    procedure close; override;
  
  end;

implementation

procedure TSemimodalForm.WaitForMe;
begin
repeat sleep(200);
       application.processmessages; // bin nicht sicher, ob das hier nötig ist
       until finished;
end;

procedure TSemimodalForm.show;
begin
inherited;
finished:=false;
end;

procedure TSemimodalForm.close;
inherited;
finished:=true;
end;

Die Forms, bei denen du das brauchst (hier Form2), von TSemiModalForm ableiten
und aufrufen mit
Delphi-Quellcode:
  Form2.Show;
  Form2.WaitForMe;

Geändert von idefix2 (27. Aug 2015 um 11:40 Uhr)
 
Thema geschlossen


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 03:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz