Перед тем, как вычислить позицию фразы, необходимо с помощью функции TextWidth вычислить ее ширину.
Например:
var
J, TempInt, LongPrefixLen, CurrPrefixLen: Integer;
begin {Вычисляем TextWidth по ключевой строке} {Устанавливаем CurrPrefixLen в TextWidth ключевого слова строки Indexth} LongPrefixLen := 0; for J := 0 to ListBox1.Items.Count-1 do with ListBox1.Canvas do begin TempInt:= TextWidth(Copy(Items[J],1,Pos(KeyString,Items[J]-1))); if LongPrefixLen < TempInt then LongPrefixLen:= TempInt; if J = Index then CurrPrefixLen:= TempInt; end; {PrevTextLeft - TextLeft = Где мы хотим вывести новый элемент} TextOut(LongPrefixLen-CurrPrefixLen,Y,Items[I]); end; |
[001458]