Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

Как сделать выравнивание по ширине в Memo?   Найти похожие ветки 

 
Shizik ©   (2006-02-04 17:55) [0]

Я его сам уже сделал только в конце все равно пробелы отсаються...
Как быть?


 
Кефир87 ©   (2006-02-04 17:58) [1]

Код в студию 8)


 
@BraIN ©   (2006-02-04 17:58) [2]

Код бы посмотреть для начала.


 
Shizik ©   (2006-02-04 18:01) [3]

procedure TForm1.WidthClick(Sender: TObject);
var
 i,j,p,k,l: Integer;
 S: String;
 SpaseWidth: Integer;
begin
 SpaseWidth:=Canvas.TextWidth(" ");
 for i:=0 to Memo1.Lines.Count-1 do
 begin
   s:=Memo1.Lines.Strings[i];
   k:=0;
   p:=0;
   if Length(SpaseArray)<>0 then SetLength(SpaseArray,0);
   for j:=0 to Length(s)-1 do
     if s[j]=" " then
       begin
         SetLength(SpaseArray,k+1);
         SpaseArray[k]:=j;
         Inc(k);
       end;
   if k=0 then Exit;
   p:=(Memo1.ClientWidth-Canvas.TextWidth(s)) div SpaseWidth;
   p:=Round(p div k);
   if p=0 then Exit;
     for j:=k-1 downto 0 do
     begin
         l:=0;
         while l<>p do
         begin
           Insert(" ", S, SpaseArray[j]);
           Inc(l);
         end;
     end;
   Form1.Caption:=IntToStr(Memo1.ClientWidth-Canvas.TextWidth(s));
   Memo1.Lines.Strings[i]:=s;
 end;
end;
Это код процедуры обработчика...


 
Anatoly Podgoretsky ©   (2006-02-04 18:06) [4]

Это же ты пробелы вставляешь, а не выравниваешь по ширине. Выравнивание по ширине это достаточно сложная, низкоуровневая задача, надо оперировать характеристиками шрифта на уровне плохо описаного (сложного) АПИ Виндоус. Лучше перейти от TMemo к чему ни будь другому. Например сделать обертку вокруг RichEdit 3.0


 
Shizik ©   (2006-02-04 18:31) [5]

Дело  в том что мне надо сделать это выравнивание именно в Memo, а самый простой способ это сделать (по моему мнению) это подстановка пробелов...но возникли проблемы...


 
sniknik ©   (2006-02-04 18:38) [6]

> но возникли проблемы...
шрифт оказывается не моноширинный? ;о)

ну так выбери такой какой надо (например "Lucida Console") правда проиграеш в его "читабельности".


 
Shizik ©   (2006-02-04 18:41) [7]

Моноширный не моноширный...это не важно...вот в чем соль...


 
Anatoly Podgoretsky ©   (2006-02-04 19:10) [8]

А что важно?


 
Shizik ©   (2006-02-04 20:04) [9]

Важно то что алгоритм должен работать при любом шрифте и размере...!!!


 
HITMAN ©   (2006-02-04 20:08) [10]

Courier New    сизе 10
и читаемо и послушно



Страницы: 1 вся ветка

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.048 c
2-1138893450
Dysan
2006-02-02 18:17
2006.02.19
работа с динамической памятью!


15-1138337131
begin...end
2006-01-27 07:45
2006.02.19
С Днём рождения! 27 января


8-1126183451
Максим
2005-09-08 16:44
2006.02.19
Конвертация цветовых схем


8-1126147717
dm37
2005-09-08 06:48
2006.02.19
Вывод формы на второй экран монитора?


2-1139089031
Вячеслав Бессонов
2006-02-05 00:37
2006.02.19
TMemo