Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2008, 20:43   #1
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию Как добавить в Tmemo?

Вопрос такой: Как в TMemo добавить текст, но не просто добавить (Lines.Add('xxx')), а добавить в определенную строку (например [3]).
Буду премного благодарен!
Hottabych вне форума Ответить с цитированием
Старый 24.02.2008, 21:04   #2
Abbatik
Форумчанин
 
Аватар для Abbatik
 
Регистрация: 11.11.2007
Сообщений: 136
По умолчанию

Код:
Memo1.Lines.Insert[INDEX](s: string);
ICQ - 446037211
Abbatik вне форума Ответить с цитированием
Старый 24.02.2008, 21:25   #3
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Такая фишка не работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Insert(3, 'rrrrr');
end;
Может чо нить в свойствах компонета смотреть?
Hottabych вне форума Ответить с цитированием
Старый 24.02.2008, 21:56   #4
Abbatik
Форумчанин
 
Аватар для Abbatik
 
Регистрация: 11.11.2007
Сообщений: 136
По умолчанию

если у тебя в memo меньше строк чем индекс, то он не вставит. Он вставляет только а место существующей строки, а существующую сдвигает вниз!
ICQ - 446037211
Abbatik вне форума Ответить с цитированием
Старый 25.02.2008, 23:20   #5
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

По-моему можно проще: Memo1.Lines[i] := 'ваша строка'; где i - номер вашей строки.
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 26.02.2008, 00:16   #6
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Лампочка

Ничего лучше пока нет, но и это пойдёт :

Код:
.......................................................................................
var
  Form1: TForm1;
  Procedure AddN(Lst :TStrings; Indx :LongInt; Txt :String);

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Ind :LongInt;
begin
 Ind := StrToInt(Edit1.Text);// берём индекс
 AddN( Mem1.Lines, Ind, Edit2.Text );
end;

Procedure AddN(Lst :TStrings; Indx :LongInt; Txt :String);
Var I, II :LongInt;
begin // Индексы идут с НУЛЯ !
 IF Indx=Lst.Count-1 Then
   Lst.Strings[ Indx ] := Txt
  ELSE
 //--------------------------------------
 IF (Indx>=0)And(Indx<=Lst.Count-1)And(Lst.Count>0) Then // Строк достаточно
  Lst.Strings[ Indx ] := Txt
 //--------------------------------------
  ELSE
 IF (Indx>Lst.Count-1) Then  // Строк меньше индекса
 begin

  II := Lst.Count;

  IF II<=0 Then // строк нет
  Begin
    For I:=0 To Indx Do
     Lst.Add( '' );
    Lst.Strings[ Indx ] := Txt;
  end
   ELSE
  IF (Indx>II-1)And(II>0) Then // индекс больше колл-ва строк, и строки есть несколько
  Begin
    For I:=II-1 To Indx-1 Do
     Lst.Add( '' );
    Lst.Strings[ Indx ] := Txt;
  end;
 //--------------------------------------
 end;
end;

.............................................................................................

end.
Alter вне форума Ответить с цитированием
Старый 26.02.2008, 08:21   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
По-моему можно проще: Memo1.Lines[i] := 'ваша строка'; где i - номер вашей строки.
Нет тек не получится если i> количества строк.
Все гораздо проще. Вот процедура которая вставляет текст из Эдит1 в любую позицию по номеру из Эдит2. Причем если позиция будет больше количества строк, вставляемая строка все равно станет на свое место, но перед ней будет несколько пустых строк

Код:
procedure TForm1.Button1Click(Sender: TObject);
var a,b:integer;
begin
 a:=StrToInt(Edit2.Text);
while a>ListBox1.Items.Count do ListBox1.Items.Text:=ListBox1.Items.Text+#10#13;
ListBox1.Items.Insert(a,Edit1.Text);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.02.2008, 09:58   #8
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

тогда так можно:
procedure TForm1.Button1Click(Sender: TObject);
var
k, i: integer;
for k:= 0 to i do
begin
Memo1.Lines.Add(' ');
end;
Memo1.Lines[i]:= 'строка';
i - номер вашей строки
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 26.02.2008, 21:22   #9
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Спасибо всем, но я сделал так же как написал -=<[Evklidd]>=-
Hottabych вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TMemo Valera Помощь студентам 14 04.08.2008 10:56
TMemo terminadoor Помощь студентам 10 23.07.2008 19:41
Фон в TMemo BlackOmen Общие вопросы Delphi 3 18.06.2008 22:34
Tmemo BlackOmen Общие вопросы Delphi 2 16.03.2008 21:03
Transparent в TMemo Roof Помощь студентам 2 01.08.2007 20:48