Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
ВнизTRichEdit Найти похожие ветки
← →
NickBat (2003-09-25 15:25) [0]А есть ли возможность в стандартном TRichEdit изменять ширину интервала между абзацами?
← →
NickBat (2003-09-25 16:46) [1]Во как! Ну хоть скажите, что нельзя. :)))
← →
ZEE (2003-09-25 16:52) [2]>NickBat © (25.09.03 16:46) [1]
>Во как! Ну хоть скажите, что нельзя. :)))
можно - но вот как - не знаю.
например можно из Ворда вставить отформатированный текст с разным межстрочным расстоянием - РичЭдит отобразит как и в Ворде эти интервалы разными...
← →
NickBat (2003-09-25 17:24) [3]Ну то, что отобразит верно это я знаю! :) А вот как изменить?
В Ворде за это отвечает свойство: ParagraphFormat.SpaceBefore
А вот как добраться до этого через RichEdit?
← →
MBo (2003-09-25 17:40) [4]в структуре PARAFORMAT2 (нужен Rich Edit 2.0) есть dySpaceBefore.
Возможно, стоит попробовать записать RTF с отступом и посмотреть, какой тэг за это отвечает, и вставлять его руками.
← →
NickBat (2003-09-25 18:47) [5]Спасибо MBo © (25.09.03 17:40) [4]
Уже, что-то.
Хотя если вставлять руками, то зачем мне TRichEdit?
:))
← →
ЮЮ (2003-09-26 02:32) [6]> MBo © (25.09.03 17:40) [4]
> в структуре PARAFORMAT2 (нужен Rich Edit 2.0) есть dySpaceBefore.
Используй RxRichEdit, поддерживающий Rich Edit 2.0:
unit RxRichEd;
...
TParaFormat2 = record
...
dySpaceBefore: Longint; { Vertical spacing before paragraph }
dySpaceAfter: Longint; { Vertical spacing after paragraph }
...
← →
ZEE (2003-09-26 10:05) [7]> ЮЮ © (26.09.03 02:32) [6]
> Используй RxRichEdit, поддерживающий Rich Edit 2.0:
>
> unit RxRichEd;
> ...
> TParaFormat2 = record
> ...
> dySpaceBefore: Longint; { Vertical spacing before
> paragraph }
> dySpaceAfter: Longint; { Vertical spacing after
> paragraph }
это понятно, все валяется в RichEdit.pas, а как это применить?
думается что-то типа такого:
var pf:TParaFormat2;
...
pf.dySpaceBefore:=20;
SendMessage(RichEdit1.Handle,EM_SETPARAFORMAT,PFM_SPACEBEFORE,lparam(@pf));
но похоже не совсем...
← →
MBo (2003-09-26 10:11) [8]кроме задания dySpaceBefore:=20, надо еще в маске установить, что этот член структуры учитывать
← →
ZEE (2003-09-26 10:20) [9]хорошо, подправляем так:
var pf:TParaFormat2;
...
pf.dwMask:=PFM_SPACEBEFORE;
pf.dySpaceBefore:=20;
SendMessage(RichEdit1.Handle,EM_SETPARAFORMAT,PFM_SPACEBEFORE,lparam(@pf));
- тот же результат - т.е. никакого результата...
← →
MBo (2003-09-26 10:56) [10]procedure TForm1.Button2Click(Sender: TObject);
var pf:TParaFormat2;
begin
richedit1.SelStart:=20;
richedit1.Sellength:=20;
FillChar( pf, sizeof(pf), 0);
pf.cbSize:=SizeOf(pf);
pf.dwMask:=PFM_SPACEBEFORE;
pf.dySpaceBefore:=100;// Twips!
SendMessage(RichEdit1.Handle,EM_SETPARAFORMAT,0,lparam(@pf));
end;
← →
ZEE (2003-09-26 11:01) [11]ну
FillChar( pf, sizeof(pf), 0);
- это у меня было и так, а селекшн я руками делал - все одно не работает...
MBo © а код из [10] рабочий, проверенный?
← →
MBo (2003-09-26 11:04) [12]да, проверен.
D5
обычный richedit
WinXP
← →
ZEE (2003-09-26 11:06) [13]у меня D6 + Win2K + TRichEdit(тоже обычный) - и ничего, кстати в обрати внимание на тему - [D6], но я не думаю что в шестерке это надо по-другому делать... грабли где-то в другом месте...
← →
MBo (2003-09-26 11:17) [14]для чистоты эксперимента: пустой рич, после выполнения расстояние перед двойками и тройками увеличено.
procedure TForm1.Button2Click(Sender: TObject);
var pf:TParaFormat2;
var i:integer;
begin
for i:=0 to 5 do
richedit1.lines.add(StringOfChar(Chr($30+i),8));
richedit1.SelStart:=20;
richedit1.Sellength:=20;
FillChar( pf, sizeof(pf), 0);
pf.cbSize:=SizeOf(pf);
pf.dwMask:=PFM_SPACEBEFORE;
pf.dySpaceBefore:=200;//Twips!
SendMessage(RichEdit1.Handle,EM_SETPARAFORMAT,0,lparam(@pf));
end;
← →
ZEE (2003-09-26 11:35) [15]ок, получилось - все дело было в
pf.cbSize:=SizeOf(pf);
- точнее в отсутствии этой строки
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c