AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi MessageDlg modal, aber Hintergrundtätigkeit laufen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

MessageDlg modal, aber Hintergrundtätigkeit laufen lassen

Ein Thema von DelphiManiac · begonnen am 12. Jul 2007 · letzter Beitrag vom 21. Nov 2009
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

MessageDlg modal, aber Hintergrundtätigkeit laufen lassen

  Alt 12. Jul 2007, 11:50
Hallo,

ich habe folgendes Problem,

ich muss einen Ja / Nein Dialog erscheinen lassen, dieser soll modal angezeitgt werden,
in der Zeit wo dieser Dialog angezeigt wird, sollen bestimmte Kommunikationstätigkeiten im Hintergrund weiterlaufen,
das ist nicht weltbewegend, aber das Problem an dem modalen MessageDlg ist, dass es ja
alles was im Hintergrund läuft (wie z.B.: einen Timer) anhält...

Einen Thread will ich an der Stelle eigentlich nicht anwenden, der wäre ein wenig oversized...


Danke schonmal..
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MessageDlg modal, aber Hintergrundtätigkeit laufen lasse

  Alt 12. Jul 2007, 11:57
Moin DelphiManiac,

Zitat von DelphiManiac:
aber das Problem an dem modalen MessageDlg ist, dass es ja alles was im Hintergrund läuft (wie z.B.: einen Timer) anhält...
bei mir nicht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#3

Re: MessageDlg modal, aber Hintergrundtätigkeit laufen lasse

  Alt 12. Jul 2007, 11:58
Anscheinend geht
es doch, die Timerereignisse werden doch aufgerufen trotz MessageDlg!!!


Also SORRY nochmal


**********CLOSESD********************
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#4

Re: MessageDlg modal, aber Hintergrundtätigkeit laufen lasse

  Alt 12. Jul 2007, 11:59
Der Timer ist an einer anderen Stelle deaktiviert wordem


Mein Fehler....

trotzdem danke
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: MessageDlg modal, aber Hintergrundtätigkeit laufen lasse

  Alt 12. Jul 2007, 16:00
Moin DelphiManiac,

macht doch nichts.
Solche Fehler sind wohl jedem schon passiert.
(mir gerade erst gestern )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#6

Re: MessageDlg modal, aber Hintergrundtätigkeit laufen lasse

  Alt 12. Jul 2007, 16:48
Finde ich gut, das der Umgangston hier sehr freundschaftlich helfend ist,

das kenne ich von anderen Foren nicht so... das wird man sehr schnell angeblufft.
Und viele spielen sich sehr auf.

Das ist ja zum Glück hier nicht so.

Schönen Abend noch
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: MessageDlg modal, aber Hintergrundtätigkeit laufen lasse

  Alt 12. Jul 2007, 17:05
Moin DelphiManiac,

danke für das Lob.
Ich denke, dass ich hier für das ganze Team sprechen darf:
Wir gegen uns auch Mühe dass das so ist und bleibt.

Nicht zu vergessen:
Ohne unsere User die da mitspielen, geht das natürlich auch nicht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: MessageDlg modal, aber Hintergrundtätigkeit laufen lasse

  Alt 30. Okt 2009, 08:50
Hi,

ich kram den alten Thread nochmal aus

ich habe hier ein gleichartiges Problem und das einmal in einem Testprojekt weiter geprüft:

Delphi-Quellcode:
procedure TForm1.machwas;
var
  i: integer;
begin
  mmo.lines.add('Foo');
  for i := 0 to 300 do
  begin
    sleep(10);
    application.processmessages;
  end;
  mmo.lines.add('bar');
end;

procedure TForm1.TimerTimer(Sender: TObject);
begin
  if bInUse then
    Exit;

  bInUse := true;
  machwas;
  bInUse := false;
end;

procedure TForm1.btnClick(Sender: TObject);
begin
  form2.ShowModal;
end;

Wenn das Form2.Showmodal aufgerufen wird, während der TimerTimer gerade abgearbeitet wird, so wird diese Abarbeitung unterbrochen.
Der Timer wird zwar weiterhin neu aufgerufen, aber der aktuelle Timerdurchlauf wird erst nach dem Schließen des Formulars fortgesetzt. Kann man das irgendwie umgehen?

Grüße
Ansgar
  Mit Zitat antworten Zitat
r_amse_s

Registriert seit: 31. Jul 2004
107 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: MessageDlg modal, aber Hintergrundtätigkeit laufen lasse

  Alt 21. Nov 2009, 16:29
mein Problem ist, wie kann man z.B. eine Gauge in das modale Fenster laufen lassen, solange die Tätigkeit im Hauptform durchgeführt wird...das geht mit Timers leider nicht
vor allem dann, wenn die Tätigkeit im Hauptform blockierend sich auswirkt (greife über COM interface auf eine dll).

geht das überhaupt ohne mehreren threads? wie schaut sowas aus?

danke!
liebe Grüße
ramsi
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: MessageDlg modal, aber Hintergrundtätigkeit laufen lasse

  Alt 21. Nov 2009, 17:11
Es gibt nur eine VCL, welche sich um alle seine Fesnter, visuellen Komponenten und nebenbei auch noch alle anderen Messages an diese Fenster, bzw. den Hauptthread kümmert.

Wenn du eine blockierst, dann blockierst du alles.

ShowModal verarbeitet aber indern die Nachrichtenschleife (Application.ProgressMessages), weswegen andere Ereignisse, wie z.B. Timer noch laufen ... nur die Ereignisprozedur, in welcher das ShowModal aufgerufen wird, wird solange angehalten.
Auch eine Gauge sollte sich so ändern lassen.


Also wenn deine COM-Schnittstelle so blockierend wirkt, dann sollte sie in einen Thread ausgelagert werden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 13: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