AGB  ·  Datenschutz  ·  Impressum  







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

Wie Hauptfenster in Vordergrund bringen?

Ein Thema von iphi · begonnen am 21. Nov 2010 · letzter Beitrag vom 11. Dez 2010
Antwort Antwort
wolfgang_SV

Registriert seit: 9. Nov 2007
Ort: Neumünster
39 Beiträge
 
#1

AW: Wie Hauptfenster in Vordergrund bringen?

  Alt 21. Nov 2010, 15:10
Was heißt eigentlich regelkonform programmieren ?

Ich kann dazu nur sagen, dass es im Windows-System und auch
im Delphi-System so viele Unregelmäßigkeiten und auch regelrechte
Fehler gibt, dass man gar nicht umhin kommt , unkonventionelle Wege zu
beschreiten, die vielleicht nicht regelkonform erscheinen, aber letztendlich zu Ergebnissen führen.
  Mit Zitat antworten Zitat
wolfgang_SV

Registriert seit: 9. Nov 2007
Ort: Neumünster
39 Beiträge
 
#2

AW: Wie Hauptfenster in Vordergrund bringen?

  Alt 21. Nov 2010, 15:30
Zitat:
weil es hierbei zu unerwünschten Nebeneffekten kommen kann, die gar nicht erwünscht sind.
So was nennt man z.B. eine tautologische Aussage..
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Wie Hauptfenster in Vordergrund bringen?

  Alt 21. Nov 2010, 15:46
Was heißt eigentlich regelkonform programmieren ?

Ich kann dazu nur sagen, dass es im Windows-System und auch
im Delphi-System so viele Unregelmäßigkeiten und auch regelrechte
Fehler gibt, dass man gar nicht umhin kommt , unkonventionelle Wege zu
beschreiten, die vielleicht nicht regelkonform erscheinen, aber letztendlich zu Ergebnissen führen.
Viele (nicht alle) unkonventionelle Wege haben ihren Ursprung aber auch vom Nicht-Wissen oder festhalten an "das haben wir immer so gemacht".

In diesem speziellen Fall wird aber ein Designfehler mit unkonventionellen Mitteln geheilt.

Es soll jeder machen wie er möchte, mein Hinweis ist ja nur, dass man sich nicht wundert, wenn man irgendwann mehr Heiler als Programmierer ist.
Wer sich doch wundert ist trotzdem kein Wunder-Heiler

Zitat:
weil es hierbei zu unerwünschten Nebeneffekten kommen kann, die gar nicht erwünscht sind.
So was nennt man z.B. eine tautologische Aussage..
und es fällt auf
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wie Hauptfenster in Vordergrund bringen?

  Alt 21. Nov 2010, 16:19
[OT] Ich wünsche mir mehr Wunschdenken, damit die unerwünschten Nebeneffekte nicht erwünscht sind, sondern verwünscht werden, verwünscht nochmal [/OT]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
266 Beiträge
 
Delphi 7 Personal
 
#5

AW: Wie Hauptfenster in Vordergrund bringen?

  Alt 11. Dez 2010, 10:37
Jetzt habe ich noch ein gleichartiges Problem:

Ich habe jetzt ZWEI Message-Boxen hintereinander im OnCreate Event Handler.
Die erste erscheint wie sie soll im Vordergrund. Die zweite verschwindet allerdings im Hintergrund.
Das Hauptfenster erscheit dann Dank Eurer Hilfe wieder im Vordergrund.

Wie kann ich bewerkstelligen, dass die zweite Messagebox auch im Vordergrund sichtbar wird?

Hier mein Testcode:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
With Application do
  begin
   NormalizeTopMosts;
   MessageBox('Hello', 'IMPORTANT NOTICE!', MB_OKCANCEL);
   RestoreTopMosts;
  end;
With Application do
  begin
   NormalizeTopMosts;
   MessageBox('2nd. try', '2nd. IMPORTANT NOTICE!', MB_OKCANCEL);
   RestoreTopMosts;
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
windows.SetForegroundWindow(handle);
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: Wie Hauptfenster in Vordergrund bringen?

  Alt 11. Dez 2010, 10:43
Hm, an der Stelle bin ich dann eher der Meinung, dass man die zwei Message-Boxen nacheinander einblenden sollte. Oder man nutzt eine andere Möglichkeit, dem Benutzer etwas mitzuteilen. Stell dir mal vor, du öffnest ein Programm und da poppt eine Box nach der anderen auf, die eine blinkt mehr als die andere -- unästhetisch.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
266 Beiträge
 
Delphi 7 Personal
 
#7

AW: Wie Hauptfenster in Vordergrund bringen?

  Alt 11. Dez 2010, 12:34
Zitat:
Hm, an der Stelle bin ich dann eher der Meinung, dass man die zwei Message-Boxen nacheinander einblenden sollte.
Das tue ich ja auch. Erst geht die eine auf, und wenn die geschlossen wird, dann geht die andere auf, allerdings leider im Hintergrund. Und zu diesem Zeitpunkt gibts noch nicht mal eine Ikone auf der Taskbar, d.h. der Nutzer bekommt davon nichts mit.

Es muss doch irgendwie möglich sein, zwei MessageBoxes nacheinander so auf den Bildschirm zu bringen, dass man sie auch sieht!???
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
440 Beiträge
 
#8

AW: Wie Hauptfenster in Vordergrund bringen?

  Alt 11. Dez 2010, 14:03
Ich meine, dass es sich hier um ein spezielles Fehlerverhalten von Delphi 6 handelt. Bei Delphi 2007 ist das Verhalten wieder anders. Deshalb würde ich diesen workaround mit Vorsicht genießen.
Ich würde da mal folgenden Ansatz in die Diskussion werfen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  {$if RTLVersion<18}
  windows.SetForegroundWindow(Application.handle);
  {$ifend}
  Application.MessageBox('Hello', 'IMPORTANT NOTICE!', MB_OKCANCEL);
  Application.MessageBox('2nd. try', '2nd. IMPORTANT NOTICE!', MB_OKCANCEL);
end;
  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 07:21 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-2025 by Thomas Breitkreuz