Gestion de programmation de date (Tmonthcalender)

Benito - 12 juin 2018 à 12:08
 Benito - 15 juin 2018 à 16:20
Bonjour à tous,

Je suis sur une application de Gestion de cantine scolaire et j'utilise Delphi 7.
Pour gerer la programmation des dates de souscriptions à la cantine par u n élève,
je voudrais utiliser le composant TMonthcalender.

Mes difficultés sont les suivantes:

1- Comment faire une selection multiple et/ou avec des plages de date contigue?

2- Comment recupérer plusieurs date selectionnés pour un seul élève et les envoyers dans la base?

3- Y a-t-il autre commposant plus adapté qui pourra m'aider à faire ce travail?


Merci de m'aider.

2 réponses

korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
Modifié le 13 juin 2018 à 20:36
Salut,

Pour pouvoir sélectionner plusieurs date contiguës dans le TMonthCalendar, il faut mettre la propriété MultiSelect à True.
Il semble qu'il soit uniquement possible de sélectionner des dates contiguës.
Tu peux stocker les dates sélectionnées dans un array, un TStrings, Memo, ListBox, etc, pour les mettre dans ta base de données.

Un exemple, sur l'évènement OnClick, dans lequel les dates sont stockées dans un array dynamique de TDate, avec visualisation dans un TMemo :

procedure TForm1.MonthCalendar1Click(Sender: TObject);
var
  i: Integer;
  arrDates: array of TDate;
begin
  SetLength(arrDates, Trunc(MonthCalendar1.EndDate) - Trunc(MonthCalendar1.Date) + 1);
  // récupération des dates comprises dans la sélection :
  for i := 0 to Length(arrDates) - 1 do
    arrDates[i] := MonthCalendar1.Date + i;
  // visualisation du tableau dans un TMemo :
  Memo1.Clear;
  for i := 0 to Length(arrDates) - 1 do
    Memo1.Lines.Add(DateToStr(arrDates[i]));
end;

Tu peux aussi utiliser le TCalendar dans l'onglet Exemples, mais je n'y vois pas d'avantage particulier.

Une discussion ici pour un problème similaire :
https://codes-sources.commentcamarche.net/forum/affich-1222027-monthcalendar-ou-autre-chose

Cordialement.

0
Merci beaucoup pour le coup de main
0
Rejoignez-nous