Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Desktop anzeigen -> Fenster lässt sich nicht mehr schließen (https://www.delphipraxis.net/181529-desktop-anzeigen-fenster-laesst-sich-nicht-mehr-schliessen.html)

baumina 22. Aug 2014 10:46

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?

pelzig 22. Aug 2014 11:30

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

baumina 25. Aug 2014 06:01

AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
 
*push*

himitsu 25. Aug 2014 06:14

AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
 
Du könntest ja dein Testprogramm mal hochladen.

baumina 25. Aug 2014 06:24

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

TForm1 25. Aug 2014 08:08

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.

baumina 25. Aug 2014 08:45

AW: Desktop anzeigen -> Fenster lässt sich nicht mehr schließen
 
Close und Hide habe ich beides ausprobiert, ändert nichts am Verhalten.

baumina 25. Aug 2014 10:11

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;

Jumpy 25. Aug 2014 11:33

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;

baumina 25. Aug 2014 12:19

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 23:52 Uhr.
Seite 1 von 2  1 2      

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