AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi MessageBox onTop bei aufruf möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

MessageBox onTop bei aufruf möglich?

Ein Thema von BAMatze · begonnen am 20. Mai 2009 · letzter Beitrag vom 20. Mai 2009
Antwort Antwort
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

MessageBox onTop bei aufruf möglich?

  Alt 20. Mai 2009, 10:26
Also meine Messagebox mit einer Fehlermeldung liegt leider beim Aufrufen hinter meinem SplashScreen. Kann ich es irgendwie beim Aufruf schon zwingen onTop (bringtofront) zu gehen?
2. Account Sero
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

Re: MessageBox onTop bei aufruf möglich?

  Alt 20. Mai 2009, 10:35
Dein SplashScreen ist aber nicht auf StayOnTop, oder?
Wenn doch: Wen willst du denn mit dem Programm ärgern?

Du kannst mittels Application.NormalizeTopMosts diese Fenster vorher zurückpfeifen und nach dem Dialog mit RestoreTopMosts wiederherstellen.

Benutzen würde ich so ein Tool allerdings nicht. Ein SplashScreen auf StayOnTop ist ungefähr eine der nervigsten Sachen, die es gibt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: MessageBox onTop bei aufruf möglich?

  Alt 20. Mai 2009, 10:39
Zitat von jaenicke:
Dein SplashScreen ist aber nicht auf StayOnTop, oder?
Ne ist nicht StayonTop, hab ebend selber nochmal schnell den Quellcode überflogen und auch suchen lassen. Ärgern will ich ja keinen damit . Deswegen hab ich mich auch gewundert, dass die MessageBox nicht im Vordergrund erscheint.

Bringt mir das NormalizeTopMosts/ RestoreTopMosts dann etwas, wenn das Splash nicht auf StayonTop ist?
2. Account Sero
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

Re: MessageBox onTop bei aufruf möglich?

  Alt 20. Mai 2009, 10:42
Dann machst du etwas bei der Anzeige des SplashScreen ungünstig. Wenn ich das Splashfenster normal erzeuge und anzeige, dann werden alle MessageBoxen davor angezeigt. (Deshalb bin ich ja nur auf die Idee gekommen. )

Beispiel:
Delphi-Quellcode:
  frmSplashScreen := TfrmSplashScreen.Create(nil);
  frmSplashScreen.Show;
  Application.MessageBox('Test', 'Test', 0);
  frmSplashScreen.Close; // Action in OnClose auf caFree
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: MessageBox onTop bei aufruf möglich?

  Alt 20. Mai 2009, 10:55
Ich zeige dir mal die Erzeugung meines SplashScreens, vieelicht siehst du etwas auffälliges:

Delphi-Quellcode:
procedure TLoaderForm.FormActivate(Sender: TObject);
var i: Integer;
    oleVoice: OLEVariant;
begin
  // wird aufgerufen, wenn Form auf dem Schirm "sichtbar" ist. (ist ja noch transparent)
  // In Schleife einblenden
  for i := 0 to 230 do
  begin
    LoaderForm.AlphaBlendValue := i;
    Application.ProcessMessages;
  end;
  sleep(500); // eine halbe Sek. warten (kann natürlich entfernt werden)
end;

procedure TLoaderForm.FormClose(Sender: TObject; var Action: TCloseAction);
var i: Integer;
    
begin
  // Wenn Form geschlossen wird, ausblenden und "Self.Free" machen
  for i := 230 downto 0 do
  begin
    LoaderForm.AlphaBlendValue := i;
    Application.ProcessMessages;
  end;
  Action := caFree;
end;

procedure TLoaderForm.FormCreate(Sender: TObject);
begin
  AnzeigeLabel.Caption := '';
end;

procedure TLoaderForm.FormShow(Sender: TObject);
begin
  LoaderForm.AlphaBlendValue := 0;
  LoaderForm.AlphaBlend := true; // Form ist nun trasparent (=unsichtbar)
end;
auf caFree setze ich das erst wieder bei der Destroy-Funktion, kann es eventuell daran liegen? Die LoaderForm wird geladen, nachdem die HauptForm unsichtbar geöffnet wird. Sieht in der Create-Fkt so aus:

Delphi-Quellcode:
procedure TBedienForm.FormCreate(Sender: TObject);
begin
  BedienForm.Enabled := false;
  LoaderForm := TLoaderForm.Create(Application);
  LoaderForm.Show;
  LoaderForm.Refresh;
end;
2. Account Sero
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

Re: MessageBox onTop bei aufruf möglich?

  Alt 20. Mai 2009, 11:38
Eventuell solltest du nicht Application sondern dein Hauptfenster oder nil als Besitzer angeben beim Erzeugen des Splashscreens.

OnActivate wird ja nicht unbedingt nur einmal aufgerufen, aber genauer habe ich gerade keine Zeit zu überlegen was da in der Form schief gehen kann. Ich werde es mir heute Abend, wenn ich wieder zu Hause bin anschauen, dann sehe ich sicher woran das liegt.

Benutzt du eigentlich Application.MessageBox?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: MessageBox onTop bei aufruf möglich?

  Alt 20. Mai 2009, 12:16
Also wenn ich als Owner die MainForm nehme, ändert sich ersteinmal nichts, also die MessageBox bleibt immer noch im Hintergrund. Auch die Application.Message ändert nichts. Aber mir ist aufgefallen, dass das SplashScreen im Vordergrund bleibt, wenn ich hier FireFox anklicke, also muss doch irgendwo versteckt noch ein StayOnTop irgendwio sein.

Edit1: Ok hab das StayOnTop gefunden. Hatte ich etwas versteckt in meiner MainForm reingeschrieben.

Thanks @jaenicke für die Hilfe

MfG
BAMatze
2. Account Sero
  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 22:08 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