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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2014, 11:54   #1
cawendish
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 12
По умолчанию Пропала каретка в StringGrid

Здравствуйте.

Пишу программу на Delphi XE5.
Форма содержит 2 таблицы StringGrid.
Данные берутся из Excel файлов.
С какого-то момента, заметил что не появляется каретка (текстовый курсор) при редактировании какой-либо ячейки.
Думал, из-за того, что использую подкрашивание некоторых ячеек.
Но и при отключении "раскраски" каретка не появляется.
Если создаю новый проект со StringGrid, то каретка есть.

Подскажите как отобразить пропавшую каретку?

И второй вопрос, при клике на ячейке текст в ячейке выделяется.
Можно ли сделать так, чтобы он не выделялся, а сразу показывал каретку?
cawendish вне форума Ответить с цитированием
Старый 10.12.2014, 12:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Впервые такое слышу...
Проблема только в конкретном проекте? - удали DCU и EXE, перекомпилируй проект заново
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.12.2014, 13:13   #3
cawendish
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 12
По умолчанию

Удалил и перекомпилировал - не помогает.
cawendish вне форума Ответить с цитированием
Старый 10.12.2014, 13:14   #4
cawendish
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 12
По умолчанию

Ха-ха, каретка появилась, когда увеличил высоту строки...
Забавно, выходит если я хочу узкие строки, то останусь без каретки.
cawendish вне форума Ответить с цитированием
Старый 10.12.2014, 13:25   #5
cawendish
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 12
По умолчанию

Итак остается такой вопрос:
Первое нажатие на ячейку перемещает на нее синее выделенеие, второе нажатие делает выделение текста, третие нажатие снимает выделение и ставит каретку.
Вопрос - как пропустить действие с выделением?
cawendish вне форума Ответить с цитированием
Старый 10.12.2014, 13:26   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Може глюкан в генофонде?
Попробуй на чистом проекте такое же сотворить ради интереса.
Цитата:
как пропустить действие с выделением?
Выделением ячейки? В Options включи goEditing и goAlwaysShowEditor
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.12.2014, 13:44   #7
cawendish
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 12
По умолчанию

Напишу конкретнее вопрос:
Первое нажатие на ячейку перемещает на нее синее выделение, второе нажатие делает выделение текста, третье нажатие снимает выделение и ставит каретку.

Вопрос - как пропустить действие с выделением текста?

То есть чтобы первый клик - синее выделение ячейки, второй клик появление каретки без выделения текста.
cawendish вне форума Ответить с цитированием
Старый 10.12.2014, 14:53   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ясно...
Ответа не знаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.12.2014, 15:13   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Опции как Stilet сказал + примерно так
Код:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
  lSelected:=1;
end;

procedure TForm1.StringGrid1Click(Sender: TObject);
begin
  if lSelected=2 then StringGrid1.EditorMode:=True;
  Inc(lSelected);
end;
Как каретку при этом в начало текста не знаю
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 10.12.2014 в 15:39. Причина: Чуть подправил
Аватар вне форума Ответить с цитированием
Старый 10.12.2014, 17:04   #10
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от cawendish Посмотреть сообщение
Можно ли сделать так, чтобы он [текст] не выделялся, а сразу показывал каретку?
Да вроде ничего сложного...
Код:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
keybd_event(VK_HOME, 0, 0, 0);
//keybd_event(VK_HOME, 0, KEYEVENTF_KEYUP, 0);
Application.ProcessMessages;
keybd_event(VK_HOME, 0, 0, 0);
//keybd_event(VK_HOME, MapVirtualKey(vk_control, 0), KEYEVENTF_KEYUP, 0);
end;
Это - всё, что нужно...
goAlwaysShowEditor должно быть TRUE...

З.Ы. Тут 2 лишние строки затесались, на работоспособность не влияют, поставила комменты.

Последний раз редактировалось kropotkina-alice; 10.12.2014 в 19:41.
kropotkina-alice вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пропала память Reverset Компьютерное железо 6 19.11.2014 20:41
каретка в edit оскар топотушка Общие вопросы Delphi 6 24.05.2011 11:02
Рисование Эдита, чтобы была видна каретка. Zeraim Общие вопросы Delphi 3 28.02.2010 23:27
пропала опция fufaev Microsoft Office Word 3 25.10.2009 03:48
Каретка после текста Shouldercannon Общие вопросы Delphi 3 20.07.2008 10:37