Текущий архив: 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