Конференция "KOL" » EditBox, метод Add и св-во Caption [Delphi]
 
  • Ruzzz (25.07.09 15:00) [0]
    В книге KOL написано «2.23.6. Текст окна и шрифт для окна - Caption ...  Хранится в буфере, по крайней мере, до момента создания окна для объекта (после чего содержимое буфера игнорируется, а чтение и запись свойства происходит путем чтения или установки текста окна, через функции API)»

    1) Но вот если создаю NewEditBox(Form, [eoMultiline]) и добавляю текст «вручную», а затем использую где-нибудь MemoLog.Add(Str), то текст добавленный «вручную пропадает».

    Получается что при Add я попадаю в KOL_ASM.inc - function TControl.Add, где выполняется код:
    @@add_text_simple:
           LEA      EAX, [EBX].fCaption
           CALL     System.@LStrCat
           MOV      EDX, [EBX].fCaption
           MOV      EAX, EBX
           CALL     SetCaption

    Здесь в EBX ранее переданный из EAX указатель на self, а в EDX добавляемая строка. То есть получается мы используем буфер FCaption, но никак не API, и это проблема :(

    В KOL.pas нашел TControl.Add и вроде бы он должен работать с API, но это pascal версия и  не совсем тогда понимаю, почему такая разная реализация? И как подключить ее?

    2) Проблема также в том что многие функции для изменения текста, используют API для получения этого текста, но не буфер, например в KOL.pas - TControl.DeleteLines, в ней используется TControl.ReplaceSelection, которая использует API.

    Помогите разобраться, возможно эти моменты уже где-то описаны? Спасибо!
  • Ruzzz (25.07.09 15:08) [1]
    Получается что вместо метода Add(Str) лучше использовать Memo.Caption := Memo.Caption + Str.
    Еще бы разобраться как полностью отключить буфер fCaption?
  • Ruzzz (25.07.09 16:09) [2]
    Запутался я, DeleteLines работает, вроде бы не работал :(
 
Конференция "KOL" » EditBox, метод Add и св-во Caption [Delphi]
Есть новые Нет новых   [134465   +2][b:0][p:0.001]