Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
ВнизВопрос о позиции каретки. Найти похожие ветки
← →
Aral (2006-07-29 22:33) [0]У меня вопрос: мне надо узнать, где находится курсор(каретка) в тексте (я имею ввиду |), количество символов до него. Как можно это сделать?(Я хочу исползовать Insert(x, "text") где x-кол-во символов до курсора, а "text"- вставляемый текст.)
← →
Alral © (2006-07-29 22:47) [1]Imeetsja vvidu TMemo
← →
Gydvin © (2006-07-29 22:49) [2]selstart
← →
Loginov Dmitry © (2006-07-29 23:14) [3]Memo1.CaretPos
← →
Alral © (2006-07-29 23:21) [4]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
← →
Alral © (2006-07-29 23:25) [5]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:46) [6]Sorry za opechatku, Alral i Aral-odin i tot ze chelovek(prosto bukvu sluchaino ne napisal).
← →
!_SM_! (2006-07-30 00:06) [7]TPoint = packed record
X: Longint;
Y: Longint;
end;
Memo1.CaretPos: TPoint;
Следовательно
Memo1.CaretPos.X: LongInt;
← →
Alral © (2006-07-30 00:13) [8]!_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:45) [9]Попробуй так:
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:48) [10]Spasibo, seichas poprobuju
← →
Gydvin © (2006-07-30 11:16) [11]
> !_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 15:40) [12]Spasibo.
← →
Alral © (2006-07-30 15:44) [13]Ja ne znal, chto insert-dlja tseloi stroki, dumal-dlja simvolov. Spasibo chto objasnili.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.073 c