Længde på string i pixels??

Tags:    delphi

Hej!!
Jeg sad lige og tænkte på om det mon kunne lade sig gøre at måle længden på en string ud i pixels!!

Hvis det kan hvordan gøres det så??

/Mads



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hej!!
Jeg sad lige og tænkte på om det mon kunne lade sig gøre at måle længden på en string ud i pixels!!

Hvis det kan hvordan gøres det så??

/Mads

Da er der ingen grund til at oprette en label for at finde længden:

form1.canvas.TextWidth('teksten');

Begrænsning på længden af en Label:

Label1.autoSize := false;
Label1.width := 100; //begrænsning

MvH

Stefan Svensson
http://fusket.frac.dk

[Redigeret d. 04/11-03 17:25:07 af Stefan Svensson]



Du kan jo kopiere den til en label og så tage længden vha. Label1.width - den er i pixels... :)



Du kan jo kopiere den til en label og så tage længden vha. Label1.width - den er i pixels... :)


Hvorfor Tænkte jeg ikke selv på det... Nå men prøver det lige og så får du pointene hvis det duer :D.

/Mads



Du kan jo kopiere den til en label og så tage længden vha. Label1.width - den er i pixels... :)

Hvorfor Tænkte jeg ikke selv på det... Nå men prøver det lige og så får du pointene hvis det duer :D.

/Mads


Det virker, men kan det også lade sig gøre at sætte en max længde på en label (i pixels)?? hvis du lige kan svare på det så får du pointene


/Mads



Hej!!
Jeg sad lige og tænkte på om det mon kunne lade sig gøre at måle længden på en string ud i pixels!!

Hvis det kan hvordan gøres det så??

/Mads

Hej

Du kan bruge GDI til at beregne størrelsen af din tekst vha. af funktionen "DrawText".

[pre]
function StrBounds(AText : String; ACanvas : TCanvas) : TRect;
var
Old : HGDIOBJ;
PC : PChar;
L : Integer;
R : TRect;
begin
Old := SelectObject(ACanvas.Handle, ACanvas.Font.Handle);
PC := PChar(AText);
L := StrLen(PC);
R := Rect(1,1,1024,768);
Windows.DrawText(ACanvas.Handle, PC, L, R, DT_CALCRECT+DT_SINGLELINE+DT_NOPREFIX);
SelectObject(ACanvas.Handle, Old);
Result := R;
end;
[pre]

Kig på hjælpen til DrawText for at finde de andre DT konstanter som du kan bruge.

Du kan også bruge TCanvas.TextWidth og TCanvas.TextHeight.

/Michael.



t