Jak obliczyć wysokość tekstu w pikselach np. w memo?
TextHeight podaje wysokość jednej linii. Co zrobić kiedy linii jest wiele?
Lines.Count podaje ilość linii "po Enterze", a linie mogą się zawijać, wtedy jest ich więcej!!!
Ma ktoś pomysł? Kombinuję na wszystkie sposoby, ale rezultat nie ten.
Szukałem wszędzie i ... nic :-/
W memo wszystkie znaki mają tą samą wysokość. Pomnóż ilość wierszy*wysokość wiersza.
ważniejsze czy mają tę samą szerokość, jeśli tak to dodaj do ilości linii, ilość linii których długość przekracza ilość znaków które się mieszczą na szerokość
ostatnio ktoś tu był i pisał o podobnej rzeczy ale o widocznych akurat liniach, potem napisał że znalazł rozwiązanie ale się nim chyba publicznie nie podzielił
możesz się go chyba zapytać jeśli znajdziesz ten topic
Rosi napisał(a)
Szukałem wszędzie i ... nic :-/
a mógłbyś przybliżyć to wszędzie bo ja dość szybko znalazłem sposób
var
s: string;
r: TRect;
begin
s := mmo1.Text;
mmo1.Perform(EM_GETRECT, 0, LongInt(@r));
Canvas.Font := mmo1.Font;
DrawTextEx(Canvas.Handle, PChar(s), Length(s), r, DT_CALCRECT + DT_EDITCONTROL + DT_WORDBREAK + DT_NOPREFIX, nil);
ShowMessage(IntToStr(r.Bottom - r.Top));
end;
Dzięki Misiekd,
Kod wygląda niegłupio, ale sprawdzę go w domu wieczorem.
Pytasz gdzie szukałem - wszędzie: w książkach, w Internecie, na różnych forach (nie tylko polskich).
Uczę się od podstaw sam, idzie mi dość dobrze (kilka niezłych programów ułatwiających życie mnie i kolegom z pracy), jednak czasami trafiam na problem może banalny, ale bez podpowiedzi ani rusz.
Wielkie dzięki, masz u mnie duże piwo [browar]
Rosi