Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi DateTimePicker, Kalenderwoche, Vista, falsche Darstellung (https://www.delphipraxis.net/117931-datetimepicker-kalenderwoche-vista-falsche-darstellung.html)

hoika 28. Jul 2008 16:10


DateTimePicker, Kalenderwoche, Vista, falsche Darstellung
 
Hallo #,

mit folgendem Code (aufgerufen im OnDropDown)
kann zur Laufzeit bei einem DateTime Picker
links die Kalenderwoche zusätzlich angezeigt werden.



Delphi-Quellcode:
{
 name:
   DTP_AddWeekNumber
 usage:
   to add a week number column to the calendar
 parameter:
   theDTP
 return parameter:
 return:
 notes:
   - method mustbe called in OnDropDown
 dunit: no
}
procedure DTP_AddWeekNumber(theDTP: TDateTimePicker);
const
  MCM_GETMAXTODAYWIDTH = MCM_FIRST + 21;
var
  Style: LongInt;
  hDTP: THandle;

  r: TRect;
  intTodayWidth: Integer;
begin
// Notlösung unter Vista
//  if IsWindowsVista then Exit;
 
  {to get a handle of calendar}
  hDTP := DateTime_GetMonthCal(theDTP.Handle);

  {change a style}
  Style := GetWindowLong(hDTP, GWL_STYLE);
  SetWindowLong(hDTP, GWL_STYLE, Style or MCS_WEEKNUMBERS);

  {now we must change the width for calendar because week numbers shifted all strings}
  {1. to get the required rect }
  r := Rect(0, 0, 0, 0);
  SendMessage(hDTP, MCM_GETMINREQRECT, 0, Longint(@r));

  {2. to get the maximum width of the "today" string}
  intTodayWidth := SendMessage(hDTP, MCM_GETMAXTODAYWIDTH, 0, 0);

  {3. adjust rect width to fit the "today" string }
  if intTodayWidth > r.Right then
    r.Right := intTodayWidth;

  {4. to set new the height and width }
  SetWindowPos(hDTP, 0,
              r.Left, r.Top, r.Right-r.Left, r.Bottom-r.Top,
              SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOZORDER);
end; { DTP_AddWeekNumber }
Unter Vista wird aber der Sonntag nicht mehr komplett angezeigt ;(

Hat jemand die KW-Anzeige unter Vista schon zum Laufen bekommen ?
Meine "Notlösung": unter Vista nicht anzeigen ;(


Heiko

ConstantGardener 29. Jul 2008 18:12

Re: DateTimePicker, Kalenderwoche, Vista, falsche Darstellun
 
Hi Hoika,

wo sind denn die Messages MCS_First usw. definiert. Ich kriege das unter BDS 2006 nicht compiliert.

mfg

CG

SaFu 29. Jul 2008 20:38

Re: DateTimePicker, Kalenderwoche, Vista, falsche Darstellun
 
Hi

Falls du die Jedis hast dann nehm einfach den JVDateTimePicker, da kannst du einfach im OI die Kalenderwochen dazuschalten und der wird auch richtig unter Vista dargestellt.

Bin nach deinem Fehler auch auf den umgestigen

Gruß Sascha

hoika 30. Jul 2008 06:54

Re: DateTimePicker, Kalenderwoche, Vista, falsche Darstellun
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

danke für die Antworten

MCM ist in CommCtrl definiert.

Ich habe das ganze mal als Test-Projekt angehängt.
Ev. muss der Pfad der Exe-Erstellung geändert werden
(eine Exe ist natürlich nicht in der Zip vorhanden).

Zu Jedi, muss ich mal sehen,
ich will eigentlich ohne Fremdkomponenten auskommen,
wenn es nicht sein muss.
Jaja, ich weiss, ist alles umsonst, opensource, mal sehen.



Heiko

Gruber_Hans_12345 5. Okt 2010 21:15

AW: DateTimePicker, Kalenderwoche, Vista, falsche Darstellung
 
Gibt es da schon eine Lösung für die Windows Komponente?

toms 9. Okt 2010 17:18

AW: DateTimePicker, Kalenderwoche, Vista, falsche Darstellung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir (Vista 32) wird der Sonntag komplett dargestellt, selbst wenn eine große Schriftgröße gewählt wird.

Gruber_Hans_12345 11. Okt 2010 11:26

AW: DateTimePicker, Kalenderwoche, Vista, falsche Darstellung
 
Es geht hier um die darstellung der Kalendarwcohen im DateTimeppciker, die falsch angezeigt werden, und wo man keine Möglichkeit hat dies zu berücksichtigen :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz