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