Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по TMemo

8.0K
09 июня 2007 года
simpleuser1
82 / / 09.06.2007
Здраствуйте уважаемые пользователи форума!!!

У меня возник такой вопрос: Допустим на форме стоит TMemo, два TEdit и TButton. Как сделать так: Я ввожу какое-то число в 1-ый TEdit - это будет номер строки в TMemo и нажимаю кнопку. Прога должна сделать так: Выделить строку под этим номером и добавить её значение во 2-ой TEdit.

Заранее спасибо за помощь!:)
930
09 июня 2007 года
Sash1k
115 / / 27.04.2007
работай с классом TSring:

 
Код:
var
 s: string;
begin
 s := Memo1.Lines.Strings[StrToInt(Edit1.Text)];
end;


в переменной s храница нужная строка, теперь с ней можно делать всё что угодно.
4.6K
10 июня 2007 года
Tokolist
268 / / 22.03.2007
как получить содержимое определенной строки и так ясно...
а вот как выделить требуемую строку...
вот написал функцию...
тестирование показало, что баги отсутствуют, но кто его знает... :)

Код:
// StrNumber is [1..n]
procedure SelectString(Memo: TMemo; StrNumber: Integer);
var
  i, SelSt: Integer;
begin
  if not Assigned(Memo)
    or (Memo.Lines.Count < 1)
    or (StrNumber < 1)
    or (StrNumber > Memo.Lines.Count) then
    Exit;

  SelSt := 0;
  for i := 0 to StrNumber - 2 do
    Inc(SelSt, Length(Memo.Lines) + 2);

  Memo.SelStart := SelSt;
  Memo.SelLength := Length(Memo.Lines[StrNumber - 1]);
end;
257
10 июня 2007 года
kosfiz
1.6K / / 18.09.2005
Tokolist все отлично +1, но надо в процедурку добавить Memo.SetFocus или потом учитывать, чтобы перед вызовом процедуры фокус ввода был у Memo, а то не выделится ничего. на мой взгляд лучше сразу в процедуру это включить, а то потом забыть можно и думать, что же не так.
4.6K
10 июня 2007 года
Tokolist
268 / / 22.03.2007
Цитата: kosfiz
Tokolist все отлично +1, но надо в процедурку добавить Memo.SetFocus или потом учитывать, чтобы перед вызовом процедуры фокус ввода был у Memo, а то не выделится ничего. на мой взгляд лучше сразу в процедуру это включить, а то потом забыть можно и думать, что же не так.



Согласен, но тут все зависит от ТЗ. Можно, например, вместо передачи фокуса просто выставить в TMemo свойство HideSelection в False, как было у меня. Сдесь ИМХО лучше разделить процедуру и получение фокуса для того чтобы сделать процедуру более универсальной... или же перезагрузить процедуру с дополнительным параметром булевского типа, тогда у нас будет два варианта вызова:

 
Код:
procedure SelectString(Memo: TMemo; StrNumber: Integer; SetFocus: Boolean); overload;
begin
  if SetFocus then
    Memo.SetFocus;
  SelectString(Memo, StrNumber);
end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог