Announcement

Collapse
No announcement yet.

BoldDays in TMonthCalendar

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • BoldDays in TMonthCalendar

    Hallo,<p>
    eigenartige Sache: Ich will Tage eines bestimmten Datums in Fettschrift anzeigen, wenn an dem Datum irgendwas besonderes ist. Geht auch recht einfach, dank BoldDays(bolddays,boldcount - 1,MonthBoldInfo) .... das Problem ist, dass in Kalender->OnGetMonthInfo(TObject *Sender, unsigned int Month, unsigned int &MonthBoldInfo), das beim Zeichnen eines Monats aufgerufen wird, nur der Monat, nicht aber das Jahr mit angegeben wird, d.h. wenn der Anwender in den Monaten rumscrollt, Form vergroessert etc, hab' ich ein Problem mit der Zuordnung, ob ein Termin markiert werden muss, oder nicht. Obendrein wird, wenn zum Beispiel der Januar der erste angezeigte Monat ist, OnGetMonthInfo schon mit dem Monat 12 aufgerufen, was das ganze nicht einfacher macht. Die ganze Geschichte aus dem selektierten Datum TMonthCalendar->Date zu ermitteln, ist auch schwieriger als es zunaechst aussieht. Frage: Gibt es eine Möglichkeit das Jahr des gerade gezeichneten Monatsblatts herauszufinden?<P>
    Gruss<p>
    Armin

  • #2
    Hallo Armin!

    EINFACH nennst du das? Ich versteh mal wieder nicht, was wo an wen übergeben werden soll und wie. Ich komme mit der Hilfe nicht klar.

    ...Die MonthBoldInfo enthält die Codierung der Werte, die an das Array Days übergeben wurden. Dieser Wert kann dem Parameter MonthBoldInfo einer OnGetMonthInfo-Ereignisbehandlungsroutine zugewiesen werden (oder der Parameter MonthBoldInfo kann als dieses Argument übergeben werden). Eine direkte Verwendung der Variable MonthBoldInfo ist nicht zulässig. Um beispielsweise den ersten und den achten Tag eines Monats zu codieren, verwenden Sie den folgenden Code :

    unsigned bolddays[2] = {1,2};
    BoldDays(bolddays,1,MonthBoldInfo);

    Kannst du mir sagen, wie du das gemacht hast. Wäre nett von dir.

    Gruss Irmgar

    Comment


    • #3
      Hallo Irmgard,<BR>
      mit der Hilfe bin ich auch nicht klar gekommen, die scheint mir sehr nachlässig zu sein (sieht man ja schon eindeutig am Beispiel, wo einem eine 2 für eine 8 vorgemacht wird). Um den Boldmonth Krempel zu nutzen, musst du eine Funktion (z.B. DrawMonth) schreiben und sie OnGetMonthInfo zuweisen:

      <PRE>
      Kalender->OnGetMonthInfo = DrawMonth;
      </PRE>

      Kalender ist der TMonthCalendar*. In der Funktion selbst kannst dann die bolddays angeben, d.h. ein Array mit den Tagen an die Methode BoldDays übergeben. In den Parametern von DrawMonth selbst wird der Monat, der gerade gezeichnet wird übergeben, so dass du - oder vielmehr Dein Programm - weiss, welcher Monat gemalt wird. Dumm ist, dass die Brüder aus der Entwicklung übersehen haben, dass ein Datum nicht nur alleine aus dem Monat und dem Tag besteht, also wenn Du mehrere Monate darstellen willst, die eventuell auch in verschiedenen Jahren liegen, dann gibts Probleme, weil man nicht ermitteln kann, ob gerade - z.B. - der Monat Mai 2002 oder Mai 2003 dran ist. Hab's bis heute nicht lösen können.

      <PRE>
      void __fastcall TForm1:rawMonth(TObject *Sender,
      unsigned int Month, unsigned int &MonthBoldInfo)
      {
      unsigned int bolddays[2] = {1,8};

      ((TMonthCalendar*)Sender)->BoldDays(bolddays,1,MonthBoldInfo);
      // oder Kalender->BoldDays(bolddays,1,MonthBoldInfo); wenn das Teil global bekannt ist

      }
      </PRE>

      Na lange Rede, kurzer Sinn, versuch das mal so, geht ja schnell.<BR>
      Viel Erfolg - Armi

      Comment


      • #4
        Vielen Dank!!! Werde es versuchen. Sollte ich nicht klarkommen, melde ich mich noch mal.

        Gruss Irmgar

        Comment

        Working...
        X