Miksi tämä ei toimi "oikein":
Button3.Enabled:=True; if DateTimePicker1.Date > Date then Button3.Enabled:=False;
Tekee seuraavaa:
Enabled on "false" jos valitsee huomisen, mutta palaa "trueksi"
vasta kun valitsee eilisen. Ei siis riitä vaikka valitsee tämän päivän.
Mod. lisäsi kooditagit!
Mä en ihan ymmärrä tuollaista koodausta jossa asetetaan joku GUI-elementti enablediksi ja sitten hetin perään vaihdetaan. Eikö helpompaa olisi kirjoittaa täsmälleen saman lopputuloksen tuottava koodi:
Button3.Enabled := DateTimePicker1.Date <= Date;
En tunne niin hirveän hyvin Delphin päivämääräjuttuja, mutta tulisi mieleen, että jos nuo sisältävät myös kellonajan, niin ehkä DateTimePickerin antama kellonaika on suurempi, vaikka molemmat olisi samassa päivässä.
Jostain syystä piti laittaa näin, että sain halutun tapahtuman:
Button3.Enabled := DateTimePicker1.Date-1 < Date;
TDate on sisäisesti liukuluku tyyppiä double, joten niitä ei välttämättä kannata verrata noin prikulleen. Jos haluat tarkistaa yhtäsuuruuden niin voit esim muuntaa DateToStr ja verrata tekstiä. Muussa tapauksessa funktio Now() antaa tilanteeseen paremman arvon kuin Date() kun se sisältää kellonajan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.