Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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 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 вся ветка

Форум: "KOL";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1240671432
AlexDan
2009-04-25 18:57
2009.06.14
SQL запрос


9-1180293174
man-1982
2007-05-27 23:12
2009.06.14
GLscene динамическое обновление тестур


2-1240836697
Student
2009-04-27 16:51
2009.06.14
Область видимости???


2-1240757274
buzb
2009-04-26 18:47
2009.06.14
Как проверить, существует ли файл на диске.


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский