Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2014.04.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
Германн ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.002 c
15-1381571203
RDen
2013-10-12 13:46
2014.04.06
боян - выбор конфигурации компа


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


11-1235303269
Dy1
2009-02-22 14:47
2014.04.06
глючный KOLAdd


15-1381492740
v1.0
2013-10-11 15:59
2014.04.06
Назвать классы


2-1372226643
Vasa777
2013-06-26 10:04
2014.04.06
Размер итемов mainmemu





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский