Einzelnen Beitrag anzeigen

jokerfacehro
(Gast)

n/a Beiträge
 
#1

truefontwidth + TWebBrowser

  Alt 10. Feb 2007, 11:10
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
Miniaturansicht angehängter Grafiken
autowrap_202.jpg  
  Mit Zitat antworten Zitat