AGB  ·  Datenschutz  ·  Impressum  







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

Texte in DBGrid formatieren!

Ein Thema von Goldesel · begonnen am 14. Apr 2006 · letzter Beitrag vom 14. Apr 2006
Antwort Antwort
Benutzerbild von Goldesel
Goldesel

Registriert seit: 22. Nov 2004
Ort: Lübeck
202 Beiträge
 
Delphi 2005 Architect
 
#1

Texte in DBGrid formatieren!

  Alt 14. Apr 2006, 09:23
Hallo,

ich habe die Eigenschaften einer DBGrid so verändert, dass sie im Prinzip aussieht wie eine Listbox. Das heißt unter "options" so einiges auf "false" gesetzt. Jetzt möchte ich gerne, dass ich in einer Zeile einige Textabschnitte formnatiert bekommen. Mir würde fett und kursiv vollkommen ausreichen. Also z.B.

Hallo wie geht's?

Danke
Jannik
  Mit Zitat antworten Zitat
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
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 05:36 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