AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maxdate beim DateTimePicker wieder entfernen

Ein Thema von lordcroc · begonnen am 19. Jan 2006 · letzter Beitrag vom 19. Jan 2006
Antwort Antwort
lordcroc

Registriert seit: 13. Aug 2002
Ort: Braunschweig
137 Beiträge
 
Delphi 7 Professional
 
#1

Maxdate beim DateTimePicker wieder entfernen

  Alt 19. Jan 2006, 11:13
Hallo,

Wenn ich einen DateTimePicker durch das MaxDate eingeschränkt habe, wie kann ich ihm wieder sagen das er das MaxDate ignorieren soll bzw. wie muß ich das Maxdate setzten damit er nach oben hin wieder offen ist??

schon mal vielen Dank im vorraus.

mfg
Lordcroc
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Maxdate beim DateTimePicker wieder entfernen

  Alt 19. Jan 2006, 11:18
Hallo,

folgendermassen:
Delphi-Quellcode:
uses
  Variants;

...
DateTimePicker1.MaxDate:=null;
...
  Mit Zitat antworten Zitat
lordcroc

Registriert seit: 13. Aug 2002
Ort: Braunschweig
137 Beiträge
 
Delphi 7 Professional
 
#3

Re: Maxdate beim DateTimePicker wieder entfernen

  Alt 19. Jan 2006, 11:22
funktioniert leider nicht.

Er sagt mir dann "ungültige Variant-Typenumwandlung"
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Maxdate beim DateTimePicker wieder entfernen

  Alt 19. Jan 2006, 11:55
Hallo,

komisch, bei mir kommt keine Fehlermeldung.

Ansonsten hilft dann nur noch das maximal mögliche Datum einzustellen: 31.12.9999
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Maxdate beim DateTimePicker wieder entfernen

  Alt 19. Jan 2006, 11:59
Delphi-Quellcode:
// TDateTime, TDate und TTime wird intern als DOUBLE gespeichert
// deshalb:
DateTimePicker1.MaxDate:=0.0;
Andreas
  Mit Zitat antworten Zitat
lordcroc

Registriert seit: 13. Aug 2002
Ort: Braunschweig
137 Beiträge
 
Delphi 7 Professional
 
#6

Re: Maxdate beim DateTimePicker wieder entfernen

  Alt 19. Jan 2006, 12:21
Zitat von shmia:
Delphi-Quellcode:
// TDateTime, TDate und TTime wird intern als DOUBLE gespeichert
// deshalb:
DateTimePicker1.MaxDate:=0.0;
funktioniert leider auch nicht.

das mit dem soweit wie möglich in die Zukunft setzten funktioniert, nur leider finde ich
ist es nicht die sauberste lösung.

Falls jemand noch ne Idee hat, dann einfach Posten.

mfg
lordcroc
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Maxdate beim DateTimePicker wieder entfernen

  Alt 19. Jan 2006, 12:53
Hallo,

auch wenn Du bei MaxDate kein Datum einsetzt, ist das maximal mögliche Datum mit dem Typ TDateTime der 31.12.9999. Also macht es in diesem Fall keinen Unterschied, ob MaxDate ein Datum zugewiesen wird oder nicht.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Maxdate beim DateTimePicker wieder entfernen

  Alt 19. Jan 2006, 13:27
Zitat von lordcroc:
Zitat von shmia:
Delphi-Quellcode:
// TDateTime, TDate und TTime wird intern als DOUBLE gespeichert
// deshalb:
DateTimePicker1.MaxDate:=0.0;
funktioniert leider auch nicht.
TDateTimePicker hat einen Bug in procedure TCommonCalendar.SetRange
Delphi-Quellcode:
procedure TCommonCalendar.SetRange(MinVal, MaxVal: TDate);
var
  STA: packed array[1..2] of TSystemTime;
  Flags: DWORD;
  TruncDate, TruncEnd, TruncMin, TruncMax: Int64;
begin
  Flags := 0;
  TruncMin := Trunc(MinVal);
  TruncMax := Trunc(MaxVal);
  TruncDate := Trunc(FDateTime);
  TruncEnd := Trunc(FEndDate);
  if TruncMin <> 0 then
  begin
    if TruncDate < TruncMin then SetDate(MinVal);
    if TruncEnd < TruncMin then SetEndDate(MinVal);
    Flags := Flags or GDTR_MIN;
    DateTimeToSystemTime(TruncMin, STA[1]);
  end;
  // das MaxDate ist in Variable TruncMax
  // da beim "Löschen" von MaxDate der Wert = 0 ist,
  // wird folgende IF-Abfrage nicht ausgeführt
  // also hat das Setzen von MaxDate auf 0 keine Auswirkung
  if TruncMax <> 0 then
  begin
    if TruncDate > TruncMax then SetDate(MaxVal);
    if TruncEnd > TruncMax then SetEndDate(MaxVal);
    Flags := Flags or GDTR_MAX;
    DateTimeToSystemTime(TruncMax, STA[2]);
  end;
  if HandleAllocated then
    if not MsgSetRange(Flags, @STA[1]) then
      raise ECommonCalendarError.CreateRes(@sFailSetCalMinMaxRange);
end;
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz