Entwickler-Ecke
Sonstiges (Delphi) - Stringgrid Tabelle als 20 Tage plan
Deathman - Di 16.05.06 21:15
Titel: Stringgrid Tabelle als 20 Tage plan
Hi
Sorry wenn das hier nicht hingehört hab aber kein suchbegriff gewusst unter dem ich suchen könnte da mein Problem wie ich denke ziemlich kompliziert ist.
ich habe ein Stringgrid und will 20 Zellen als einen 20Tage Plan bauen hab's soweit das der Plan in ner Ini gespeichert wird allerdings weiß i Net wie ich diesen Plan jetzt an einem beliebiegen Tag öffnen kann und sich der plan dann entsprechend verschoben hat.
Also nochma kurz:
- alle20 Tage widerholt sich der Plan
- Plan soll sich dem Datum entsprechend beim öffnen anpassen
bis jetzt hab ich dass:
Delphi-Quelltext
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:
| Procedure BEENDEN; : : : Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'ablauf.ini'); for I:=1 to 20 do Begin Ini.WriteString('Notdienst1',intToStr(i),Notdienst.Stringgrid1.Cells[1,i]); Ini.WriteString('Notdienst2',IntToStr(i),Notdienst.Stringgrid1.Cells[2,i]); Ini.WriteString('Datum',Notdienst.StringGrid1.Cells[0,i],IntToStr(i)); end; : : end;
procedure TNotdienst.FormCreate(Sender: TObject); : : : StringGrid1.RowCount:=21; StringGrid1.Cols[0].Add('Datum'); StringGrid1.Cols[1].Add('Apotheken Notdienst 1'); StringGrid1.Cols[2].Add('Apotheken Notdienst 2'); for i:=0 to StringGrid1.RowCount do StringGrid1.Rows[i+1].Add(DateToStr(Date()+ i));
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'ablauf.ini'); for i:=1 to StringGrid1.RowCount do begin Stringgrid1.Cells[1,i]:=Ini.ReadString('Notdienst1',IntToStr(i),''); Stringgrid1.Cells[2,i]:=Ini.ReadString('Notdienst2',IntToStr(i),''); end; Ini.Free; end; |
digi_c - Mi 17.05.06 08:47
Sry aber ich vertseh das jetzt garnicht :oops: haste sonst mal ne Skizze?
Deathman - Mi 17.05.06 12:00
Also nen Bild is im Anhang.
Also ich will dass sich die Tage ändern (täglich) und das sich der Plan dem entsprechend wiederhollt
wollte mit ner INI arbeiten aber wenns anders geht is mir auch egal.
digi_c - Mi 17.05.06 12:43
Aha und du willst jetzt eine "Goto" Funktion haben, die einen bestimmten Tag anstuert und dann die nachfolgenden Tage anzeigt? Und was soll davon jetzt genau in die INI Datei?
Wäre ganz erhellend, wenn man wüßte was das im Großen&Ganzen werden soll :-)
Hobby-Programmierer - Mi 17.05.06 12:43
Titel: Re: Stringgrid Tabelle als 20 Tage plan
Mahlzeit :)
Deathman hat folgendes geschrieben: |
...
ich habe ein Stringgrid und will 20 Zellen als einen 20Tage Plan bauen hab's soweit das der Plan in ner Ini gespeichert wird allerdings weiß i Net wie ich diesen Plan jetzt an einem beliebiegen Tag öffnen kann und sich der plan dann entsprechend verschoben hat. |
Ich habe so etwas ähnliches (Dienstplanverwaltung) schon mal gemacht! Allerdings verstehe ich deine Frage nicht so ganz. Warum planst du den Notdienst nicht für das gesamte Jahr, oder ändert sich die Reihenfolge der beteiligten Apotheken? Konkretisiere mal Deine Frage und dann kann man Dir auch sicher helfen!
LG Mario :dance2:
Deathman - Mi 17.05.06 17:41
Also der Plan ist alle 20Tage gleich allerdings kann es vorkommen dass die Apotheken sich ändern. Der sinn ist es das man jeden Tag im obersten Feld die aktuelle Apotheke sieht.
und sich der Plan wenn man das Programm startet aktualliesiert. D.H. der plan muss sich mit dem Kalendar und dem 20Tage Rhytmus sincroniesieren(kein Plan ob dat so gescvhrieben wird :D ).
Braucht ihr vielleicht das komplette Program damit ihr euch nen Überblick verschaffen könnt?
Blackheart666 - Mi 17.05.06 21:54
In deinem anderen Thread hast Du doch Antworten auf deine Frage(n) bekommen !
raiguen - Mi 17.05.06 23:08
Moin :-)
Folgende Idee aufgrund der o.a. Angaben:
Delphi-Quelltext
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:
| procedure TForm1.FormCreate(Sender: TObject); Var i,j:byte; Ini: TIniFile; Diff: Integer; DatumGueltig: TDate; begin ... StringGrid1.RowCount:=21; StringGrid1.Cols[0].Add('Datum'); StringGrid1.Cols[1].Add('Apotheken Notdienst 1'); StringGrid1.Cols[2].Add('Apotheken Notdienst 2'); Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'ablauf.ini');
for i:=0 to StringGrid1.RowCount do StringGrid1.Rows[i+1].Add(DateToStr(Date()+ i)); DatumGueltig := Ini.ReadDate('Gueltig','DatumGueltig',Date());
Diff := ( Trunc(Date()) - Trunc(DatumGueltig) ) mod 20;
for i:= 1 to 20-Diff do begin Stringgrid1.Cells[1,i]:=ini.readString('Notdienst1',IntToStr(i+Diff),''); Stringgrid1.Cells[2,i]:=ini.readString('Notdienst2',IntToStr(i+Diff),''); end; for j:= 0 to Diff do begin Stringgrid1.Cells[1,i+j]:=ini.readString('Notdienst1',IntToStr(j+1),''); Stringgrid1.Cells[2,i+j]:=ini.readString('Notdienst2',IntToStr(j+1),''); end; Ini.Free; end; |
So, einige Erklörungen zum dem obigen Gedankenspiel:
ablauf.ini ist wie folgt aufgebaut:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| [gueltig] DatumGueltig=01.05.2006 [Notdienst1] 1=Apo11 2=Apo12 3=Apo13 ... 20=Apo120 [Notdienst2] 1=Apo21 2=Apo22 3=Apo23 ... 20=Apo220 |
Naturlich sind anstelle der Apo11...Apo220 die richtigen Apotheken einzutragen; die Schlüsselwerte dienen hier nur zum besseren Verständnis des obigen Qoellcodes.
Zeile 17..18 ab dem aktuellenTagesdatum, welches in die erste freie Zeile geschrieben wird, werden die nachfolgenden Zellen des StringGRids in Spalte 0 mit forlaufenden Datum beschrieben.
ZEile 21: Auslesen des Datums, ab wann die Ablaufliste (Tagesrythmus) gültig ist; hier exemplarisch 01.05.2006
ZEile 24: Die Differenz zwischen dem Tagesdatum (Beispiel 17.05.2006) und dem Gültigkeitsdatum wird solange durch 20 geteilt, bis ein Rest von 0..20 Tagen erreicht ist. Wert von
Diff = 16 (17.05.2006 - 01.05.2006)
Zeile 27...30 Anzahl der ersten ZEilen im StringGrid errechnet sich aus
20-Diff, in diesem Beispiel wären das also die ersten 4 Zeilen (17.05.2006...20.05.2006); in den Spalte für Notdienst1 wird dann Apo117...Apo120 eingetragen, sinngemäß für den Notdienst2 Apo217..Apo220.
Nun ist die Tagesrythmus-Liste zu ende und muss von vorne beginnen:
Zeile 34...37 die ersten 4 Zeilen sind abgearbeitet (Schleifenvariable i steht auf 5(!)), übrig bleiben also noch Diff=16 Zeilen, somit die Zeilen 5..20.
So, nun dürft ihr euch weitere Gedanken um die anderen Probleme machen :-P
Deathman - Mi 17.05.06 23:52
Jo Danke erstma
Sowas ind der Art war mir vor nen paar minut en inner Badewanne :wink: auch eingefallen wusst aba auch nicht wie icht machen sollte.
Ich bin dir echt Dankbar :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!