Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос о позиции каретки. [D7, XP]


Aral ©   (2006-07-29 22:33:00) 

У меня вопрос: мне надо узнать, где находится курсор(каретка) в тексте (я имею ввиду |), количество символов до него. Как можно это сделать?(Я хочу исползовать Insert(x, 'text') где x-кол-во символов до курсора, а 'text'- вставляемый текст.)


Alral   (2006-07-30 15:44:00) [1]

Ja ne znal, chto insert-dlja tseloi stroki, dumal-dlja simvolov. Spasibo chto objasnili.


Alral   (2006-07-30 15:40:00) [2]

Spasibo.


Gydvin   (2006-07-30 11:16:00) [3]


> !_SM_!   (30.07.06 00:45) [9]

Тоже самое только проще
procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 i := memo1.SelStart + memo1.SelLength;
 memo1.SelLength := 0;
 memo1.SelStart := i;
 memo1.SelText := '<HEAD>';
end;



> No, kogda ja zapuskaju programmu s pustim Memo, on vstavljaet
> ee na pervoe mesto, a kogda v memo chto-to est(vveli vo
> vremja Run), to ona ne menjaetsja(nikakogo effokta pri nazhatii
> HEAD1.Click.) Pomogite plz


Все дело в том, что процедура Insert (X, text), предназначена, для вставки целой строки, а не символов в строку. Где Х - номер на какое место хочешь вставить, Text- текст строки, которую хочешь вставлять.

В Alral ©   (29.07.06 23:21) [4]
Ты выясняешь номер символа где находится курсор, потом почему-то, волшебным образом решаешь, что это номер строки и вставляешь туды строку ))))). А не пашет потому, что этот самый "номер строки" выходит за пределы count строк (общего количества строк) которые в данный момент имеются , а то есть всего одна ))))

Во написал ;0)


Alral   (2006-07-30 00:48:00) [4]

Spasibo, seichas poprobuju


!_SM_!   (2006-07-30 00:45:00) [5]

Попробуй так:

procedure TForm1.Button1Click(Sender: TObject);
function InsertText(const X: Integer; S: String): String;
begin
  Result:=Copy(Memo1.Lines[Memo1.CaretPos.Y], 1, X)
  +S+Copy(Memo1.Lines[Memo1.CaretPos.Y], X+1, Length(Memo1.Lines[Memo1.CaretPos.Y]));
end;
begin
 Memo1.Lines[Memo1.CaretPos.Y]:=InsertText(Memo1.CaretPos.X, '<HEAD>');
end;


Alral   (2006-07-30 00:13:00) [6]

!_SM_!   Spasibo, no ja ne ponjal nekotorie veshi:
TPoint = packed record, dolzno bit TPoint:= packed record ili ja ne prav(ja ne utverzdaju, mne prosto kazetsja zdes znak prisvaivania :+ dolzen bit, ili net?),

TPoint = packed record
  X: Longint;
  Y: Longint;
end;
eto dolzno bit v type? Ja ne znaju, chto znachit packed record, objasnite pozaluista. Budu vam blagodaren.


!_SM_!   (2006-07-30 00:06:00) [7]

TPoint = packed record
   X: Longint;
   Y: Longint;
 end;

Memo1.CaretPos: TPoint;

Следовательно
Memo1.CaretPos.X: LongInt;


Alral   (2006-07-29 23:46:00) [8]

Sorry za opechatku, Alral i Aral-odin i tot ze chelovek(prosto bukvu sluchaino ne napisal).


Alral   (2006-07-29 23:25:00) [9]

Predidushee dobovlenie po povodu otveta Gydvin.


> Loginov Dmitry ©   (29.07.06 23:14) [3]
>
> Memo1.CaretPos
>


Incompactible types: Integer and TPoint;

Mne nuzhno v Integer, t.k. kak ja uze skazal, ispolzujetsja Insert, po etomu peremennaja SPos: integer; Memo1.CaretPos: TPoint.


Alral   (2006-07-29 23:21:00) [10]

ja sdelal tak('<HTML>' dolzhen okazatsja tam, gde kursor)

procedure TForm1.HEAD1Click(Sender: TObject);
begin
SPos:=Memo1.SelStart;
Memo1.Lines.Insert(SPos, '<HEAD>');
end;

No, kogda ja zapuskaju programmu s pustim Memo, on vstavljaet ee na pervoe mesto, a kogda v memo chto-to est(vveli vo vremja Run), to ona ne menjaetsja(nikakogo effokta pri nazhatii HEAD1.Click.) Pomogite plz


Loginov Dmitry   (2006-07-29 23:14:00) [11]

Memo1.CaretPos


Gydvin   (2006-07-29 22:49:00) [12]

selstart


Alral   (2006-07-29 22:47:00) [13]

Imeetsja vvidu TMemo


Наверх

Титульная страница Поиск, карта сайта Написать письмо