OnGetMonthBoldInfo
Description
L'événement vous permet de mettre en évidence certains jours du calendrier.
procedure OnGetMonthBoldInfo (Sender: TObject; Month, Year: Cardinal; var MonthBoldInfo: Cardinal);
Exemples
// les jours en surbrillance dans le calendrier, si janvier 2020 est affiché
procedure Form1_MonthCalendar1_OnGetMonthBoldInfo (Sender: TObject; Month, Year: Cardinal; var MonthBoldInfo: Cardinal);
begin
if (Month=1) and (Year=2020) then
TdbMonthCalendar(Sender).BoldDays([1,3,4,6,8,10], MonthBoldInfo);
end;
// Mise en évidence des jours du calendrier présents dans la table
procedure Form1_MonthCalendar1_OnGetMonthBoldInfo (Sender: TObject; Month, Year: Cardinal; var MonthBoldInfo: Cardinal);
var AStr: array of string;
AByte: Array of byte;
sMonth, s: string;
i, c: integer;
begin
// Choisir les jours de la base de données à mettre en évidence dans le calendrier
sMonth := IntToStr(Month);
if Length(sMonth)=1 then sMonth := '0' + sMonth;
s := SQLExecute( 'SELECT group_concat(strftime(''%d'', "DateField"), ",") FROM booking WHERE strftime(''%m.%Y'', "DateField" ="'+sMonth+'.'+IntToStr(Year)+'"' );
if s <> '' then
begin
AStr := SplitString(s, ','); // Convertir la chaîne avec les jours en un tableau AStr
SetLength(AByte, Length(AStr)); // Définir la longueur du tableau AByte
// Convertir un tableau de chaînes en un tableau numérique
c := Length(AByte)-1;
for i := 0 to c do
if ValidInt(AStr[i]) then AByte[i] := StrToInt(AStr[i]) else AByte[i] := 0;
TdbMonthCalendar(Sender).BoldDays(AByte, MonthBoldInfo); // Transmettre un tableau de jours au composant que vous souhaitez sélectionner
end;
end;