Registriert seit: 28. Nov 2003
102 Beiträge
|
Re: Smileys in einer Listbox?
22. Nov 2005, 17:04
Ok ich habs geschafft! Ich hab das im ondrawitem geschrieben:
Delphi-Quellcode:
const
SM1 = ':)';
var
s, t: String;
m, z: Integer;
begin
try with (Control as TListbox) do begin
z := 0;
s := Items[Index];
Canvas.Brush.Style := bsClear;
while Pos(SM1, s) > 0 do begin
t := Copy(s, 1, Pos(SM1, s) - 1);
m := Canvas.TextWidth(t);
Canvas.TextRect(Rect, Rect.Left + z, Rect.Top, t);
Canvas.Draw(Rect.Left + z + m, Rect.Top, self.image1.Picture.Bitmap);
Delete(s, 1, Pos(SM1, s) - 1);
Delete(s, 1, Length(SM1) );
z := z + m + self.image1.Width + 2;
end;
Canvas.TextRect(Rect, Rect.Left + z, Rect.Top, s);
end;
except
end;
end;
Allerdings klappt das nur für 1 Smiley :'( wenn ich noch ne 2. Konstante definiere z.B SM2 = 'o_O'; und den selben Coden nochmal an den hier ranhänge dann löscht er die zeichen nicht mehr sondern lässt sie stehen und malt das bild noch drüber, so das man beides sieht.
Delphi-Quellcode:
const
SM1 = ':)';
Sm2 = 'o_O';
var
s, t: String;
m, z: Integer;
begin
try with (Control as TListbox) do begin
z := 0;
s := Items[Index];
Canvas.Brush.Style := bsClear;
while Pos(SM1, s) > 0 do begin
t := Copy(s, 1, Pos(SM1, s) - 1);
m := Canvas.TextWidth(t);
Canvas.TextRect(Rect, Rect.Left + z, Rect.Top, t);
Canvas.Draw(Rect.Left + z + m, Rect.Top, self.image1.Picture.Bitmap);
Delete(s, 1, Pos(SM1, s) - 1);
Delete(s, 1, Length(SM1) );
z := z + m + self.image1.Width + 2;
end;
Canvas.TextRect(Rect, Rect.Left + z, Rect.Top, s);
end;
except
end;
try with (Control as TListbox) do begin
z := 0;
s := Items[Index];
Canvas.Brush.Style := bsClear;
while Pos(SM2, s) > 0 do begin
t := Copy(s, 1, Pos(SM2, s) - 1);
m := Canvas.TextWidth(t);
Canvas.TextRect(Rect, Rect.Left + z, Rect.Top, t);
Canvas.Draw(Rect.Left + z + m, Rect.Top, self.image2.Picture.Bitmap);
Delete(s, 1, Pos(SM2, s) - 1);
Delete(s, 1, Length(SM2) );
z := z + m + self.image2.Width + 2;
end;
Canvas.TextRect(Rect, Rect.Left + z, Rect.Top, s);
end;
except
end;
end;
Kann mir einer sagen woran das liegt und wie ich das beheben kann?
Wieviel Lösungen hat die Gleichung x^13=1? .... 13!
|