Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Texte in DBGrid formatieren!

  Alt 14. Apr 2006, 10:59
Hallo Jannik.

Der folgende Code zeigt dir im Prinzip, wie du in einer Zelle verschiedene Styles verwenden kannst. Da du keine Kriterien angegeben hast, habe ich im Beispiel einfach den Zellentext in Wörter zerlegt und schreibe dann Wörter fett, wenn sie mehr als fünf Zeichen lang sind.

Delphi-Quellcode:
function LeadingBlanks(s: String; index: Integer): Integer;
begin
  Result := 0;
  while (index + Result < Length(s)) and (s[index + Result] = ' ') do
    Inc(Result);
end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  s, sPart: String;
  iLeft, iStart, iLength: Integer;
begin
  s := Column.Field.AsString;
  with (Sender as TDBGrid).Canvas do
  begin
    iLeft := Rect.Left + 2;
    iStart := 1;
    while iStart <= Length(s) do
    begin
      if s[iStart] = ' '
        then iLength := LeadingBlanks(s, iStart)
        else iLength := PosEx(' ', s, iStart) - iStart;
      if iLength < 0 then
        iLength := Succ(Length(s) - iStart);
      if iLength > 5
        then Font.Style := Font.Style + [fsBold]
        else Font.Style := Font.Style - [fsBold];
      sPart := Copy(s, iStart, iLength);
      TextOut(iLeft, Rect.Top + 2, sPart);
      iLeft := iLeft + TextWidth(sPart);
      iStart := iStart + iLength;
    end;
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat