Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
15-1194971813
Kick
2007-11-13 19:36
2007.12.16
delphi = pascal = языки для начинающих


15-1195137044
Reindeer Moss Eater
2007-11-15 17:30
2007.12.16
Приколы реализации ADO в D7


4-1180599186
bns
2007-05-31 12:13
2007.12.16
Long file path


2-1195383631
WFS
2007-11-18 14:00
2007.12.16
Можно ли написать обработчик события для динамической кнопки?


2-1195287266
Hint
2007-11-17 11:14
2007.12.16
Получение названий продуктов запущенных приложений





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