AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi modales Fenster ohne Benutzerakt. selbst schliessen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

modales Fenster ohne Benutzerakt. selbst schliessen lassen

Ein Thema von DelphiManiac · begonnen am 22. Jan 2007 · letzter Beitrag vom 22. Jan 2007
Antwort Antwort
Seite 2 von 2     12   
DelphiManiac

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

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 14:28
Mein Problem jetzt ist aber, durch die WindowsMessage ist
das Modalresult immer 2!!

Auch wenn ich es vorher auf (mrOK) setzte

...
  Mit Zitat antworten Zitat
DelphiManiac

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

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 14:59
Er schliesst das Fenster nicht, wenn ich den Button drücke,
erst beim 2. mal drücken... komisch..

Ich habe die Steuervariable bUserCancel mit eingebaut, bringt aber auch nix...

Irgendwo habe ich einen Denkfehler.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 15:06
Hallo,

wenn ich deine Vorgaben nehme, dann würde ich so vorgehen:

Delphi-Quellcode:
type
  TBusyForm = class(TForm)
    Button1: TButton;
  private
    nTicks: Cardinal;
    FOnIdle: TIdleEvent;
    procedure OnIdle(Sender: TObject; var Done: Boolean);
  public
    function Execute: Boolean;
  end;

var
  BusyForm: TBusyForm;

implementation

{$R *.dfm}

function TBusyForm.Execute: Boolean;
begin
  nTicks := GetTickCount;
  FOnIdle := Application.OnIdle;
  Application.OnIdle := OnIdle;
  Result := ShowModal = mrOK;
  Application.OnIdle := FOnIdle;
end;

procedure TBusyForm.OnIdle(Sender: TObject; var Done: Boolean);
begin
  Done := (GetTickCount - nTicks) >= 5000;
  if Done then
    ModalResult := mrOK;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
DelphiManiac

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

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 15:16
@marabu

Hey Danke für deinen Quellcode.
Leider ist es nicht genau dass was ich suche, liegt wohl daran, dass ich mich nicht genau genug ausgedrückt habe,
ich will das die Form durch 2 Sachen geschlossen werden kann:

1. 25 Bytes im Eingang der Schnittstelle dann soll das modalresult mrOK sein
2. Benutzer klickt auf abbrechen dann soll das modalresult mrCancel sein.

danke
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 15:47
Die 25 Byte aus deiner Schnittstelle musst du selbst einlesen, z.B. in der Idle-Routine.
Und den Button mit ModalResult = mrCancel kannst du ruhig noch mit auf die Form setzen.
Du schaffst das.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 15:56
Hallo,

die Tatsache, dass das Auslesen erfolgreich war,
packst du in eine zusätzliche Boolean-Variable.

WM_CLOSE erzeugt ja ein Cancel.


Heiko
Heiko
  Mit Zitat antworten Zitat
DelphiManiac

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

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 16:03
Achso jetzt verstehe ich (Online-Hilfe sei dank),

was du meinst, also ich soll ein OnIdle(Wenn die Anwendung im Leerlauf ist) Ereignis erstellen.
Das Alte Ereignis sichern das neue zuweisen und am Ende das Alte wieder zuweisen.

Gut aber wann mach ich dass, bzw wo rufe ich am Besten die Execute Methode auf?

Gracias
  Mit Zitat antworten Zitat
DelphiManiac

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

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 16:05
@hoika

Ja stimmt, das WM_Close erzeugt ein Cancel.
Wie wird das denn intern mit dem modalResult:= XXX gehandelt? Weißt du dass zufällig, wird das auch über eine
Windows Message gemacht?

Ja ich könnte auf das Modalresult komplett verzichten und eine eigene Variable setzten. Wäre wohl die einfachste Lösung,
aber irgendwie wollte ich dass halt mit dem ModalResult lösen.

Wenn ichs gar net hin bekomme. dann mach ich es mit der eigenen Variable und der Windows Message (WM_CLOSE).

Danke
  Mit Zitat antworten Zitat
DelphiManiac

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

Re: modales Fenster ohne Benutzerakt. selbst schliessen lass

  Alt 22. Jan 2007, 16:37
Hallo @all

habe das Problem mit einer Formvariablen gelöst.

Setze jetzt beim Manuellen (Benutzergesteuerten)-Abbruch eine Variable
isClosedByUser und überprüfe sie dann nachdem die Form geschlossen wurde.

Danke euch allen und noch einen schönen Tag.

Gruß DelphiManiac
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:57 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