![]() |
Aktuelles Datum Einfärben
Hi hab das schon in nem anderen Thread angesprochen, aber scheinbar lohnt es sich doch nen neuen Thread aufzumachen:
Frage und co siehe hier: ![]() |
Re: Aktuelles Datum Einfärben
Zitat:
Edit: Ah, jetzt ja. |
Re: Aktuelles Datum Einfärben
Ok, da immernoch keiner ne idee hat hier mal die kompletten zwei prozeduren, und ja ich weiß das ich da manches umständlicher hab als vielleicht nötig...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var lauf: Integer; count,Zaehler: Integer; row: Integer; year: Word; month: Word; firstMonday: Word; day: Word; begin Zaehler:=0; row:=1; count:=0; Tage:=DaysInMonth(date); DecodeDate(date,year,month,firstMonday); DecodeDate(LastDayOfWeekOfMonth(year,month,1),year,month,firstMonday); while firstMonday > 7 do begin firstMonday:=firstMonday-7; end; if not firstMonday > 7 then begin With Kalender do begin dec(firstMonday); Cells[firstMonday,0]:='Montag'; inc(firstMonday); if not (firstMonday >= 7) then begin Cells[firstMonday,0]:='Dienstag'; inc(firstMonday); end else begin ShowMessage('ELSE-HANDLER GREIFT BEI FALL: '+IntToStr(firstMonday)+'!'); firstMonday:=0; Cells[firstMonday,0]:='Dienstag'; inc(firstMonday); end; if not (firstMonday >= 7) then begin Cells[firstMonday,0]:='Mittwoch'; inc(firstMonday); end else begin ShowMessage('ELSE-HANDLER GREIFT BEI FALL: '+IntToStr(firstMonday)+'!'); firstMonday:=0; Cells[firstMonday,0]:='Mittwoch'; inc(firstMonday); end; if not (firstMonday >= 7) then begin Cells[firstMonday,0]:='Donnerstag'; inc(firstMonday); end else begin ShowMessage('ELSE-HANDLER GREIFT BEI FALL: '+IntToStr(firstMonday)+'!'); firstMonday:=0; Cells[firstMonday,0]:='Donnerstag'; inc(firstMonday); end; if not (firstMonday >= 7) then begin Cells[firstMonday,0]:='Freitag'; inc(firstMonday); end else begin ShowMessage('ELSE-HANDLER GREIFT BEI FALL: '+IntToStr(firstMonday)+'!'); firstMonday:=0; Cells[firstMonday,0]:='Freitag'; inc(firstMonday); end; if not (firstMonday >= 7) then begin Cells[firstMonday,0]:='Samstag'; inc(firstMonday); end else begin ShowMessage('ELSE-HANDLER GREIFT BEI FALL: '+IntToStr(firstMonday)+'!'); firstMonday:=0; Cells[firstMonday,0]:='Samstag'; inc(firstMonday); end; if not (firstMonday >= 7) then begin Cells[firstMonday,0]:='Sonntag'; end else begin ShowMessage('ELSE-HANDLER GREIFT BEI FALL: '+IntToStr(firstMonday)+'!'); firstMonday:=0; Cells[firstMonday,0]:='Sonntag'; end; end; end; DecodeDate(date,year,month,day); for lauf := 1 to Tage do begin Inc(Zaehler); if count = 7 then begin count:=0; inc(row); Kalender.Cells[count,row]:=IntToStr(lauf); inc(count); end else begin Kalender.Cells[count,row]:=IntToStr(lauf); inc(count); end; if EncodeDate(year,month,zaehler)=date then begin Kalender.objects[count,row]:=TObject(1); //<-Das Tuts nicht end; end; //DecodeDate(date,year,month,day); //<-Das war meine erste Idee funzt auch nicht //Kalender.objects[day mod 7,day div 7]:=TObject(1); // da wird immer (gestern und heute) der 22te eingefärbt end;
Delphi-Quellcode:
Vielleicht hilft das ja irgendwie....
procedure TForm1.KalenderDrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState); begin (sender as TStringgrid).canvas.Brush.color:=(sender as TStringgrid).color; if integer(Kalender.objects[col,row])=1 then begin (sender as TStringgrid).canvas.Brush.color:=clInfoBk; (sender as TStringgrid).canvas.FillRect(rect); (sender as TStringgrid).canvas.TextOut(rect.left+2,rect.top+2,(sender as TStringgrid).Cells[col,row]); end; end; Edit--> Hi, hab mal nen begin und end zur letzten prozedur hinzugefürt und bin einige male mit dem Debugger drüber Ergebnis: --> if integer(Kalender.objects[col,row]=1 then .... ist nicht erfüllt |
Re: Aktuelles Datum Einfärben
Du hättest lieber mal im ersten Posting Deine Frage notiert. Dann hättest Du auch eine Chance auf Antworten. Es wird sich sicher keiner die Mühe machen erst einen anderen Thread zu öffnen, um Deine Frage oder Dein Problem zu ermitteln.
Das nur als Tipp für die Zukunft. |
Re: Aktuelles Datum Einfärben
Nun, warum auch immer ist es nur erlaubt 24h lang seine beiträge zu bearbeiten... für alle dies interessiert: mein Problem ist das bei dem oben angegebenen Code wie ja da auch schon erwähnt
Zitat:
Hoffe das mir irgendjemand helfen kann die untere prozedur(Draw) hab ich nur aus nem anderen Beitrag da hieß es ihrgendwas mit flag setzen und so damit kenn ich mich selber leider gar nicht aus schien mir aber das einfachste zu sein... PLZ help :) |
Re: Aktuelles Datum Einfärben
Hallo,
Delphi-Quellcode:
AHA !!!!!
Kalender.objects[count,row]:=TObject(1); //<-Das Tuts nicht
Wer hätte das gedacht ... ;)
Delphi-Quellcode:
Im OnDrawCell dann einfach Prüfen auf
Kalender.objects[count,row]:= Kalender;
Delphi-Quellcode:
if Kalender.objects[X,Y]<>NIL
Man solltenat. auch noch eine Prozedur schreiben, die vor dem Füllen eines Grids alle objects auf NIL setzt. Heiko |
Re: Aktuelles Datum Einfärben
kann ich auch auf
Delphi-Quellcode:
prüfen?
if Kalender.objects[X,Y]=Kalender
dann bräuchte ich besagte prozedur nicht... :) [EDIT]-->Habs mal aus probiert hier also nochmal der komplette Quellcode für alle dies mal brauchen werden: alles wie oben(hat mit dem einfärben ja nichts zu tun ;) ) ...
Delphi-Quellcode:
und dann die DrawCell
DecodeDate(date,year,month,day);
for lauf := 1 to Tage do begin Inc(Zaehler); if count = 7 then begin count:=0; inc(row); Kalender.Cells[count,row]:=IntToStr(lauf); inc(count); end else begin Kalender.Cells[count,row]:=IntToStr(lauf); inc(count); end; if EncodeDate(year,month,zaehler)=date then begin Kalender.objects[count-1,row]:=Kalender; end; end; end;
Delphi-Quellcode:
procedure TForm1.KalenderDrawCell(Sender: TObject; x, Y: Integer;
Rect: TRect; State: TGridDrawState); begin (sender as TStringgrid).canvas.Brush.color:=(sender as TStringgrid).color; if Kalender.objects[X,Y]=Kalender then begin (sender as TStringgrid).canvas.Brush.color:=clInfoBk; (sender as TStringgrid).canvas.FillRect(rect); (sender as TStringgrid).canvas.TextOut(rect.left+2,rect.top+2,(sender as TStringgrid).Cells[X,Y]); end; end; Ein ganz großes THX an alle die mir geholfen haben :dp: ;) end. ;) |
Re: Aktuelles Datum Einfärben
Hallo,
na siehsde ;) und trotzdem beisst mich der doppelte Code ;)
Delphi-Quellcode:
Kalender.Cells[count,row]:=IntToStr(lauf);
inc(count); Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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