Kalenderdaten im StringGrid (war: Hilfe zu Borland)
-
wo hast du denn die zeile
#include <DateUtils.hpp>
hingeschrieben
zu deiner header-datei gelangst du über den karteikartenreiter am unteren rand deines Editors (Unit1.h)
die zeile mußt du dann unter dem punkt
__published:
eintragen
an deiner stelle würde ich mir mal ein paar tutorials durchlesen oder mir ein buch kaufen/ausleihen um dich erstmal mit dem bcb vertraut zu machen
-
Die Zeile #include <DateUtils.hpp> habe ich in meine Unit1.cpp ganz oben bei den ganzen Include-Dateien mit hingeschrieben!
Ich habe mir ja schon ein Buch bestellt, aber das wurde noch nicht geliefert.
-
ich weiß nun nicht, ob es die DateUtils.hpp schon im BCB3 gibt
versuch mal DateUtils.h
-
Sonnenschein84 schrieb:
Die Zeile #include <DateUtils.hpp> habe ich in meine Unit1.cpp ganz oben bei den ganzen Include-Dateien mit hingeschrieben!
Vergiß es, die Datei gibt's im CBuilder 3 noch nicht (zumindest finde ich sie nicht in meinem CBuilder 4).
Sonnenschein84 schrieb:
Ich habe mir ja schon ein Buch bestellt, aber das wurde noch nicht geliefert.
Frage: Warum machst Du das alles - zum üben oder hast Du ein (bezahltes) Projekt am laufen? Es gibt nämlich haufenweise Komponenten für Kalender und Terminplaner. Als Lern-Einstieg würde ich das Programmieren mit dem TStringGrid nicht gerade empfehlen und ich bezweifle stark, daß Du in dem Buch etwas darüber finden wirst ...
-
Da kommt derselbe Fehler!!! Wie kann ich herausfinden ob es sowas gibt??
-
In der Hilfe steht das DaysInMonth(Year,Month); eine globale Funktion ist. Was kann ich daraus schließen???
-
nimm folgende funktion, die berechnet dir die tage im monat (unter berücksichtigung der Schaltjahre)
int DaysInMonth(int Year, int Month) { int monatstage[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; if(Month == 2) { if(!(Year % 4)) if (Year % 100) monatstage[1] = 29; else if (!(Year % 400)) monatstage[1] = 29; } return monatstage[Month - 1]; }
-
Sonnenschein84 schrieb:
In der Hilfe steht das DaysInMonth(Year,Month); eine globale Funktion ist. Was kann ich daraus schließen???
1. Daß Du die Funktion von überall aus aufrufen kannst.
2. Daß Du Dich umbedingt über das Thema "Gültigkeitsbereich" bzw. "Scope" schlau machen solltest.
-
Ok das funktioniert nun, aber ich nun hab ich eher ein optisches Problem und zwar muß ich die Wochentage (Mo-So) alle in eine Zeile bekommen und dann die 1-31 in eine andere. Kann man das in deinem Quellcode umändern???
Und mein zweites optisches Problem liegt darin, dass ich bei der Anzeige immer die 1 in der ersten Spalte stehen haben möchte und somit soll der Tag ihr zugeordnet werden. Verständlich oder spreche ich wieder in Rätsel???
Wäre lieb wenn du mir dabei auch noch helfen könntest, denn bisher hast du mir verdammt viel mit deinem Quellcode geholfen. Ich brauch das nämlich um das Programm noch weiterzuentwickeln und das muß jetzt ziemlich schnell passieren und an dem Kalender hängts bei mir. Wäre also ganz lieb wenn du mir noch weiterhelfen könntest.DANKE
-
meintest du so?:
void __fastcall TForm1::ShowCalendar(int Year, int Month) { for(int i=0; i<31; i++) for(int j=0; j<2; j++) StringGrid1->Cells[i][j] = ""; int FirstDayOfMonth = (DayOfWeek(EncodeDate(Year, Month, 1)) - 1) % 7; for(int i=0; i<DaysInMonth(Year, Month); i++) { StringGrid1->Cells[i][0] = ShortDayNames[(FirstDayOfMonth + i) % 7]; StringGrid1->Cells[i][1] = IntToStr(i+1); } }
musst dann aber in der Header-datei die zeile
void __fastcall ShowCalendar(int FirstDayOfWeek, int Year, int Month);
in
void __fastcall ShowCalendar(int Year, int Month);
verändern
und dein Stringgrid sollte dann mind. 31 Spalten haben
-
Sonnenschein84 schrieb:
In der Hilfe steht das DaysInMonth(Year,Month); eine globale Funktion ist.
In der Hilfe zum BCB3 steht etwas über DaysInMonth, und du benutzt jetzt DaysInMonth im BCB3!?
Nach allem was ich weiss gibt's das erst ab BCB6, deshalb habe ich ganz bewusst die DateUtils-Funktionen nicht vorgeschlagen.
-
Danke so meinte ich das. Ich danke dir für deine Hilfe. Mal noch eine Frage könnte man das jetzt noch variabel machen mit den Tagen, dass sich das StringGrid mit den Cols an die Tage genau anpaßt??
-
Ok die Frage hat sich erledigt hab das allein hinbekommen mit:
StringGrid1->ColCount=(DaysInMonth(Year,Month))+1;
War ja auch logisch. Ich danke dir dafür das du das mit dem Kalender mir gesagt hast. Danke für deinen Code!!!
-
Was ist denn nun mit DaysInMonth und BCB3?
-
Gibts da nicht, muß man als Funktion selbst schreiben. Nur in der Hilfe von BCB3 steht was dazu, aber man kann das nicht einbinden.