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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2012, 08:30   #1
Ilya_L
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 78
По умолчанию Активировать Memo

Имеется поле Memo и Label, по нажатию на него включается редактирование Memo. Нужно, чтобы появлялся мигающий курсор. Но как я понял, для начала нужно, чтобы активировалось поле Memo, иначе курсора не будет. Как это можно сделать?
Код:
if not b1 then begin
    Memo.ReadOnly := False;
    ShowCaret(Memo.Handle);
    Memo.SelStart := Length(Memo.Text);
    b1 := true;
    Label.Caption := 'Apply';
    Label.Font.Color := clRed;
  end
  else begin
    Memo.ReadOnly := True;
    HideCaret(Memo.Handle);
    b1 := false;
    Label.Caption := 'Edit';
    Label.Font.Color := clBlue;
  end;
Ilya_L вне форума Ответить с цитированием
Старый 16.06.2012, 09:27   #2
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

Цитата:
Сообщение от Ilya_L Посмотреть сообщение
Имеется поле Memo и Label, по нажатию на него включается редактирование Memo. Нужно, чтобы появлялся мигающий курсор. Но как я понял, для начала нужно, чтобы активировалось поле Memo, иначе курсора не будет. Как это можно сделать?
Мигающий курсор вам из стандартных? или есть свой анимированый?
Мемо может быть расположена несколькими способами, например на форме занимая 1\3 всей площади, или тоже на форме но растянута в alClient занимая 90%.
Не совсем понятно на какой области нужно изменить курсор, но возможно подойдет так: для формы и для всех визуальных компонентов свойство
Код:
 form1.Cursor:=crBeam;
          memo.Cursor:=crBeam;
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 16.06.2012, 09:39   #3
Ilya_L
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 78
По умолчанию

Мемо фиксированное на форме. Я приведу пример. Имеется 2 мемо. По щелчку по первому, активируется первое мемо и отображается курсор, по щелчку по второму, фокус переносится на второе и по нажатию на Label курсор не появится, пока не кликнуть на memo1. Примерный алгоритм: нажимаем Label (Включается режим для редактирования Memo и отображается курсор), нажимаем Label (Отключается редактирование, прячем курсор (HideCaret), сохраняем текст).
Для того, чтобы курсор автоматически появился, нужен фокус на наш memo. Я пробовал с SetFocus, но так немного наоборот работает.
Попробуйте с моим кодом поработать, посмотреть, как работает. Думаю, понятнее будет.

Уже несколько дней пытаюсь сделать

Последний раз редактировалось Stilet; 16.06.2012 в 11:16.
Ilya_L вне форума Ответить с цитированием
Старый 16.06.2012, 09:58   #4
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Если я все верно понял - тебе нужно, чтобы при потере фокуса прекращала мигать каретка ввода в Memo, но, поскольку на форме, кроме мемы, нет контролов, способных получить фокус (а TLabel не получает фокуса) - это сделать не получается.

Понимаешь, к чему я клоню?
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.

Последний раз редактировалось ych_del; 16.06.2012 в 10:00.
ych_del вне форума Ответить с цитированием
Старый 16.06.2012, 09:59   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Код:
  if not b1 then begin
    Memo.ReadOnly := False;
    ShowCaret(Memo.Handle);
    Memo.SelStart := Length(Memo.Text);
    b1 := true;
    Label2.Caption := 'Apply';
    Label2.Font.Color := clRed;
    ActiveControl := Memo
  end
  else begin
  ...
Прик вне форума Ответить с цитированием
Старый 16.06.2012, 10:05   #6
Ilya_L
Пользователь
 
Регистрация: 18.06.2010
Сообщений: 78
По умолчанию

Прик, спс. Это то, что и нужно было.
Ilya_L вне форума Ответить с цитированием
Старый 16.06.2012, 17:34   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Код:
Memo1.SetFocus;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
активировать horpenst Microsoft Office Excel 6 07.04.2012 17:43
Активировать окно... klmmn Win Api 7 26.03.2011 19:23
Активировать гиперссылки Verano naranjo Microsoft Office Excel 1 19.01.2011 12:11
Как активировать кнопку? Uzmaster Microsoft Office Access 5 01.01.2010 19:56
Активировать всплывающую подсказку Илюха Общие вопросы Delphi 6 13.12.2007 16:35