Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
Delphi 3 Professional
|
Re: StringGrid Farbe einzelner Wörter in einzelnen Zellen de
6. Dez 2005, 16:24
Hallo,
hab mal ein paar Änderungen vorgenommen.
Wenn Du Zeilenumbrüche realisieren willst, musst Du mit TextHeight die Höhe des Textes ermitteln und den Wert bei Rect.Top berücksichtigen.
Die geänderten Codezeilen sind markiert.
Delphi-Quellcode:
procedure TForm1.StringGrid_TestDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
sTemp,s : String;
x : Integer;
begin
sTemp := StringGrid_Test.Cells[ACol, ARow];//<---------
StringGrid_Test.Canvas.FillRect(Rect);
//Text wird doch weiter unten geschrieben
//DrawText(StringGrid_Test.canvas.Handle, PChar(s), Length(s), Rect, DT_left+DT_Vcenter);
with StringGrid_Test do
if not (gdFixed in State) then
begin
if Pos('Meier',sTemp) > 0 then
begin
s := Copy(sTemp,1,Pos(' ',sTemp)-1);
Canvas.Font.Style := [fsBold];
Canvas.Font.Color := clred;
Canvas.TextOut(Rect.Left+2,Rect.Top+2,s);
x := Canvas.TextHeight(s);//<--- TextHeight
Canvas.Font.Style := [];
Canvas.Font.Color := clBlue;
s := Copy(sTemp,Pos(' ',sTemp)+1,MAXINT);//+1, weil sonst führendes Leerzeichen
Canvas.TextOut(Rect.Left+2,Rect.Top+2+x,s);//Top + x = nächste Zeile
end;
if Pos('Müller',sTemp) > 0 then
begin
s := Copy(sTemp,1,Pos(' ',sTemp)-1);
Canvas.Font.Style := [fsBold];
Canvas.Font.Color := clLime;
Canvas.TextOut(Rect.Left+2,Rect.Top+2,s);
x := Canvas.TextHeight(s);
Canvas.Font.Style := [];
Canvas.Font.Color := clBlue;
s := Copy(sTemp,Pos(' ',sTemp)+1,MAXINT);
Canvas.TextOut(Rect.Left+2,Rect.Top+2+x,s);
end;
end;
end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Zitat
|