AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aktuelles Datum Einfärben

Ein Thema von Fussel9 · begonnen am 28. Dez 2009 · letzter Beitrag vom 30. Dez 2009
Antwort Antwort
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#1

Aktuelles Datum Einfärben

  Alt 28. Dez 2009, 16:44
Hi hab das schon in nem anderen Thread angesprochen, aber scheinbar lohnt es sich doch nen neuen Thread aufzumachen:

Frage und co siehe hier:Frage und Co. am Ende des Thread
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Aktuelles Datum Einfärben

  Alt 28. Dez 2009, 16:45
Zitat von Fussel9:
Hi hab das schon in nem anderen Thread angesprochen, aber scheinbar lohnt es sich doch nen neuen Thread aufzumachen:

Frage und co siehe hier:



Edit: Ah, jetzt ja.
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Aktuelles Datum Einfärben

  Alt 28. Dez 2009, 17:37
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:
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;
Vielleicht hilft das ja irgendwie....
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
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Aktuelles Datum Einfärben

  Alt 28. Dez 2009, 18:17
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.
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Aktuelles Datum Einfärben

  Alt 29. Dez 2009, 16:57
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:
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
Die if then anfrage nicht erfüllt wird daher wird das Feld des aktuellen Datums nicht eingefärbt was nun mal mein plan war

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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Aktuelles Datum Einfärben

  Alt 29. Dez 2009, 21:25
Hallo,

Kalender.objects[count,row]:=TObject(1); //<-Das Tuts nicht AHA !!!!!

Wer hätte das gedacht ...


Kalender.objects[count,row]:= Kalender; Im OnDrawCell dann einfach Prüfen auf

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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Aktuelles Datum Einfärben

  Alt 29. Dez 2009, 21:53
kann ich auch auf

if Kalender.objects[X,Y]=Kalender prüfen?

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:
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;
und dann die DrawCell

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


end.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Aktuelles Datum Einfärben

  Alt 30. Dez 2009, 08:28
Hallo,

na siehsde

und trotzdem beisst mich der doppelte Code

Delphi-Quellcode:
Kalender.Cells[count,row]:=IntToStr(lauf);
inc(count);

Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz