Autor |
Beitrag |
Bahade
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 17.12.02 19:30
Hallo,
ich habe nun mal versucht einen Jahreskalender zu erstellen, der ähnlich funktionieren soll, wie der Windows-Kalender (Doppel-Klick auf Uhrzeit in der Taskleiste).
Leider funktioniert das ganze noch nicht so. Ich würde mich sehr freuen, wenn ihr meine Fehler beim Programmieren finden könntet und entsprechend Verbesserungen vornehmen würdet. Vielen Dank für euere Hilfe! Ich bin gespannt darauf!
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Spin;
type TForm1 = class(TForm) SpinEdit1: TSpinEdit; StringGrid1: TStringGrid; ComboBox1: TComboBox; procedure FormCreate(Sender: TObject); procedure MonateChange(Sender: TObject); procedure JahrChange(Sender: TObject); private { Private-Deklarationen } Monatstage: Array[1..12] of Integer; function IstSchaltjahr(Jahr: Integer): Boolean; function Wochentag(Tag, Monat, Jahr: Integer): Integer; function Monatstage(Monat, Jahr: Integer): Integer; procedure leer; procedure ausfuellen;
public { Public-Deklarationen } end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); begin with Tage do begin Cells[0,0]:= ' Mo'; Cells[1,0]:= ' Di'; Cells[2,0]:= ' Mi'; Cells[3,0]:= ' Do'; Cells[4,0]:= ' Fr'; Cells[5,0]:= ' Sa'; Cells[6,0]:= ' So'; end; Monate.ItemIndex:= 0; Monatstage[ 1]:= 31; Monatstage[ 2]:= 28; Monatstage[ 3]:= 31; Monatstage[ 4]:= 30; Monatstage[ 5]:= 31; Monatstage[ 6]:= 30; Monatstage[ 7]:= 31; Monatstage[ 8]:= 31; Monatstage[ 9]:= 30; Monatstage[10]:= 31; Monatstage[11]:= 30; Monatstage[12]:= 31; Zeigen; end;
function TForm1.Wochentag(Tag, Monat, Jahr: Integer): Integer; begin if Monat > 2 then begin Monat:= Monat - 2; Result:= (Tag + (13*Monat-1) div 5 + Jahr + Jahr div 4 - Jahr div 100 + Jahr div 400) mod 7; else then begin Monat:= 10 + Monat; Jahr:= Jahr - 1; end;
procedure TForm1.leer; Var i, j: Integer; begin for j:= 1 to 6 do for i:= 0 to 6 do Tage.Cells[i,j]:= ''; end;
procedure TForm1.ausfuellen; var i, j, Tag, Monat, Jahr, Wochentag, Woche: Integer; begin Loeschen; Jahr := Jahr.Value; Monat:= Monate.ItemIndex + 1; Tag := 1; Wochentag:= Wochentag(Tag, Monat, Jahr); If Wochentag = 0 then Wochentag:= 6 else Wochentag:= Wochentag - 1; Woche:= 1; for i:= 1 to Monatstage(Monat, Jahr) do begin if i < 10 then Tage.Cells[Wochentag, Woche]:= ' ' + IntToStr(i) else Tage.Cells[Wochentag, Woche]:= ' ' + IntToStr(i); Wochentag:= Wochentag + 1; If Wochentag = 7 then begin Wochentag:= 0; Woche:= Woche + 1; end; end; end;
function TForm1.Monatstage(Monat, Jahr: Integer): Integer; begin Result:= Monatstage[Monat]; If (Monat = 2) and IstSchaltjahr(Jahr) then Result:= Monatstage[2]+1 end;
procedure TForm1.MonateChange(Sender: TObject); begin ausfuellen; end;
procedure TForm1.JahrChange(Sender: TObject); begin ausfuellen; end;
end. |
Grüße & Danke,
Bahade
|
|
Wolff68
      
Beiträge: 302
Erhaltene Danke: 1
WinXP home
D6 Prof
|
Verfasst: Mi 18.12.02 00:01
Warum benutzt Du nicht einfach die Komponente TCalendar (unter Beispiele), oder ist die in Deiner Delphi-Version nicht drin?
Zu TCalendar könnte ich Die ein Beispiel senden. Komplett im Eigenbau hab ich das auch noch nicht gemacht.
(Und ehrlich gesagt momentan wenig Zeit Deinen Quelltext zu analysieren.)
_________________ "Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mi 18.12.02 09:54
Hi
also irgendwie sieht das aus als hättest du den Code nicht selber geschrieben sondern irgendwo kopiert. Oder bei dir ist was mächtig durcheinander geraten.
- Wo ist die Prozedur Zeigen?
- Wo ist die Prozedur Loeschen?
- Was ist das Objekt Jahr das in Ausfuellen verwendet wird?
- Was ist das Objekt Monate das in Ausfuellen verwendet wird?
- Was ist das Objekt Tage?
- Wofür setzt du SpinEdit1, StringGrid1 und Combox1 auf dein Formular, wenn sie nirgendwo verwendet werden?
Irgendwo hab ich mal gelesen: Programmieren ist mehr als Copy & Paste
Also schreib mal genau wo dein Problem liegt.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Bahade 
Hält's aus hier
Beiträge: 9
|
Verfasst: Mi 18.12.02 14:30
Titel: Jahreskalender oder HILFE, ich weiß nicht mehr weiter.....
Hallo,
ja natürlich habe ich ihn irgendwo her kopiert, loeschen muss wohl durch leer und zeigen durch ausfuellen ersetzt werden?!
Habe leider nicht viel Ahnung davon, darum bitte ich euch, mir zu helfen....
Das ganze ist ja schon mal die richtige Richtung.
Jetzt muss ich nur noch die vielen Fehler beseitigen (...)
Aber dazu brauche ich unbedingt euere Hilfe.
Also, es wäre toll, wenn wir zusammen das hinkriegen könnten!!!
Danke & Grüße aus Düsseldorf,
Bahade
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Mi 18.12.02 14:44
Hallo,
in Delphi ist ein Kalender, der auf einem Stringgrid basiert dabei. Zu finden im Reiter "Beispiele". Wenn Du über die Prof.-Version verfügst, ist der Quellcode dazu im Verzeichnis "C:\Programme\Borland\Delphi5\Source\Samples" unter dem Namen "calendar.pas" zu finden.
Schau Dir diesen einmal an, ich denke, da kannst Du genügend Ideen für Deinen Kalender abschauen.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mi 18.12.02 15:00
Hi
Als erstes solltest du jetzt mal versuchen herauszufinden, was wohl mit Jahr, Monate und Tage gemeint ist. Das scheinen ja wohl Steuerelemente zu sein. Also wäre der erste Schritt den Steuerelementen die du auf deinem Formular hast, die richtigen Namen zuzuweisen.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Sledge_Hammer
      
Beiträge: 32
Win 98 SE, Win XP
D7 Prof
|
Verfasst: Mi 18.12.02 21:30
wo ihr grad bei kalendern seid, ich hab da auch gleich mal ne frage: wie kann ich ermitteln, welcher tag ein samstag ist (natürlich nicht nur im aktuellen jahr)?
THX Benni
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mi 18.12.02 21:58
Hi,
ist das nicht die Funktion DayOfWeek ? Ich bin fast der letzte, der sagt, guck in der Delphi-Hilfe, denn die ist sehr beschi........eiden. Zu diesem Thema aber eigentlich nicht. Fast zu umfangreich.
Gruß
Hansa
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Do 19.12.02 10:46
hansa hat folgendes geschrieben: | Ich bin fast der letzte, der sagt, guck in der Delphi-Hilfe, denn die ist sehr beschi........eiden. |
Das finde ich nicht! Meistens liegt es nur daran das man nicht weiß wo nach und wo man suchen muss und wie man letzendlich die Informationen die die Delphi-Hilfe liefert anwendet!
Gruß
TINO
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 19.12.02 12:43
Hi Tino,
nun, das stimmt auch wieder, aber ich finde es kommt zu oft vor, wenig aufschlußreiches zu finden. Wie ich aber sagte, in diesem Fall war meine Vermutung richtig. Habs probiert und dabei in der Hilfe noch etwas neues gefunden. DayOfTHEweek, das kenne ich auch nicht mal. Der Vollständigkeit halber sei noch etwas "selbstverständliches" erläutert. Der Cursor muß auf dem Wort stehen, dann erscheint hierzu mit F1 die passende Erläuterung. Weiß man dieses Wort halt nicht genau, kommt das von Tino beschriebene hinzu. Das müßte IMHO so laufen wie die Google-Suche. "Nicht gefunden. Meinten Sie vielleicht.... ?"
Gruß
Hansa
|
|
|