DateTimePicker & calendrier popup

Messages postés
644
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
- - Dernière réponse : cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
- 26 juin 2013 à 09:33
Bonjour,

DateTimePicker permet d'afficher un calendrier.

Je souhaite changer sa position , ses dimensions et la taille des caractères, lors de la consultation de ce calendrier.
A la fermeture du calendrier la taille des caractères est redimensionnée .

Y-A-T-IL UNE POSSIBILITÉ ?

MERCI

yvessimon
Afficher la suite 

13 réponses

Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10
0
Merci
Salut
à priori rien n’empêche de changer la font, le left ou le top du composant

procedure TForm1.Button1Click(Sender: TObject);
begin
D1.Font.Size := 12;
D1.Left := 50;
end;


(D1: TDateTimePicker;)
ça marche bien
Dubois77
site perso
Commenter la réponse de dubois77
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11
0
Merci
@M. Dubois : J'ai l'impression que notre ami souhaite uniquement changer les propriétés du calendrier qui s'affiche quand on "dropdowne" le DateTimePicker... Et là... C'est une autre paire de manche...

Simon
Commenter la réponse de sp40
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
10
0
Merci
bonjour,

pas de dropdown dans la question..
ou alors, il faut que yvessimon précise mieux sa question.

cantador
Commenter la réponse de cs_cantador
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10
0
Merci
J'ai bien relu la question, et effectivement Simon a peut être quand même raison :
Je souhaite changer sa position , ses dimensions et la taille des caractères, lors de la consultation de ce calendrier.

ça peut vouloir dire le moment ou il clique sur la flèche à gauche de DateTimePicker
et la évidemment c'est autre chose car il faudrait intercepter cette action !

Mais Cantador a raison, il faut d'abord que Yvessimon s'explique un peu

Dubois77
site perso
Commenter la réponse de dubois77
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11
0
Merci
m'enfin ! Yvessimon n'est pas un noob... J'espère qu'il connait au moins les propriétés de l'inspecteur d'objet...

Simon
Commenter la réponse de sp40
Messages postés
644
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
0
Merci
Bonjour,

C'est bien cela.
comment changer les propriétés, position , hauteur .., du calendrier MonthCalendar1 qui s'affiche ,quand on "dropdowne" le DateTimePicker ?


Merci

yvessimon
Commenter la réponse de yvessimon
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11
0
Merci
Là on va avoir besoin des pointures du forum...


Simon
Commenter la réponse de sp40
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
10
0
Merci
il manque l'évènement OnInitPopup..

cantador
Commenter la réponse de cs_cantador
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11
0
Merci
M'est avis que le plus facile (à mon niveau) est d'utiliser deux composants un combobox et un monthcalendar et d'essayer de faire ce que tu veux avec ça... (sauf si un kaiser de Delphi a une solution à proposer)

Simon
Commenter la réponse de sp40
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10
0
Merci
dans ComCtrls on a :
TDateTimePicker = class(TCommonCalendar)
  private
    FCalAlignment: TDTCalAlignment;
    FChanging: Boolean;
    FChecked: Boolean;
    FDateFormat: TDTDateFormat;
    FDateMode: TDTDateMode;
    FDroppedDown: Boolean;
    FKind: TDateTimeKind;
    FLastChange: TSystemTime;
    FParseInput: Boolean;
    FShowCheckbox: Boolean;
    FOnUserInput: TDTParseInputEvent;
    FOnCloseUp: TNotifyEvent;
    FOnChange: TNotifyEvent;
    FOnDropDown: TNotifyEvent;
    FFormat: String;
    procedure AdjustHeight;
    function GetTime: TTime;
    procedure SetCalAlignment(Value: TDTCalAlignment);
    procedure SetChecked(Value: Boolean);
    procedure SetDateMode(Value: TDTDateMode);
    procedure SetDateFormat(Value: TDTDateFormat);
    procedure SetKind(Value: TDateTimeKind);
    procedure SetParseInput(Value: Boolean);
    procedure SetShowCheckbox(Value: Boolean);
    procedure SetTime(Value: TTime);
    procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED;
    procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
    procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
    procedure SetFormat(const Value: String);
  protected
    procedure CheckEmptyDate; override;
    procedure CreateParams(var Params: TCreateParams); override;
    procedure CreateWnd; override;
    procedure Change; dynamic;
    function GetCalendarHandle: HWND; override;
    function MsgSetCalColors(ColorIndex: Integer; ColorValue: TColor): Boolean; override;
    function MsgSetDateTime(Value: TSystemTime): Boolean; override;
    function MsgSetRange(Flags: Integer; SysTime: PSystemTime): Boolean; override;
  public
    constructor Create(AOwner: TComponent); override;
    property DateTime;
    property DroppedDown: Boolean read FDroppedDown;
  published
    property Anchors;
    property BevelEdges;
    property BevelInner;
    property BevelOuter;
    property BevelKind default bkNone;
    property BevelWidth;
    property BiDiMode;
    property CalAlignment: TDTCalAlignment read FCalAlignment write SetCalAlignment default dtaLeft;
    property CalColors;
    property Constraints;
    // The Date, Time, ShowCheckbox, and Checked properties must be in this order:
    property Date;
    property Format: String read FFormat write SetFormat;
    property Time: TTime read GetTime write SetTime;
    property ShowCheckbox: Boolean read FShowCheckbox write SetShowCheckbox default False;
    property Checked: Boolean read FChecked write SetChecked default True;
    property Color stored True default clWindow;
    property DateFormat: TDTDateFormat read FDateFormat write SetDateFormat default dfShort;
    property DateMode: TDTDateMode read FDateMode write SetDateMode default dmComboBox;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property Font;
    property ImeMode;
    property ImeName;
    property Kind: TDateTimeKind read FKind write SetKind default dtkDate;
    property MaxDate;
    property MinDate;
    property ParseInput: Boolean read FParseInput write SetParseInput default False;
    property ParentBiDiMode;
    property ParentColor default False;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property TabOrder;
    property TabStop default True;
    property Visible;
    property OnClick;
    property OnCloseUp: TNotifyEvent read FOnCloseUp write FOnCloseUp;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
    property OnContextPopup;
    property OnDropDown: TNotifyEvent read FOnDropDown write FOnDropDown;
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnStartDock;
    property OnStartDrag;
    property OnUserInput: TDTParseInputEvent read FOnUserInput write FOnUserInput;
  end;


Il faudrait voir ou on peut intervenir dans une des procédure (surcharge ?)

Dubois77
site perso
Commenter la réponse de dubois77
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10
0
Merci
Uniquement avec l'inspecteur objet, si on clique d'abord sur le composant, il grossit, en l'ouvrant on peut sélectionner un jour, en refermant on revient à la taille origine
Mais il faut en fait cliquer 2 fois ce qui n'est pas exactement la réponse !
procedure TForm1.D1Click(Sender: TObject);
begin
D1.Font.Size := 18;
D1.Left := 150;

end;

procedure TForm1.D1CloseUp(Sender: TObject);
begin
D1.Font.Size := 12;
D1.Left := 50;
end;


procedure TForm1.D1Change(Sender: TObject);
begin
D1.Font.Size := 18;
D1.Left := 150;

end;



Dubois77
site perso
Commenter la réponse de dubois77
Messages postés
644
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
0
Merci
Bonjour,


La conclusion semble la même.

J’essaie avec un combobox et un monthcalendar


salutations

yvessimon
Commenter la réponse de yvessimon
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
10
0
Merci
une solution plus sioux consiste à changer de composant et d'utiliser
le TJvDatePickerEdit des JEDI et de prendre l'évènement OnButtonClick :

procedure TForm1.JvDatePickerEdit1ButtonClick(Sender: TObject);
begin
 JvDatePickerEdit1.Font.Size := 24;
end;


ça marche, mais dommage que la propriété autosize ne fonctionne pas ou du moins, je n'ai pas réussi à la faire fonctionner.
il faut donc allonger le composant (width) afin de prévoir le stockage correcte de la date.

cantador
Commenter la réponse de cs_cantador