Модераторы: Vitalik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SynEdit и позиция курсора 
:(
    Опции темы
BlackWeb
Дата 4.2.2008, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Привет всем... есть небольшая проблемка)) не писал на дельфи уже года 3, а тут че то решил вспомнить молодость и возродить свою прогу)) Так вот) Не могу победить проблему: 

Суть в следующем:

в SynEdit есть какой либо текст
например 
Код

привет
я программа
ну ваще


есть кнопка))) которая вставляет в редактор текст

Код

текст "@@@"


ситуация такая: я выделяю какой либо текст в редакторе, например 
Код

привет


и жму на кнопку)))

и хочется чтобы текст был вставлен в редактор, и при этомвместо @@@ был выделенный текст.... с этим проблем нет, проблема в следующем:
как мне установить позицию каретки в редакторе после выполнения вставки и преобразования на то место, где была надпись @@@?

те если я вставляю тег <b>@@@</b> то курсор автоматически вставал между тегами те <b>СЮДА</b>


Добавлено @ 02:54
извиняюсь если что то не по правилам и извиняюсь за то что это не имеет никакого отношени в унихайлайтеру, но больше не знаю где спросить)

Добавлено @ 02:56
подкинули мне тут такую процедуру))

Код


procedure TForm1.InsertText(Text: string);
var
  i, j: integer;
  s, topast, selt: string;
  p: TBufferCoord;
  Temp: TStringList;
begin
{
if Notebook1.ActivePage='2' then
modes_EditExecute(self);
}

  p := editor.CaretXY;
  Temp := TStringList.Create;
  selt := editor.SelText;
  topast := qpl3_macross_apply(Text);
  temp.Text := replaceATs(topast,editor.seltext+'@@@');
  for i := 0 to Temp.Count - 1 do
  begin
  s := Temp[i];
  j := Pos('@@@', s);
  if j > 0 then
   begin
    Delete(s, j, 3);
    Temp[i] := s;
    Inc(p.Line, i);
    if i = 0 then
      Inc(p.Char, j - 1)
    else
      p.Char := j;
     break;
   end;
  end;
  s := Temp.Text;
  i := Length(s);
  if (i >= 2) and (s[i - 1] = #13) and (s[i] = #10) then
    SetLength(s, i-2);
  Temp.Free;
  editor.SelText := s;
  if j>0 then
  begin
  editor.CaretXY := p;
  end;
  editor.SetFocus;
end;


но не работает она как надо))) частельно неправильно определяет новое положение каретки

Это сообщение отредактировал(а) BlackWeb - 4.2.2008, 03:38
PM MAIL   Вверх
BlackWeb
Дата 4.2.2008, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



вот прога что я делаю... сырая и глючная альфа
http://rapidshare.com/files/88976309/ce_mi...alpha1.rar.html
чтобы понять проблему))) попробуйте поюзать побольше вставку из панели Htm
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема »


 




[ Время генерации скрипта: 0.0364 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.