Форум: "KOL";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];
Вниз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 Jonprocedure 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 вся ветка
Форум: "KOL";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c