08. november 2002 - 15:22Der er
20 kommentarer og 3 løsninger
Bestemt dag og sys tray
1. Hvordan får man et program til at udføre en bestemt handling eks. en gang om ugen???
2. Hvordan gør man sådan at når man trykker på en knap så minimere den ned til systrayen, den skal lukke formen helt indtil man klikker på ikonet nede i systrayen.
1.) Der er ikke rigtigt andet at gøre end at lade dit program starte med windows og checke tid/dato og lukke igen hvis det ikke er rigtigt. Du kunne evt lave et lille ekstra program som checkede dette.
2.) Der findes 1000 af tray icons components. Prøv selv på torry at søge efter "tray". Der er nok at vælge imellem
1. Det skal være sådan at brugeren kan vælge hvornår det skal være.
2. Det er ikke noget problem at få vist et ikon, det er mere det med at når den minimeres så skal den forsvinde helt, ned i sys trayen. Ikke bare ligge som alle andre når man minimere dem
1) Smid to TDateTimePicker's (ligger under Win32) og en Timer ind på din form. Sæt den ene DateTimePicker's Kind-property til dtkTime og giv den navnet dtpTid og den anden giver du navnet dtpDato. Så kalder du følgende kode fra din Timer's OnTimer:
procedure TForm1.Timer1Timer(Sender: TObject); begin if Now >= Frac(dtpTid.Time) + Trunc(dtpDato.Date) then begin ShowMessage('HEST!'); Timer1.Enabled := False; end; end;
Den kommer med en fejl. [Error] Unit2.pas(64): Incompatible types: 'String' and 'TTime' [Error] Unit2.pas(65): Incompatible types: 'String' and 'TDate'
Denne har også den fordel at du over i object inspectoren blot kan sætte minimize to tray og så blvier programmet automatisk minimeret til tray'en
For så at fx lave sådan at programmet kommer frem hvis man dobbeltklikker så bruger du blot cooltray icons event til det og indsætter dette: TrayIcon.ShowMainForm;
Så er det ellers bare at lægge til af hængigt af hvad du skal have... Smid eventuelt nogle edits på din form og så bare gang antallet af f.eks. dage med _DAG og læg det til din dtpDato.Date.
Typen TDateTime er egentlig bare en Double, som er beregnet ud fra d. 30. december 1899!
Den er delt op sådan at en dag = 1. En time er en 24'ende del af en dag, og et sekund er en 24*60*60'ende del af en dag...
Nå, men jeg skaber vist mere forviring end jeg gavner... Smutter igen! :)
Lad os så lege at du vil lægge en uge til næste gang programmet skal give besked:
procedure TForm1.Timer1Timer(Sender: TObject); begin if Now >= Frac(dtpTid.Time) + Trunc(dtpDato.Date) then begin dtpDato.Date := dtpDato.Date + _UGE; ShowMessage('HEST!'); //Timer1.Enabled := False; Det her behøver du jo så ikke når du sætter det næste tidspunkt end; end;
Og så må det vist være på tide at tage på biblioteket!!! ;)
Hov... _MÅNED virker selvfølgelig ikke, og du bør egentlig heller ikke have en der hedder måned, for månederne dage-antal varierer jo fra måned til måned...
Hvad er det nu for nogle checkboxe du snakker om??? Lån en bog!!!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.