Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2007, 20:52   #1
vvaassiill
Новичок
Джуниор
 
Регистрация: 29.05.2007
Сообщений: 2
По умолчанию Положение курсора в Memo

Помогите пожалуйста!!!
Как установить в поле Memo курсор в указанную строку?
vvaassiill вне форума Ответить с цитированием
Старый 30.05.2007, 21:14   #2
Nemon
Армия Рассейская
Форумчанин
 
Аватар для Nemon
 
Регистрация: 06.12.2006
Сообщений: 175
По умолчанию

Получаешь кол-во строк в твоем Мемо
Код:
 function LinesVisible(Memo: TMemo): integer; 
    Var 
      OldFont : HFont; 
      Hand : THandle; 
      TM : TTextMetric; 
      Rect  : TRect; 
      tempint : integer; 
    begin 
      Hand := GetDC(Memo.Handle); 
      try 
        OldFont := SelectObject(Hand, Memo.Font.Handle); 
        try 
          GetTextMetrics(Hand, TM); 
          Memo.Perform(EM_GETRECT, 0, longint(@Rect)); 
          tempint := (Rect.Bottom - Rect.Top) div 
             (TM.tmHeight + TM.tmExternalLeading); 
        finally 
          SelectObject(Hand, OldFont); 
        end; 
      finally 
        ReleaseDC(Memo.Handle, Hand); 
      end; 
      Result := tempint; 
    end;
Потом перемещаешь на нужную строку:
Код:
Function SetCaretPosition(memo:TMemo; x,y:integer);
var i:integer;
begin
  i := SendMessage(memo.Handle, EM_LINEINDEX, y, 0) + x;
  SendMessage(memo1.Handle, EM_SETSEL, i, i);
end;
Сделаем ночь ярче!!! - Ракетные войска стратегического назначения
Центральный клуб туристов РВСН
Nemon вне форума Ответить с цитированием
Старый 30.05.2007, 22:59   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,502
По умолчанию

кажеца так:
p: TPoint;
p.x := 0;
p.y := 5;
Memo.CaretPos := p;
перведет на 6 строку
pu4koff вне форума Ответить с цитированием
Старый 30.05.2007, 23:06   #4
Nemon
Армия Рассейская
Форумчанин
 
Аватар для Nemon
 
Регистрация: 06.12.2006
Сообщений: 175
По умолчанию

Цитата:
кажеца так:
p: TPoint;
p.x := 0;
p.y := 5;
Memo.CaretPos := p;
перведет на 6 строку
Может и так.
Только все равно кол-во строк сначала узнать надо...
Сделаем ночь ярче!!! - Ракетные войска стратегического назначения
Центральный клуб туристов РВСН
Nemon вне форума Ответить с цитированием
Старый 31.05.2007, 05:09   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,502
По умолчанию

Memo.Lines.Count по моему не тяжело написать, да и афтар про это не спрашивал
pu4koff вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Безвыходное положение BETONOMESHALKA Общие вопросы Delphi 2 03.11.2007 19:06
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo Artem Компоненты Delphi 3 07.09.2007 13:40
Положение указателя мыши Viteef Общие вопросы Delphi 4 26.06.2007 15:59
Положение картинок в RichEdit НЕ_АЙС Компоненты Delphi 0 18.04.2007 11:59
положение курсора mishel Общие вопросы Delphi 9 30.01.2007 21:37