![]() |
Message gelöcht ohne timer
Hi kann man es realisieren
Das eine Meldung aufgeht und nach 2 sekunden wieder weg ohne timer.(und ohne auf ok zu drücken) bei der zeile 7
Delphi-Quellcode:
procedure TForm7.löschenClick(Sender: TObject);
begin if MessageDlgPos('Wollen Sie diesen Vertretungsplan wirklich löschen? ',mtInformation,[mbYes,mbNo],0,290,300) = mrYes then begin DeleteFile(FileListBox1.FileName); Showmessage('Datei wurde gelöscht'); // Zeile 7 end else else begin if MessageDlgPos('Es wurde kein Vertretungsplan ausgewählt' +'',mtInformation,[mbok],0,260,200) = mrok then end; end; |
Re: Message gelöcht ohne timer
:gruebel:
Kannst du uns noch den Rest zeigen? Oder wie kommts, dass hier zwei "else" hintereinanderstehen und deine Vorhersage nicht eintritt? Woher kommen denn die 2 Sekunden? |
Re: Message gelöcht ohne timer
Delphi-Quellcode:
Die 2 sekunden hab einfach mal so geschrieben
procedure TForm7.LöschenClick(Sender: TObject);
begin if FileListBox1.Items.Count > 0 then begin if MessageDlgPos('Wollen Sie diesen Vertretungsplan wirklich löschen? ',mtInformation,[mbYes,mbNo],0,290,300) = mrYes then begin DeleteFile(FileListBox1.FileName); Showmessage('Datei gelöscht'); end else ComboBox4.SetFocus; end else begin if MessageDlgPos('Es wurde kein Vertretungsplan ausgewählt' +'',mtInformation,[mbok],0,260,200) = mrok then end; |
Re: Message gelöcht ohne timer
ich würde sagen mit Delay(2000) oder sleep(2000) + Keybd_event
|
Re: Message gelöcht ohne timer
naja mit sleep ist das nicht so gut oder
|
Re: Message gelöcht ohne timer
Ach, das war eine Frage :wall: Es sah aus, wie eine Aussage.
Selbst mit Timer ist es nicht ganz einfach einen Messagedlg zu unterbrechen. Messagedlg ist dafür nicht gedacht. Bau dir deine eigenes Fenster zusammen und zeige dies an. Allerdings brauchst du da einen Timer. Irgendwie musst du ja die Zeit messen. :gruebel: (Achte darauf, dass dieses Fenster nicht gleich zu Programmstart erzeugt wird!) Der Messagedlg ist ein Formular was Modal angezeigt wird. |
Re: Message gelöcht ohne timer
Ah gut das war meine Frage geht also nicht
das hätte ich dann als nächstes gemacht ein eigenes fenster gebaut ist halt sehr umständlich für ne kleine meldung das die datei gelöscht wurde aber danke |
Re: Message gelöcht ohne timer
Du kannst statt eines eigenen Formulars eben auch in den Components von Application nach dem Messagedlg suchen und ihn löschen.
Edit: Im Event des Timers :mrgreen: |
Re: Message gelöcht ohne timer
na ich glaube das hört sich jetzt noch komplizierter an
ich mach es dann lieber mit der neuen form oder mit einem Panel |
Re: Message gelöcht ohne timer
Hallo,
alle MessageDlgX rufen intern ja CreateMessageDialog auf, um den Dialog zu erzeugen. Return-Wert ist TForm und muss noch mit ShowModal aufgerufen werden. Ein Free oder .Close der Variable sollte eigentlich klappen. also
Delphi-Quellcode:
so in etwa
MyDlg: TForm;; // nicht lokal, sondern direkt im aufrufenden Formular definieren.
procedure TForm1.DoShowMessageDlg; var iDlgResult: Word; begin MyDlg:= CreateMessageDialog(... ); Timer1.Enabled:= True; iDlgResult:= MyDlg.ShowModal; if MyDlg<>NIL then begin if iDlgResult ... end; end; procedure TForm1.OnTimer; begin FreeAndNIL(MyDlg); end; Heiko |
Re: Message gelöcht ohne timer
Nö, eigentlich nicht:
Den timer setzt du vor dem Befehl Messagedlg auf enabled und das Event sieht so aus
Delphi-Quellcode:
Damit testest du auf den Titel, oder du testest jedes Fenster auf ein Label und auf dessen Inhalt:
procedure TForm1.Timer1Timer(Sender: TObject);
var i,j:integer; begin for i:=0 to application.ComponentCount-1 do if application.Components[i] is TForm then begin if TForm(application.Components[i]).Caption='Informationen' then begin TForm(application.Components[i]).ModalResult:=mryes; //oder was du hier willst timer1.enabled:=false; exit; end; end; end;
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var i,j:integer; begin for i:=0 to application.ComponentCount-1 do if application.Components[i] is TForm then begin for j:=0 to application.Components[i].Componentcount-1 do if application.Components[i].Components[j] is TLabel then begin if TLabel(application.Components[i].Components[j]).Caption= 'Wollen Sie diesen Vertretungsplan wirklich löschen? ' then begin TForm(application.Components[i]).ModalResult:=mryes; timer1.enabled:=false; exit; end; end; end; end; |
Re: Message gelöcht ohne timer
Was macht denn das für einen Sinn? Was soll ein Benutzer mit einem Dialog anfangen, der noch zwei Sekunden wieder verschwindet? Er wird wohl weder den Text lesen können, noch wird er auf den Dialog reagieren können. Wozu also?
|
Re: Message gelöcht ohne timer
@Lucky:
Zitat:
|
Re: Message gelöcht ohne timer
Hallo,
wenn es sich um einen unbedeutenden Hinweis handelt, macht es schon manchmal Sinn. Sieht man doch bei bestimmten Programmen auch, die zeigen allerdings dann noch die verbleibenden Sekunden an (nein, ich meine jetzt nicht das "Datei-Kopieren"). "Achtung, dieses Fenster zerstört sich in 5 Sekunden selbst" *Klirr* "Glaser anrufen ? ja, nein, vielleicht" ;) Heiko |
Re: Message gelöcht ohne timer
Zitat:
|
Re: Message gelöcht ohne timer
Es soll einfach nur eine message kommen die datei wurde gelöscht und soll dan wieder verschwinden ohne das man mit ok bestätigen muss
|
Re: Message gelöcht ohne timer
Hallo,
naja dazu würde ich kein MessageDlg benutzen, es soll ja eine Info angezeigt und trotzdem was gemacht werden, quasi SemiModal. Siehe mein Posting hier ![]() Heiko |
Re: Message gelöcht ohne timer
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Message gelöcht ohne timer
bei der DB gibts ja auch keine durchsage "Achtung,Achtung! Der Zug nach Hinterkrautsheim hat keine 15 minuten verspätung" :wink:
|
Re: Message gelöcht ohne timer
:thumb:
ich sag ja das forum ist geil hier kannst auch noch lachen aber ich gebe mich geschlagen da ich sowieso net der beste programmierer bin und es nur arbeit macht lass iches einfach sein :mrgreen: :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 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