01. marts 2003 - 19:35Der er
15 kommentarer og 1 løsning
TMonthCalendar
Jeg arbejder med TMonthCalendar ligenu og har stødt ind i et problem.
Jeg har en TMemo, TButton og en TMonthCalendar på min Form. Når man vælger/kliker på en dag/dato i TMonthCalendar, har man muligheden for at skrive eb beskrivelse for den dag. Mit program gemmer infoen for alle de dage man har taste noget ind.
Mit spørgsmål er nu: Hvordan gør jeg sådan at når man har indtastet en beskrivelse for en dag/dato, så skal der være en rød ring omkring dagen/datoen? Har leget med det, men det blev ikke til noget :(
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Den røde ring angiver den dag det er i dag, så det kan du ikke! Noget andet du kan gøre er at lave de dage der indeholder noget, markeret med fed...
Til det skal du bruge det event der hedder OnGetMonthInfo:
procedure TForm1.mcDatoGetMonthInfo(Sender: TObject; Month: Cardinal; var MonthBoldInfo: Cardinal); var I, Counter: Integer; Days: array of Cardinal; y, m, d, Day, Year: Word; begin Counter := 0; SetLength(Days, 1); Days[0] := 0; for I := Low(Lektier) to High(Lektier) do begin DecodeDate(Lektier[I].Dato, y, m, d); if m = Month then begin DecodeDate(mcDato.Date, Year, m, Day); if y = Year then begin SetLength(Days, Counter + 1); Days[Counter] := d; Inc(Counter); end; end; end; mcDato.BoldDays(Days, MonthBoldInfo); end;
Den vigtige i dette sammenhæng er den der hedder BoldDays som er en funktion i TMonthCalender.
Jeg har selv en gang lavet et lignende program, så koden for oven stammer fra dette... Hvis du er i tvivl om noget i proceduren, så skriver du bare! ;)
Hermandsen> hvordan bruger jeg proceduren? med hvilken kode? har lige afprøvet, men når jeg skriver noget for en dag, så marker den ikke med Fed skrift.
Encodes a set of dates for use in the OnGetMonthInfo event handler.
procedure BoldDays(Days: array ofLongWord; var MonthBoldInfo: LongWord);
Description
Use BoldDays to encode the days of the current month that should appear in bold. The value returned by BoldDays can be assigned to the MonthBoldInfo parameter of an OnGetMonthInfo event handler.
Days is an array of unsigned integers corresponding to the days that should be bold.
MonthBoldInfo returns the encoding of the values that were passed in the Days array. This value can be assigned to the MonthBoldInfo parameter of the OnGetMonthInfo event handler. (or the MonthBoldInfo parameter can be passed in for this argument). You shouldn't work with the MonthBoldInfo variable directly.
For example, to encode the first and eighth days of a month, call
Called whenever a new month is displayed in the calendar.
property OnGetMonthInfo: TOnGetMonthInfoEvent;
Description
Use the OnGetMonthInfo event to initialize the display properties of a month. In particular, OnGetMonthInfo allows applications to bold individual days in the calendar (such as holidays).
To specify that specific dates are to be bolded, use the BoldDays method to obtain a value that can be returned as the MonthBoldInfo parameter. For example, to bold the first and eighth days of every month that is displayed, call
Har indtastet din kode i OnGetMonthInfo for TMonthCalendar (har rettet til mine komponent navne) men det virker jo ik. Virker det i dit program? hvis ja hvordan har du lavet det ?
Altså når jeg taster en beskrivelse for en dag i TMonthCalendar, og trykker på en knap, så gemmer den beskrivelsen, men dagen den er skrevet i bliver ikke markeret.
Jeg har sat din kode i for TMonthCalendar OnGetMonthInfo, har bare rettet navnene til mine komponent navne. Den melder overhovedet ingen fejl, men den marker bare ikke dagen der er skrevet noget om.
Hm.. Det virker godt nu, men det er jo ikke for godt. Når jeg hopper en måned frem så er de markeret (de dage med en beskrivelse) og når jeg hopper til den samme måned igen, så er de ikke markeret.
Hehe... Don't know! Jeg rodede selv meget med det samme problem, men så fortalte Borrisholt mig at TMonthCalender (som jo følger med Windows, og dermed er udviklet af MS) har et par bugs som du ikke slipper udenom så let...
Alternativt kan du kode en ny TMonthCalender fra bunden, meeeeen er det nu også nødvendigt! :)
Prøv evt. at se om du kan finde en anden på torry.net! :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.