Форум: "KOL";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
ВнизПро DeleteLines Найти похожие ветки
← →
=BuckLr= (2007-06-10 19:25) [0]Обнаружил, что DeleteLines не удаляет линию, если она
I1 := Item2Pos( FromLine );
I2 := Item2Pos( ToLine+1 );
SStart := SelStart;
SLength := SelLength;
SelStart := I1;
SelLength := I2 - I1;
В этом случае SelStart и SelLength - оба будут равны нулю
← →
=BuckLr= (2007-06-10 19:26) [1]
> если она
последняя :)
← →
Vladimir Kladov (2007-06-10 19:49) [2]Удаление непустой последней строки:
procedure TForm1.Button16Click(Sender: PObj);
var i: Integer;
begin
i := Memo1.Count-1;
if Memo1.Items[ i ] = "" then dec( i );
if i < 0 then Exit;
Memo1.DeleteLines( i, i );
end;
проверил, работает.
← →
=BuckLr= (2007-06-10 22:57) [3]Ну я примерно так и делаю. Просто думал, может имеет смысл чуть подправить исходную процедуру, чтобы удаляла любую строчку :) если вы не против, конечно
← →
=BuckLr= (2007-06-10 23:29) [4]Не, всё-таки, не так я делаю, у меня удаляет :) А ваш код имеет тот же недостаток - не удаляет именно последнюю линию. Удаляет нормально только если последняя линия является пустой и содержит #13#10. А если не содержит, то хана :)
Т.е. если нажать контрол+а, удалить ВЕСЬ текст, а затем ввести одну лишь строку, не нажимая интер, то ничего не будет - строка останется на месте. А если на следующей строке даже ничего нет, но на ней стоит каретка (нажали интер), то строка будет удалена. Вот я про что.
← →
Vladimir Kladov (2007-06-11 09:37) [5]На memo - работает. Ctrl+A - работает только для rich edit, сам. Но и на RichEdit тоже работает, проверил. Даже после ctrl+A и ввода текста без последненго enter.
Может, разница в ОС? У меня XP. С unicode не проверял.
← →
=BuckLr= (2007-06-11 21:17) [6]Jсь у меня XP тоже, сервиспак 2 плюс куча обновлений самых новых. КОЛ 2,66. От юникода не зависит. Вот, выложил проект, можете посмотреть: http://ifolder.ru/2314526
Первая кнопка у меня не удаляет, вторая - удаляет. Но стоит снести строку в первом мемо, как нажатие на кнопку приведёт к желаемому эффекту. Может быть, у вас будет по-другому, мне тоже интересно. А пока я поступаю тупо - определяю символы возврата каретки в конце текста в мемо, и если их нет и строка последняя - сношу каретку.
← →
Vladimir Kladov (2007-06-11 21:43) [7]Что я могу сказать. И правда не работает, если программно добавлять. Поздравляю, вы нашли ошибку в MSDN. По поводу EM_LINEINDEX там написано:
Return Value
The return value is the character index of the line specified in the wParam parameter, or it is –1 if the specified line number is greater than the number of lines in the edit control.
Но возвращается 0, а не -1 (которое было бы = $FFFFFFFF как DWORD).
В обновлении исправлю.
← →
=BuckLr= (2007-06-11 23:00) [8]
> Поздравляю, вы нашли ошибку в MSDN
Не очень радуют такие ошибки в мсдн"не и в самой системе :( Однако...
← →
Vladimir Kladov (2007-06-12 12:19) [9]О! Я не прав. (Но и не лев). Это не MSDN, это я виноват. Надо было внутрь Item2Pos / Pos2Item смотреть. Там стоит зануление отрицательного результата. Достаточно убрать лишний код, и все в порядке. Только надо dword возвращать, а не Integer, и всех делов.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c