Avatar billede armena Nybegynder
01. marts 2003 - 19:35 Der 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 :(

Håber at i kan hjælpe mig.

MVH.
ALA
Avatar billede hermandsen Juniormester
01. marts 2003 - 19:47 #1
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
Avatar billede armena Nybegynder
01. marts 2003 - 20:19 #2
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.
Avatar billede hermandsen Juniormester
01. marts 2003 - 20:23 #3
Du skal skifte måned... En frem og en tilbage... Der er bugs i TMonthCalander som Microsoft desværre ikke har rettet! :(

De dage som skal være markeret med fed skal ligge i Days-array'et.
Avatar billede hermandsen Juniormester
01. marts 2003 - 20:26 #4
Kopieret fra hjælpen:

===========================================================

TCommonCalendar.BoldDays

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

BoldDays([1,8], MonthBoldInfo);

===========================================================

TCommonCalendar.OnGetMonthInfo

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

BoldDays([1,8], MonthBoldInfo);

from the OnGetMonthInfo event handler.

===========================================================

//hermandsen
Avatar billede armena Nybegynder
01. marts 2003 - 20:40 #5
Alle dage som man har skrevet noget om i TMemoen skal markeres med Bold skrift.
Avatar billede armena Nybegynder
01. marts 2003 - 20:45 #6
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 ?
Avatar billede hermandsen Juniormester
01. marts 2003 - 20:55 #7
Hvad virker ikke? Du skal være lidt mere specifik! :)
Avatar billede armena Nybegynder
01. marts 2003 - 21:05 #8
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.

Marker den i dit program?
Avatar billede hermandsen Juniormester
01. marts 2003 - 21:12 #9
Hehe... Det er nemlig problemet ved MonthCalander! :)
Hop en måned frem og en tilbage, så skulle den gerne være opdateret! ;)
Avatar billede armena Nybegynder
01. marts 2003 - 21:16 #10
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.

Findes der ikke en måde at opdater kalenderen på?
Avatar billede hermandsen Juniormester
01. marts 2003 - 21:20 #11
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! :)

//hermandsen
Avatar billede hermandsen Juniormester
01. marts 2003 - 21:24 #12
Det er bare at prøve sig lidt frem her:
http://www.torry.net/calendar.htm ;)
Avatar billede borrisholt Novice
02. marts 2003 - 12:26 #13
armena >> Der findes måsk en måde at løse problemet på. Jeg har trods adskellige forsøg ikke fundet den.

Jens B
Avatar billede borrisholt Novice
02. marts 2003 - 12:29 #14
Jeg har prøver forskellige af de kalender komponenter der ligger på Torry.net
Jeg synes den her er god :
http://www.torry.net/vcl/datetime/calendar/gldscalendar.zip

Jens B
Avatar billede armena Nybegynder
02. marts 2003 - 12:56 #15
borrisholt> kan ikke få den installeret. Den melder at den ikke kan finde dsgnInft.dcu :(
Avatar billede armena Nybegynder
13. marts 2003 - 14:29 #16
lukker!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester