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

Вниз

Wrap text in editbox/memo   Найти похожие ветки 

 
Jon ©   (2008-02-05 00:41) [0]

How can I toggle word-wrap in a multi-line edit box (memo in mck)?
In the VCL I can use the WordWrap property. Is there a KOL equivalent?
I can change the style with WS_HSCROLL but the text is not wrapped.


 
Robt ©   (2008-02-05 12:47) [1]

MSDN
Handling Wordwrap and Line Breaks
EM_SETWORDBREAKPROC


 
=BuckLr= ©   (2008-02-05 13:50) [2]

In obj inspector Options - eo_NoHScroll := True ?


 
=BuckLr= ©   (2008-02-05 13:51) [3]


> EM_SETWORDBREAKPROC

Это для замены стандартной процедуры переноса. Не тот случай


 
Jon ©   (2008-02-05 21:47) [4]

Thanks - but to be able to change dynamically at runtime like notepad (wordwrap on/off)?


 
=BuckLr= ©   (2008-02-05 23:14) [5]

try:

None
   EditBox.Perform(EM_SHOWSCROLLBAR, SB_VERT, 0);
   EditBox.Perform(EM_SHOWSCROLLBAR, SB_HORZ, 0);
   
Both
   EditBox.Perform(EM_SHOWSCROLLBAR, SB_VERT, 1);
   EditBox.Perform(EM_SHOWSCROLLBAR, SB_HORZ, 1);

Vert
   EditBox.Perform(EM_SHOWSCROLLBAR, SB_VERT, 1);
   EditBox.Perform(EM_SHOWSCROLLBAR, SB_HORZ, 0);
   
Horz
   EditBox.Perform(EM_SHOWSCROLLBAR, SB_VERT, 0);
   EditBox.Perform(EM_SHOWSCROLLBAR, SB_HORZ, 1);


 
Дмитрий К ©   (2008-02-06 06:12) [6]

Recreate memo w/ or w/o eoNoHScroll


 
=BuckLr= ©   (2008-02-06 10:34) [7]


> Recreate memo w/ or w/o eoNoHScroll

Зачем? Во время recreate придётся сначала создать клон компонента, затем перенести текст и все нужные свойства ВРУЧНУЮ, сохранить и восстановить положение каретки, а затем уничтожить клон. Лучше послать несколько сообщений, imho. Я уже набил шишек на свою голову :)


 
Дмитрий К ©   (2008-02-06 10:44) [8]

Зачем клон-то? Сохранить все что нужно во временные переменные, уничтожить, создать. А вот по поводу сообщений, что-то у меня сомнения, действительно работает?


 
Jon ©   (2008-02-06 14:36) [9]

Thank you everyone for your input.

This is the only solution that works (simplified):

procedure WordWrapOff;
var
 SaveText: String;
begin
 SaveText := Memo1.Text;
// Save Memo1 position, size, etc...
 Memo1.Free;
 Memo1 := NewEditBox(Form,[eoMultiline]);
// Restore Memo1 position, size, etc...
 Memo1.Text := SaveText;
end;

procedure WordWrapOn;
var
 SaveText: String;
begin
 SaveText := Memo1.Text;
// Save Memo1 position, size, etc...
 Memo1.Free;
 Memo1 := NewEditBox(Form,[eoMultiline,eoNoHScroll]);
// Restore Memo1 position, size, etc...
 Memo1.Text := SaveText;
end;

Is using a temporary variable (SaveText) the most efficient way for managing (large) text?


 
=BuckLr= ©   (2008-02-06 15:29) [10]


> Сохранить все что нужно во временные переменные,

Можно и так, не спорю.


> А вот по поводу сообщений, что-то у меня сомнения, действительно
> работает?

Так проверь. У меня работало с richedit. я придерживаюсь мнения, что гораздо лучше послать несколько сообщений, чем создавать объект заново. А в случае Jon"а, наверное, будет лучше способ с пересозданием объекта.


> Is using a temporary variable (SaveText) the most efficient
> way for managing (large) text?


I think, yes.
SaveText := Memo1.Text - the text should not be copied, pointer to Memo1.Text will be assigned to SaveText.


 
Дмитрий К ©   (2008-02-06 16:01) [11]


> Так проверь.

Проверил. Никакой реакции.

to Jon
procedure ToggleWordWrap;
var s: string; wp: TWindowPlacement; cp: Integer;
begin
 wp.length := SizeOf(TWindowPlacement);
 GetWindowPlacement(memo.Handle, @wp);
 s := memo.Text;
 cp := memo.SelStart;
 memo.Free;
 if memo.Style and WS_HSCROLL = WS_HSCROLL then
   memo := NewEditbox(form, [eoMultiline, eoNoHScroll])
 else
   memo := NewEditbox(form, [eoMultiline]);
 memo.Text := s;
 memo.SelStart := cp;
 SetWindowPlacement(memo.Handle, @wp);
 //memo.Focused := True;
end;


 
=BuckLr= ©   (2008-02-06 20:04) [12]

Действительно. Оказалось, сообщения для richedit :) Ну тогда один вариант


 
Jon ©   (2008-02-06 23:34) [13]

Thank you all very much indeed :-)



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
2-1240863513
ForeverStudent
2009-04-28 00:18
2009.06.14
Фильтрация данных


2-1240130737
Андрей (начинающий)
2009-04-19 12:45
2009.06.14
Удаление записей из связанных таблиц


4-1210937602
_Z_
2008-05-16 15:33
2009.06.14
Сохранить пароль в защищенное хранилище


15-1239222048
Summer
2009-04-09 00:20
2009.06.14
Работа с датой и ее перевод в число


2-1240935307
Sowyer
2009-04-28 20:15
2009.06.14
Едиты ( часть II)