nelsonjean
Messages postés6Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention11 novembre 2008
-
30 oct. 2008 à 14:30
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
11 nov. 2008 à 18:04
Bonjour à tous!
J'aimerais savoir si il est possible de faire des sélections multiples avec le composant TMonthCalendar. J'ai cherché beaucoup et je n'ai rien trouvé. Le problème est que nous utilisions le compostant RBCalendar mais il n'est plus disponible pour la version Delphi 2009. Le but est que nous avons besoin d'un calendrier avec la possibilité de faire des sélections multiples pour faire le traitement par après. Des idées ?
Merci!
A voir également:
Connectionrefusederror: [winerror 10061] aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 7 nov. 2008 à 19:17
Est-ce possible de caller la procedure GetMonthInfo dans un double click.
non, ce n'est pas fait pour ça..en revanche tu peux lancer une procédure directement dans l'évènement OnGetMonthInfo.
J'ai fait tout la gestion des dates dans un tableau en deux dimenstions
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 11 nov. 2008 à 15:23
autre chose dans :
pourquoi autant de tests dans cette procédure ?
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal;var MonthBoldInfo: Cardinal);
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
puisque Month est en paramètre..
mais revenons au début :
je veux que l'usager puisse sélectionner le premier mercredi de la 1er semaine, le 2e jeudi du mois et les trois dernière journée du mois, etc. Donc, ce n'est pas des plages à la suite de l'autre qu'on désire avoir, c'est plus méli-mélo. Avez-vous des compostantes qui est capable de faire cela ?
Ton problème est bien de pouvoir conserver toutes les sélections de l'utilisateur :
Pourquoi ne pas les stocker au fur et à mesure dans un autre composant
(en gérant les ajout et le suppressions) ?
et une fois terminé, faire cliquer sur un bouton "envoyer"
nelsonjean
Messages postés6Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention11 novembre 2008 31 oct. 2008 à 13:23
L'utilisation de plusieurs compostants TMontCalendar ne serait pas la solution plosible je crois. Par exemple, je veux que l'usager puisse sélectionner le premier mercredi de la 1er semaine, le 2e jeudi du mois et les trois dernière journée du mois, etc. Donc, ce n'est pas des plages à la suite de l'autre qu'on désire avoir, c'est plus méli-mélo. Avez-vous des compostantes qui est capable de faire cela ?
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 31 oct. 2008 à 14:17
Tout dépend de ce que tu souhaites faire :
tu peux ausso gérer la sélection à travers le TMonthCalendar et la stocker quelque part (listBox, Memo, ListView etc..)
Jette un oeil sur le TChart qui lui aussi intègre un calendrier.
nelsonjean
Messages postés6Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention11 novembre 2008 6 nov. 2008 à 15:14
Est-ce possible de caller la procedure GetMonthInfo dans un double click. j'ai cherché sur internet et cette procédure est simplement appelé lorsqu'il y a un changement de mois dans le calendrier. J'ai fait tout la gestion des dates dans un tableau en deux dimenstions et tout fonctionne correctement. la seul chose à faire est de raffraîchir le calendrier sur chaque click. j'ai essayé le repaint, le refresh mais en vaint...Des idées ?
begin
lbPresent := False;
lbAjouter := False;
liPosition := 0;
lsDate := DateToStr(MonthCalendar1.Date);
lsJour := copy(lsDate, 9, 2);
viMois := StrtoInt(copy(lsDate, 6, 2));
For viJour := 1 to 31 do
begin
if lsJour = IntToStr(Days[viMois, viJour]) then
begin
lbPresent := True;
liPosition := viJour
end;
end;
if lbPresent then
begin
I := 0;
lbSupprimer := False;
while lbSupprimer = False do
begin
if lsDate = lsbDate.Items[I] then
begin
lsbDate.Items.Delete(I);
lbSupprimer := True;
end
else
begin
if I = lsbDate.Count - 1 then
begin
lbSupprimer := True;
end
else
begin
I := I + 1;
end;
end;
end;
Days[viMois, liPosition] := 0;
end
else
begin
lsbDate.Items.Add(DateToStr(MonthCalendar1.Date));
viJour := 1;
while lbAjouter = False do
begin
if Days[viMois, viJour] = 0 then
begin
Days[viMois, viJour] := StrToInt(lsJour);
lbAjouter := True;
end
else
begin
viJour := viJour + 1;
end;
end;
end;
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal;
var MonthBoldInfo: Cardinal);
begin
if Month = 1 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 2 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 3 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 4 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 5 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 6 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 7 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 8 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 9 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 10 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 11 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
if Month = 12 then
begin
MonthCalendar1.BoldDays(Days[Month],MonthBoldInfo);
end;
end;
Voici mon listing...Comme tu peux voir, je fais du code dans le doubleclick et dans l'évènement OnGetMonthInfo. Ce qu'il me reste à faire est d'appelé la procédure OnGetMonthInfo dans mon DoubleClick et tout fonctionnera. Si je sélectionn les dates et que je change et je reviens de mois, les date sont correctements indiquées.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 7 nov. 2008 à 22:45
Hum hum ...
Tu peux en revanche peut-être forcer le déclenchement de l'évènement dans le OnDoubleClick :
en stockant l'évènement dans une variable :
MisaJour : TOnGetMonthInfoEvent;
En mettant au départ l'event à Nil..
MisaJour := Nil;
et sur le double-click, l'affecter à l'evenement
mais je le sens pas trop..
j'ai pas encore testé (pas trop le temps en ce moment..)
nb : l'évènement
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal;
var MonthBoldInfo: Cardinal);
ne s'execute que sur le changement de mois et non de date
nelsonjean
Messages postés6Date d'inscriptionjeudi 30 octobre 2008StatutMembreDernière intervention11 novembre 2008 11 nov. 2008 à 15:53
Ok pour la procédure MonthCalendar1GetMonthInfo, j'ai rectifié comme tu m'as dit!
Pour le stockage des informations, je suis d'accord avec toi et c'est ce que je vais faire mais ce que j'aimerais, c'est de pouvoir montrer à l'usager les sélections fait par ce dernier au fur et à mesure. Par exemple, dans Outlook, lorsqu'on sélectionne plusieurs date avec le CTRL, la sélection est en gras.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 11 nov. 2008 à 18:04
oui je vois..
le plus génant c'est la sélection multiple..
regarde du côté de TeeChart (ou pose la question sur leur forum-> très actif)
tu peux aussi confectionner ton propre calendrier à l'aide d'un StringGrid.