halli hallo
ich benutze die TrueFontWidth funktion :
Delphi-Quellcode:
function TForm1.TrueFontWidth(fnt: TFont;
const text:
string): Integer;
var
dc: hdc;
tsize : Windows.TSize;
begin
dc := GetDC(0);
SelectObject(
DC, fnt.Handle);
GetTextExtentPoint32(
dc, PChar(text), Length(text), tsize);
ReleaseDC(0,
DC);
Result := tsize.cx;
end;
um mir die textlänge ausgeben zu lassen
ich nutze diese funktion für ein autowrap, damit man nicht scrollen braucht.
doch diese funktioniert nicht optimal.
wenn ich das auf den webbrowser anwende klappt das nicht mehr so ganz.
anscheinend ist die darstellung im webbrowser mit gleicher FontName und FontSize eine
andere als in delphi.
hier ist meine autowrapfunktion:
Delphi-Quellcode:
procedure TForm1.autowrap(var str:string;maxwidth,fontsize:integer;fontfamiliy:string);
var i,j,linewidth,linecount:integer;
tempstr:string;
begin
font1:=TFont.Create;
font1.Size:=fontsize;
font1.Name:=fontfamiliy;
linewidth:=TrueFontWidth(font1,str);
linecount:=linewidth DIV maxwidth;
if (linewidth - maxwidth)>0 then begin
i:=1;
j:=1;
tempstr:=str[1];
repeat
inc(i);
tempstr:=tempstr+str[i];
if (TrueFontWidth(font1,tempstr)>=(maxwidth*j)) then begin
inc(j);
tempstr[Length(tempstr)]:=' ';
i:=i-1;
end;
until i>=Length(str);
str:=tempstr;
end;
str:=str+'
';
font1.Free;
end;
der text wird nie wirklich direkt am ende des fenster umgebrochen, sondern früher und immer unterschiedlich je nachdem welches zeichen ich benutze
ich hänge noch paar screenshots ran zum verständnis
hoffentlich kennt sich jemand damit aus ^^
kann es vielleicht sein, dass ich statt px, pt im WebBrowser verwenden muss ?
Delphi-Quellcode:
<div style="font-size:16px"> //das benutze ich
<div style="font-size:16pt"> // --> das pt
liegt es vielleicht daran ? ^^
Edit: pt und px kann ich nicht mit angeben:
WebBrowser1.OleObject.Document.Body.Style.fontsize:=StrToInt(textattr[1]);
da delphi nur einen integer verlangt
viel spaß beim antowrten