![]() |
Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
Wenn ich mir ein folgendes kleines Testprogramm mache:
Form1 : Button -> Klick : Form2.Show; Form2 : Timer (Intervall 10000) -> OnTimer : Close; Klicke ich nun auf den Button des 1. Formulars, erscheint das 2. für 10 Sekunden und ist dann wieder weg. Fein so will ich das haben. Klicke ich nun auf den Button und danach den Windows-Button "Desktop anzeigen" und warte 10 Sekunden bevor ich mein Programm wieder anzeigen lasse, ist das 2. Formular weiterhin zu sehen und es lässt sich auch nicht mehr schließen. Dieses Verhalten habe ich mit XE und Windows 7 oder Windows XP. Hat jemand eine Idee warum das so ist und was man dagegen tun kann? |
AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
Ich habe mal Deinen Sourcecode mit meinem D7pe kompiliert und konnte beim Ausführen der EXE keinerleit Unregelmäßigkeiten festellen.
MfG |
AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
*push*
|
AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
Du könntest ja dein Testprogramm mal hochladen.
|
AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
Liste der Anhänge anzeigen (Anzahl: 1)
Kann ich gerne machen, sind ja eigentlich nur 2 Zeilen Code :-D
Delphi-Quellcode:
program Project10;
uses Forms, Unit9 in 'Unit9.pas' {Form9}, Unit10 in 'Unit10.pas' {Form10}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm9, Form9); Application.CreateForm(TForm10, Form10); Application.Run; end.
Delphi-Quellcode:
unit Unit9;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, unit10, ExtCtrls; type TForm9 = class(TForm) Button1: TButton; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form9: TForm9; implementation {$R *.dfm} procedure TForm9.Button1Click(Sender: TObject); begin Form10.show; end; procedure TForm9.Timer1Timer(Sender: TObject); begin Form10.hide; end; end.
Delphi-Quellcode:
object Form9: TForm9
Left = 0 Top = 0 Caption = 'Form9' ClientHeight = 337 ClientWidth = 635 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Button1: TButton Left = 224 Top = 158 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 0 OnClick = Button1Click end object Timer1: TTimer Interval = 10000 OnTimer = Timer1Timer Left = 280 Top = 54 end end |
AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
Was passiert, wenn Du statt Form10.hide Form10.close machst? Ich kann den Quellcode zwar gerade nicht testen, vermute aber, dass es daran liegen könnte.
|
AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
Close und Hide habe ich beides ausprobiert, ändert nichts am Verhalten.
|
AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
Bescheuerter WorkAround, aber funktioniert erstmal:
Delphi-Quellcode:
procedure TForm9.Timer1Timer(Sender: TObject);
var Merk : TWindowState; begin If not Application.Active then begin Merk := Application.MainForm.WindowState; Application.Minimize; Application.Restore; Form10.Close; Application.MainForm.WindowState := Merk; end else begin Form10.Close; end; |
AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
Hallo,
bei uns gab's mal Bedarf nach einem showmessage, das auch ohne drücken des OK-Buttons irgendwann wieder verschwand. Das wäre vllt. etwas ähnliches wie das was du brauchst? Ist aber schon ewig alt und bei uns nicht mehr in Gebrauch.
Delphi-Quellcode:
interface
type TFWarnMessage = class(TForm) Label: TLabel; procedure FormClose(Sender: TObject; var Action: TCloseAction); public procedure ShowWarning(msg: string; title: string); end; TWarn = class(TThread) private Warning: TFWarnMessage; protected procedure Execute; override; public constructor Create(msg, title: string); end; implementation procedure TFWarnMessage.FormClose(Sender: TObject; var Action: TCloseAction); begin action := caFree; end; procedure TFWarnMessage.ShowWarning(msg, title: string); begin Caption := title; Label.Caption := msg; Width := Label.Width + (2 * Label.Left); ClientHeight := Label.Height + (2 * Label.Top); left := random(Screen.Width - Width); top := random(Screen.Height - Height); Show; Application.ProcessMessages; end; constructor TWarn.Create(msg, title: string); begin inherited Create(true); Randomize; FreeOnTerminate := true; Warning := TFWarnMessage.Create(Application); Warning.ShowWarning(msg, title); Resume; end; procedure TWarn.Execute; begin inherited; Sleep(5000); Warning.Close; Warning.Free; Terminate; end; |
AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
Danke Jumpy, ich hab das gerade mal ausprobiert, allerdings bekomme ich auch dieses Fenster nie wieder zu, wenn ich bei geöffnetem Zustand mit ToggleDesktop (Windowstaste+D) den Desktop aktiviere und 5 Sekunden warte bevor ich das Programm wieder in der Taskbar anklicke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 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