Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Gelöst: Algorithmus zum Ermitteln bestimmter StringGrid-Zellen

  Alt 29. Jul 2012, 12:35
Ist sichergestellt, daß diese Methode erst dann aufgerufen wird, wenn das Grid schon auch Daten hat?

Mit Sys- bzw. DateUtils tust du dir leichter.

Ungetestet:

Delphi-Quellcode:
function ExtractDate(const S: string): string;
var
  L: integer;
begin
  L := Pos(sLineBreak, S);
  if L > 0 then
    Dec(L)
  else
    L:= Length(S);
  Result := Copy(S, 1, L);
end;

function CheckDate(const S: string): boolean;
var
  ADate: TDateTime;
  AYear, AMonth, ADay: Word;
begin
  Result := false;
  if SysUtils.TryStrToDate(ExtractDate(S), ADate) then
  begin
    SysUtils.DecodeDate(ADate, AYear, AMonth, ADay);
    Result := DateUtils.IsValidDate(AYear, AMonth, ADay);
  end;
end;

procedure TForm1.StrGrid_MonatDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Ausrichtung: TAlignment;
  AusrichtungFlag: boolean;
begin
  if CheckDate(StrGrid_Monat.Cells[ACol, ARow]) then
  begin
    if Pos(sLineBreak, StrGrid_Monat.Cells[ACol, ARow]) > 0 then
    begin
      StrGrid_Monat.Canvas.Font.Color := Konst.Benutzer.TermStrGridEinColorFont;
      StrGrid_Monat.Canvas.Brush.Color := Konst.Benutzer.TermStrGridEinColor;
    end
    else
    begin
      StrGrid_Monat.Canvas.Font.Color := Konst.Benutzer.TermStrGridColorFont;
      StrGrid_Monat.Canvas.Brush.Color := Konst.Benutzer.TermStrGridColor;
    end;
  end
  else
  begin
    StrGrid_Monat.Canvas.Font.Color := Konst.Benutzer.TermStrGridOtherColor;
    StrGrid_Monat.Canvas.Brush.Color := Konst.Benutzer.TermStrGridColor;
  end;
  StrGrid_Monat.Canvas.FillRect(Rect);
  if ACol = 0 then
  begin
    Ausrichtung := taRightJustify;
    AusrichtungFlag := false;
  end
  else
    if ARow > 0 then
    begin
      Ausrichtung := taLeftJustify;
      AusrichtungFlag := true;
    end
    else
    begin
      Ausrichtung := taCenter;
      AusrichtungFlag := false;
    end;
  StrGridAusrichtung(StrGrid_Monat, Rect, ACol, ARow, Ausrichtung, AusrichtungFlag);
end;

Geändert von Bjoerk (29. Jul 2012 um 13:08 Uhr) Grund: ExtractDate erforderlich
  Mit Zitat antworten Zitat