Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MonthCalendar1.BoldDays mit variablen (https://www.delphipraxis.net/40358-monthcalendar1-bolddays-mit-variablen.html)

FlinkerFinger 14. Feb 2005 20:11


MonthCalendar1.BoldDays mit variablen
 
HuHu,

ich habe das Problem, dass ich in einem ARRAY gespeicherte Integerwerte als Bolt in meinem kalender schreiben lassen mochte ... das geht so wie ich es gemacht habe aber leider nicht =(

hier mal der code
Delphi-Quellcode:
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;
  Month: Cardinal; var MonthBoldInfo: Cardinal);
VAR i,j: INTEGER;
    datum2  : STRING;
    bolting : ARRAY[1..30] of integer;
begin
  Datum := datetostr(MonthCalendar1.Date);
  monat := datum[4] + datum[5];
  edit1.Text := monat;

     while not Table1.eof do
      begin
       datum2 := Table1.FieldByName('Datum').AsString;
       datum2 := datum2[4] + datum2[5];
         if datum2 = monat then
           begin
            inc(b);   //wird auf null gesetzt und das klappt auch alles
            bolting[b] := strtoint(datum2);
           end;
       Table1.next;
      end;
     MonthCalendar1.BoldDays([bolting],MonthBoldInfo);
end;
bin für jede hilfe dankbar =D

shmia 15. Feb 2005 15:40

Re: MonthCalendar1.BoldDays mit variablen
 
Hier ein Beispiel, wie man 3 Tage "bold" macht:
Delphi-Quellcode:
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal; var MonthBoldInfo: Cardinal);
   procedure MakeBoldDay(day : Integer);
   begin
      MonthBoldInfo := MonthBoldInfo or (1 shl (day-1));
   end;
begin
   MonthBoldInfo := 0; // alle Tage "normal"
   MakeBoldDay(13);
   MakeBoldDay(17);
   MakeBoldDay(21);
end;
Und jetzt für ein ganzes Jahr:
Delphi-Quellcode:
var
   boldMonths: array[0..11] of Cardinal;
...

procedure ClearAll;
var
   i : integer;
begin
   for i := Low(boldMonths) to High(boldMonths) do boldMonths[i] := 0;
end;

procedure MakeBoldDay(month,day : Integer);
begin
   boldMonths[month] := boldMonths[month] or (1 shl (day-1));
end;

procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal; var MonthBoldInfo: Cardinal);
begin
   MonthBoldInfo:= boldMonths[Month];
end;

procedure SetupAll;
begin
   ClearAll; // alle Tage Normal
   MakeBoldDay(1, 1); // Neujahr
   MakeBoldDay(12, 24); // Weihnachten
   ....
end;

FlinkerFinger 15. Feb 2005 17:15

Re: MonthCalendar1.BoldDays mit variablen
 
hmm eigentlich ist das schon so alles ganz schön... aber ... naja .. ich wollte doch nicht im code festlegen müssen, welche tag ich "bolten" möchte, sondern die sollen selbstständig ermittelt werden und dann einzeln zu "geboltet" werden. am liebsten aus einem ARRAY.

Und dann habe ich noch eine Frage: Wie bekommt ich aus dem monthcalendar das datum von heute ?? Also der tag der rot umkringelt ist.

Sharky 15. Feb 2005 17:17

Re: MonthCalendar1.BoldDays mit variablen
 
Zitat:

Zitat von FlinkerFinger
... Wie bekommt ich aus dem monthcalendar das datum von heute ...

Einfach über die Delphifunktion Delphi-Referenz durchsuchenDate. Diese gibt dir immer das "heutige" Datum des Rechners an. Dafür brauchst Du ja keinen MonthCalendar.

Aenogym 15. Feb 2005 17:18

Re: MonthCalendar1.BoldDays mit variablen
 
Zitat:

Zitat von FlinkerFinger
hmm eigentlich ist das schon so alles ganz schön... aber ... naja .. ich wollte doch nicht im code festlegen müssen, welche tag ich "bolten" möchte, sondern die sollen selbstständig ermittelt werden und dann einzeln zu "geboltet" werden. am liebsten aus einem ARRAY.

kannst du doch auch.e infach deine werte auslesen und dann MakeBoldDay() aufrufen

Zitat:

Zitat von FlinkerFinger
Und dann habe ich noch eine Frage: Wie bekommt ich aus dem monthcalendar das datum von heute ?? Also der tag der rot umkringelt ist.

nutze doch die funktion Delphi-Referenz durchsuchendate

edit. scharky war schneller

Aenogym

FlinkerFinger 15. Feb 2005 17:23

Re: MonthCalendar1.BoldDays mit variablen
 
ahh ja klar ... manchmal sieht man den wald voller bäume nicht. Danke !

FlinkerFinger 15. Feb 2005 17:31

Re: MonthCalendar1.BoldDays mit variablen
 
ok das klappt =D danke nochmal.

nun ist mir gerade noch eine idee gekommen...
ist es möglich das symbol, welches um den heutigen tag kreist zu ändern ?

FlinkerFinger 15. Feb 2005 17:51

Re: MonthCalendar1.BoldDays mit variablen
 
ne doch irgendwie nicht ... was genau macht die Procedure
Delphi-Quellcode:
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;
  Month: Cardinal; var MonthBoldInfo: Cardinal);
oder besser gefragt wann und wie! Also wer ruft sie auf und wie oft wird sie dann durchlaufen ? wenn ich mein Programm starte und eine showmessage reinpacke in die Proc. dann kommt sie 3 mal, als haette ich in der Form create Proc. 3mal reingeschrieben er solle mir die message zeigen. wenn ich dann aber auf einen monat weiter klicke kommt er garnicht mehr klar. der kalender durchlaeuft alle monate und die message kommt immer wieder. Was solln des? warum macht es das ?

DP-Maintenance 15. Feb 2005 19:11

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Sonstige Fragen zu Delphi" nach "VCL-Komponenten und Controls" verschoben.
Ich verschiebe das mal nach VCL. Ist dort etwas besser aufgehoben ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz