| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Messagebox, som lukker selv efter 5 sek. Fra : Lars Holm Thomsen | 
  Dato :  22-09-04 09:38 |  
  |   
            Hvordan gør jeg det?
 
 Altså:
 En besked om et eller andet vises på skærmen! Efter et vist stykke tid
 lukkes besked-boxen automatisk!
 
 Lars
  
            
             |   |   
            
        
 
            
         
           Thor (22-09-2004) 
         
	
            | Kommentar Fra : Thor | 
  Dato :  22-09-04 14:03 |  
  |   
            Hermed en kort, ikke specielt elegant løsning, men det bør virke:
 
 Du laver selv en form, der viser meddelelsen.
 
 I form.activate:
 starttid := gettickcount;
 timer1.enabled := true;
 
 timer1ontimer:
 
 if gettickcount-starttid > 10000  then // 10 sekunder;
 begin
    close;
 end;
 
 form1.deactivate:
 
 timer1.enabled := false
 
 
 
 "Lars Holm Thomsen" <aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> skrev i en
 meddelelse news:u8e2l0169inc3fcgaj35je63q2uf8cdqjq@4ax.com...
 > Hvordan gør jeg det?
 >
 > Altså:
 > En besked om et eller andet vises på skærmen! Efter et vist stykke tid
 > lukkes besked-boxen automatisk!
 >
 > Lars
 
 
  
            
             |   |   
            
        
 
            
         
           Harald (22-09-2004) 
         
	
            | Kommentar Fra : Harald | 
  Dato :  22-09-04 14:13 |  
  |   
            "Thor" <thor@thor.thor> skrev i en meddelelse 
 news:cirsue$1jv9$1@news.cybercity.dk...
 > Hermed en kort, ikke specielt elegant løsning, men det bør virke:
 >
 > Du laver selv en form, der viser meddelelsen.
 >
 > I form.activate:
 > starttid := gettickcount;
 > timer1.enabled := true;
 >
 > timer1ontimer:
 >
 > if gettickcount-starttid > 10000  then // 10 sekunder;
 > begin
 >   close;
 > end;
 >
 > form1.deactivate:
 >
 > timer1.enabled := false
 
 Hvorfor ikke bare sætte timer.interval=10000 i stedet for at bruge 
 gettickcount?
 
 /HK
 
 
  
            
             |   |   
            
        
 
            
         
            Thor (22-09-2004) 
         
	
            | Kommentar Fra : Thor | 
  Dato :  22-09-04 14:20 |  
  |   
            Hej Harald
 Det kan man sikkert også, men nogen gange synes jeg,
 at timereventen køres lige efter enabled sættes lig true, uanset
 intervallets længde.
 
 Hilsen Thomas
 
 
  
            
             |   |   
            
        
 
            
         
           Lars Holm Thomsen (22-09-2004) 
         
	
            | Kommentar Fra : Lars Holm Thomsen | 
  Dato :  22-09-04 14:19 |  
  |   
            On Wed, 22 Sep 2004 15:03:04 +0200, "Thor" <thor@thor.thor> wrote:
 
 >Hermed en kort, ikke specielt elegant løsning, men det bør virke:
 >
 >Du laver selv en form, der viser meddelelsen.
 >
 >I form.activate:
 >starttid := gettickcount;
 >timer1.enabled := true;
 >
 >timer1ontimer:
 >
 >if gettickcount-starttid > 10000  then // 10 sekunder;
 >begin
 >   close;
 >end;
 >
 >form1.deactivate:
 >
 >timer1.enabled := false
 
 Ja, okay, jeg burde være mere præcis:
 
 Jeg kan sagtens få det til med en form, men.
 
 Det jeg søger er noget i stil med :
 
 ShowMessage('Programmet har til orientering gjort det og det!');
 
 Men dette besked bliver jo stående til brugeren trykker ok! Er der ikke
 noget lignende, som bare lukker selv efter en vis tid??
 
 Lars
  
            
             |   |   
            
        
 
            
         
           Harald (22-09-2004) 
         
	
            | Kommentar Fra : Harald | 
  Dato :  22-09-04 16:15 |  
  |   
            "Lars Holm Thomsen" <aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> skrev i en 
 meddelelse news:u8e2l0169inc3fcgaj35je63q2uf8cdqjq@4ax.com...
 > Hvordan gør jeg det?
 >
 > Altså:
 > En besked om et eller andet vises på skærmen! Efter et vist stykke tid
 > lukkes besked-boxen automatisk!
 
 Her er et forslag, jeg syntes det virker lidt fusket men det virker (ser det 
 ud til), brugeren kan så vælge at trykke OK eller vente 10 sek.
 
 En form med en Button på og en Timer hvor Enabled=false og Interval=10000
 
 ------------
 
 function TForm1.MinBeskedBox(Tekst : PChar) : integer;
 begin
   Timer1.Enabled:=true;
   result:=Application.MessageBox(PChar(Tekst),'Info', MB_ICONASTERISK);
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
  MinBeskedBox('Noget info');
 end;
 
 procedure TForm1.Timer1Timer(Sender: TObject);
 var
   MbHwnd: longword;
 begin
  Timer1.Enabled:=false;
   MbHwnd:=FindWindow(MAKEINTRESOURCE(WC_DIALOG), 'Info');
   if MbHwnd<>0 then
   DestroyWindow(MbHwnd);
 end;
 
 ---------------
 
 Mvh
 HK
 
 
  
            
             |   |   
            
        
 
            
         
           Lars Holm Thomsen (22-09-2004) 
         
	
            | Kommentar Fra : Lars Holm Thomsen | 
  Dato :  22-09-04 17:28 |  
  |   
            On Wed, 22 Sep 2004 17:15:27 +0200, "Harald"
 <news10@-REMOVE-THIS-kroning.dk> wrote:
 
 
 >Her er et forslag, jeg syntes det virker lidt fusket men det virker (ser det 
 >ud til), brugeren kan så vælge at trykke OK eller vente 10 sek.
 >
 >En form med en Button på og en Timer hvor Enabled=false og Interval=10000
 >
 >------------
 >
 >function TForm1.MinBeskedBox(Tekst : PChar) : integer;
 >begin
 >  Timer1.Enabled:=true;
 >  result:=Application.MessageBox(PChar(Tekst),'Info', MB_ICONASTERISK);
 >end;
 >
 >procedure TForm1.Button1Click(Sender: TObject);
 >begin
 > MinBeskedBox('Noget info');
 >end;
 >
 >procedure TForm1.Timer1Timer(Sender: TObject);
 >var
 >  MbHwnd: longword;
 >begin
 > Timer1.Enabled:=false;
 >  MbHwnd:=FindWindow(MAKEINTRESOURCE(WC_DIALOG), 'Info');
 >  if MbHwnd<>0 then
 >  DestroyWindow(MbHwnd);
 >end;
 >
 Tak skal du have - det virker fint!
 
 Jeg tænker på on det ikke er muligt at indlemme timeren i funktionen?
 Det er jo ikke det store problem at create en timer runtime, men kan jeg
 også create en TimerTimer metode?
 
 Lars
  
            
             |   |   
            
        
 
            
         
            Harald (22-09-2004) 
         
	
            | Kommentar Fra : Harald | 
  Dato :  22-09-04 17:44 |  
  |   
            "Lars Holm Thomsen" <aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> skrev i en 
 meddelelse news:9f83l0lf29ihuskscvt8s4c252iiccqpne@4ax.com...
 > On Wed, 22 Sep 2004 17:15:27 +0200, "Harald"
 > <news10@-REMOVE-THIS-kroning.dk> wrote:
 >
 >
 >>Her er et forslag, jeg syntes det virker lidt fusket men det virker (ser 
 >>det
 >>ud til), brugeren kan så vælge at trykke OK eller vente 10 sek.
 >>
 >>En form med en Button på og en Timer hvor Enabled=false og Interval=10000
 >>
 >>------------
 >>
 >>function TForm1.MinBeskedBox(Tekst : PChar) : integer;
 >>begin
 >>  Timer1.Enabled:=true;
 >>  result:=Application.MessageBox(PChar(Tekst),'Info', MB_ICONASTERISK);
 >>end;
 >>
 >>procedure TForm1.Button1Click(Sender: TObject);
 >>begin
 >> MinBeskedBox('Noget info');
 >>end;
 >>
 >>procedure TForm1.Timer1Timer(Sender: TObject);
 >>var
 >>  MbHwnd: longword;
 >>begin
 >> Timer1.Enabled:=false;
 >>  MbHwnd:=FindWindow(MAKEINTRESOURCE(WC_DIALOG), 'Info');
 >>  if MbHwnd<>0 then
 >>  DestroyWindow(MbHwnd);
 >>end;
 >>
 > Tak skal du have - det virker fint!
 >
 > Jeg tænker på on det ikke er muligt at indlemme timeren i funktionen?
 > Det er jo ikke det store problem at create en timer runtime, men kan jeg
 > også create en TimerTimer metode?
 
 Sådan kan du create en timer og sætte OnTimer:
 
  Timer1:=TTimer.Create(self);
  Timer1.OnTimer:=Timer1Timer;
 
 I Timer1Timer kan du så rette linien:
 Timer1.Enabled:=false;
 til
 (Sender as TTimer).Enabled:=false;
 
 /HK
 
 
 
  
            
             |   |   
            
        
 
            
         
             Lars Holm Thomsen (22-09-2004) 
         
	
            | Kommentar Fra : Lars Holm Thomsen | 
  Dato :  22-09-04 23:18 |  
  |   
            On Wed, 22 Sep 2004 18:43:56 +0200, "Harald"
 <news10@-REMOVE-THIS-kroning.dk> wrote:
 
 
 >>
 >> Jeg tænker på on det ikke er muligt at indlemme timeren i funktionen?
 >> Det er jo ikke det store problem at create en timer runtime, men kan jeg
 >> også create en TimerTimer metode?
 >
 >Sådan kan du create en timer og sætte OnTimer:
 >
 > Timer1:=TTimer.Create(self);
 > Timer1.OnTimer:=Timer1Timer;
 >
 >I Timer1Timer kan du så rette linien:
 >Timer1.Enabled:=false;
 >til
 >(Sender as TTimer).Enabled:=false;
 
 Jeg ønsker at kunne inkludere hele koden i en procedure, som kan smides
 i en unit og køres - uden at skulle deklarere metoder under TForm!
 
 Det med at create selve timeren går fint og kan kodemæssigt holdes
 indenfor proceduren, men mht timer.ontimer kan jeg ikke få det til, hvis
 ikke metoden bliver deklareret udenfor proceduren i Interface-afsnittet!
 
 Håber at du forstår!
 
 Kan det ikke lade sig gøre?
 
 Lars
  
            
             |   |   
            
        
 
            
         
              Harald (23-09-2004) 
         
	
            | Kommentar Fra : Harald | 
  Dato :  23-09-04 15:46 |  
  |   
            "Lars Holm Thomsen" <aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> skrev i en 
 meddelelse news:o6u3l0la9n3h6prhgkotq3ak8k2jfp8qeo@4ax.com...
 > On Wed, 22 Sep 2004 18:43:56 +0200, "Harald"
 > <news10@-REMOVE-THIS-kroning.dk> wrote:
 >
 >
 >>>
 >>> Jeg tænker på on det ikke er muligt at indlemme timeren i funktionen?
 >>> Det er jo ikke det store problem at create en timer runtime, men kan jeg
 >>> også create en TimerTimer metode?
 >>
 >>Sådan kan du create en timer og sætte OnTimer:
 >>
 >> Timer1:=TTimer.Create(self);
 >> Timer1.OnTimer:=Timer1Timer;
 >>
 >>I Timer1Timer kan du så rette linien:
 >>Timer1.Enabled:=false;
 >>til
 >>(Sender as TTimer).Enabled:=false;
 >
 > Jeg ønsker at kunne inkludere hele koden i en procedure, som kan smides
 > i en unit og køres - uden at skulle deklarere metoder under TForm!
 >
 > Det med at create selve timeren går fint og kan kodemæssigt holdes
 > indenfor proceduren, men mht timer.ontimer kan jeg ikke få det til, hvis
 > ikke metoden bliver deklareret udenfor proceduren i Interface-afsnittet!
 
 Mht. OnTimer så er det en TNotifyEvent og her siger hjælpen:
 
 Delphi syntax:
 type TNotifyEvent = procedure (Sender: TObject) of object;
 
 hvilket betyder at proceduren skal deklareres i en klasse, så hvis du vil 
 have det hele samlet i en unit er du nød til at lave en ny class som du så 
 kan smide det hele ind i, vil jeg mene.
 
 /HK
 
 
  
            
             |   |   
            
        
 
            
         
               Lars Holm Thomsen (23-09-2004) 
         
	
            | Kommentar Fra : Lars Holm Thomsen | 
  Dato :  23-09-04 15:53 |  
  |   
            On Thu, 23 Sep 2004 16:45:35 +0200, "Harald"
 <news10@-REMOVE-THIS-kroning.dk> wrote:
 
 
 >
 >Mht. OnTimer så er det en TNotifyEvent og her siger hjælpen:
 >
 >Delphi syntax:
 >type TNotifyEvent = procedure (Sender: TObject) of object;
 >
 >hvilket betyder at proceduren skal deklareres i en klasse, så hvis du vil 
 >have det hele samlet i en unit er du nød til at lave en ny class som du så 
 >kan smide det hele ind i, vil jeg mene.
 >
 >/HK
 >
 
 Tak for svaret
 
 Det er vist også nogenlunde det samme, jeg er kommet frem til!
 
 
 Lars
  
            
             |   |   
            
        
 
            
         
                Harald (23-09-2004) 
         
	
            | Kommentar Fra : Harald | 
  Dato :  23-09-04 16:14 |  
  |   
            "Lars Holm Thomsen" <aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> skrev i en 
 meddelelse news:dno5l05j96rnc0up5hmi0hlvngt45iilgg@4ax.com...
 > On Thu, 23 Sep 2004 16:45:35 +0200, "Harald"
 > <news10@-REMOVE-THIS-kroning.dk> wrote:
 >
   <cut>
 >
 > Tak for svaret
 >
 > Det er vist også nogenlunde det samme, jeg er kommet frem til!
 
 F.eks. sådan:
 
 unit Unit2;
 
 interface
 
 uses
  ExtCtrls, Forms, Windows;
 
 type
  TMinBesked = class
    function MinBeskedBox(Tekst : PChar) : integer;
  private
     procedure TimerTimer(Sender: TObject);
   end;
 
 var
  MinBesked : TMinBesked;
 
 implementation
 
 function TMinBesked.MinBeskedBox(Tekst : PChar) : integer;
 begin
  With TTimer.Create(nil) do
   begin
    Interval:=10000;
     Enabled:=true;
     OnTimer:=TimerTimer;
   end;
 
  result:=Application.MessageBox(PChar(Tekst),'Info', MB_ICONASTERISK);
 end;
 
 procedure TMinBesked.TimerTimer(Sender: TObject);
 var
   MbHwnd: longword;
 begin
   (Sender as TTimer).Free;
 
  MbHwnd:=FindWindow(MAKEINTRESOURCE(WC_DIALOG), 'Info');
   if MbHwnd<>0 then
    DestroyWindow(MbHwnd);
 end;
 
 end.
 
 /HK
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |