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

Вниз

Странная фича Мемо   Найти похожие ветки 

 
Германн ©   (2013-10-11 01:26) [0]

Д2007
TMemo. WantReturns = True, ScrollBars = ssNone
код
Memo.Lines.Clear;
 Memo.Lines.Add("");
 for i:=0 to 100 do
   Memo.Lines[0]:=Memo.Lines[0]+IntToStr(i)+#9;


Мемо нормально (по порядку) заполняет верхнюю строку, а начиная со второй строки начинает вдвигать очередные числа слева-направо.
С чего бы такое поведение? Оптимизация выключена.


 
KilkennyCat ©   (2013-10-11 01:28) [1]

вордврап+таб?


 
KilkennyCat ©   (2013-10-11 01:30) [2]

а если так: Memo.Lines[0]+IntToStr(i)+" ";


 
KilkennyCat ©   (2013-10-11 01:32) [3]

а вообще, ты так сильно нагружаешь мемо по пересчету и отрисовке.
лучше через буферную строку


 
Германн ©   (2013-10-11 02:12) [4]

Не. #9 тут не при чем. Он только для увеличения длины текста. Можно и без него. Результат тот же.

> ты так сильно нагружаешь мемо по пересчету и отрисовке

Да нет Эту фичу/баг заметил просто случайно в тесте. Выводил в мемо для наглядности получаемые коды от железяки. А они вдруг поперли не в том порядке.


 
[ВладОшин] ©   (2013-10-11 08:35) [5]

Memo.Lines.beginupdate;
Memo.Lines[0]:=Memo.Lines[0] + #13#10 + IntToStr(i);
Memo.Lines.endupdate;

?


 
brother ©   (2013-10-11 08:50) [6]

repaint после всего?


 
Inovet ©   (2013-10-11 09:08) [7]

ShowMessage(IntToStr(Memo.Lines.Count));


 
Inovet ©   (2013-10-11 09:11) [8]

Тогда уж

 Memo.Lines.Clear;
 for i:=0 to 100 do
   Memo.Lines.Text:=Memo.Text+IntToStr(i)+#9;


 
sniknik ©   (2013-10-11 09:52) [9]

> Странная фича Мемо
нормальная фича... правильная если подумать, зависит от WordWrap, вот если руками в строку писать и нужен перенос куда его вставить? логично в начало строки а то, что во второй сдвинуть вправо... а вовсе не перекинуть в конец текста и добавлять там.
а работаешь ты именно со строкой, так как будто "набиваешь руками".

поставь WordWrap в начале в фалсе, и только после внесения всего в труе, тогда работая с полными данными разобьет текст как тебе нужно. ну или работать со всем текстом, а не "построково".


 
Styx   (2013-10-11 09:56) [10]

Имхо, логичное поведение. Вы просите вставить текст в конец первой строки, он туда не умещается - следовательно, попадает в начало второй...


 
KilkennyCat ©   (2013-10-11 10:00) [11]


> Styx   (11.10.13 09:56) [10]
> sniknik ©   (11.10.13 09:52) [9]


точно! а как ж я не догадался... старею.


 
Германн ©   (2013-10-11 10:39) [12]


> Имхо, логичное поведение

Имхо какая-то извращенная логика.


 
Inovet ©   (2013-10-11 11:06) [13]

> [12] Германн ©   (11.10.13 10:39)
> Имхо какая-то извращенная логика.

Где она извращённая? У тебя в какой-то момент стало 2, потом 3 и т.д. строк, а ты постоянно добавляешь в в первую (которая 0). По какой логике должно добавиться в последнюю? По-моему как раз по извращённой.


 
[ВладОшин] ©   (2013-10-11 11:07) [14]

.Lines.Insert

а если много строк, лучше add - ниче страшного, проскролят. Комп надо жалеть больше чем юзеров:)


 
Inovet ©   (2013-10-11 11:19) [15]

> [14] [ВладОшин] ©   (11.10.13 11:07)
> лучше add

Нафига, если оно само сделается.


 
Германн ©   (2013-10-11 11:35) [16]


> Inovet ©   (11.10.13 11:06) [13]
>
> > [12] Германн ©   (11.10.13 10:39)
> > Имхо какая-то извращенная логика.
>
> Где она извращённая? У тебя в какой-то момент стало 2, потом
> 3 и т.д. строк, а ты постоянно добавляешь в в первую (которая
> 0). По какой логике должно добавиться в последнюю?

Делфи на новой работе нет. Проверить не могу, но вроде Memo.Lines.Count должен всегда показывать 1. Знаю только что Text покажет сплошной набор введенных данных без разделителей строк.


 
Inovet ©   (2013-10-11 11:53) [17]

> [16] Германн ©   (11.10.13 11:35)
> Проверить не могу, но вроде Memo.Lines.Count должен всегда показывать 1

Я посмотрел - для твоего примера показывает разное количество в зависимости от ширины мемо.


 
Inovet ©   (2013-10-11 11:57) [18]

> [17] Inovet ©   (11.10.13 11:53)
> для твоего примера

Вернее для
> [8] Inovet ©   (11.10.13 09:11)

но не суть.


 
KilkennyCat ©   (2013-10-11 12:54) [19]


> но вроде Memo.Lines.Count должен всегда показывать 1

в том-то и дело, что нет.
список содержит отображаемые строки, т.е. после вордврапа


 
KilkennyCat ©   (2013-10-11 12:55) [20]

я раньше делал так "через одно место" форматирование текста (когда не знал про DT_CALCRECT).


 
jumping jack   (2013-10-11 17:16) [21]

хотите нормальную, неизвращенную логику?
Memo.Lines.Text:=Memo.Lines.Text+IntToStr(i)+#9;


 
Германн ©   (2013-10-11 19:54) [22]


> KilkennyCat ©   (11.10.13 12:54) [19]
>
>
> > но вроде Memo.Lines.Count должен всегда показывать 1
>
> в том-то и дело, что нет.

Тогда беру свои слова взад. Действительно получается некорректная ситуация из которой выбран именно такой вариант выхода.



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

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

Наверх




Память: 0.52 MB
Время: 0.012 c
15-1378900706
Серёга
2013-09-11 15:58
2014.04.06
О чём "говорят" цифры


15-1381440410
Германн
2013-10-11 01:26
2014.04.06
Странная фича Мемо


3-1297079250
well
2011-02-07 14:47
2014.04.06
DBLookUpComboBox конфликт


15-1381797550
RWolf
2013-10-15 04:39
2014.04.06
VirtualStringTree, иконки


2-1372013918
Ponchik
2013-06-23 22:58
2014.04.06
Сортировка таблицы