Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 27 апр 2024, 19:35

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Клик точно в чекбокс
СообщениеДобавлено: 02 июн 2022, 06:31 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
Добрый
Можно ли в ячейке с Checkboxes = True сделать так, чтобы изменение значения происходило точно при клике в чекбокс, а не во всю область ячейки как на скрине?
То есть, чтобы при клике в область ячейки только перемещался фокус, как двигаясь с помощью клавиатуры.
Вложение:
checkbox.gif
checkbox.gif [ 106.27 KiB | Просмотров: 1482 ]


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Клик точно в чекбокс
СообщениеДобавлено: 02 июн 2022, 09:47 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

1.
Установить колонку в состояние ReadOnly (ColumnEh.ReadOnly = True).

2.
Через событие TDBGridEh.OnCellMouseClick обрабатывать клик на ячейку самому.


Код:
procedure TForm1.DBGridEh1CellMouseClick(Grid: TCustomGridEh; Cell: TGridCoord;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer;
  var Processed: Boolean);
var
  Center: TPoint;
  GridCrack: TCustomGridEhCrack;
  ACellRect: TRect;
begin
  if (Cell.X = 6) and not (ssDouble in Shift) then
  begin
    GridCrack := TCustomGridEhCrack(Grid);
    ACellRect := GridCrack.CellRect(Cell.X, Cell.Y);
    if (Abs(ACellRect.Width div 2 - X) < 8) and
       (Abs(ACellRect.Height div 2 - Y) < 8)
    then
    begin
      MemTableEh1.Edit;
      MemTableEh1.FieldByName('BoolField').AsBoolean :=
        not MemTableEh1.FieldByName('BoolField').AsBoolean;
      MemTableEh1.Post;
    end;
    Processed := True;
  end;
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Клик точно в чекбокс
СообщениеДобавлено: 02 июн 2022, 13:09 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
Спасибо
С этим, в принципе, можно работать дальше, хотя надеялся на ответ попроще, вроде опции в настройках )

ЗЫ. Как вы узнали про 6-й индекс или это просто совпадение? )


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Клик точно в чекбокс
СообщениеДобавлено: 02 июн 2022, 14:29 
Не в сети

Зарегистрирован: 28 июл 2012, 18:07
Сообщений: 43
OlegX писал(а):
С этим, в принципе, можно работать дальше, хотя надеялся на ответ попроще, вроде опции в настройках )
Поддерживаю идею об опции в настройках, ибо пользователю не понятно почему, когда он выделяет или хочет переместиться, особенно когда оно не всё отображается на экране, в поле с признаком, происходит его изменение.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Клик точно в чекбокс
СообщениеДобавлено: 02 июн 2022, 15:09 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

К сожалению в текущей версии библиотеки нет свойств для настройки данной возможности.

Индекс колонки Cell.X для которой должен срабатывать данный код зависит от индекса колонки с чекбоксом в коллекции Columns. Обычно это Column.Index + 1.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Клик точно в чекбокс
СообщениеДобавлено: 03 июн 2022, 10:00 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
EhLibSupport писал(а):
К сожалению в текущей версии библиотеки нет свойств для настройки данной возможности.

Жаль конечно. В движке-то оно всяко проще реализовать. Сейчас нужно дополнительно ещё и клавиатуру обрабатывать самому, тк колонка ReadOnly стала

EhLibSupport писал(а):
Индекс колонки Cell.X для которой должен срабатывать данный код зависит от индекса колонки с чекбоксом в коллекции Columns. Обычно это Column.Index + 1.

Это понятно. Просто имел ввиду, что у меня у колонки тоже индекс 6, хотя из скрина этого не видно )

А скажите, плз, есть ли возможность для не ReadOnly столбца по нажатию клавиши сразу не проваливаться в редактор? Начинать редактировать только при явном вызове режима редактирования (похожее на поведение, когда весь грид ReadOnly).
То есть не так:
Вложение:
edit.gif
edit.gif [ 44.83 KiB | Просмотров: 1402 ]

А вот так:
Вложение:
edit1.gif
edit1.gif [ 31.79 KiB | Просмотров: 1402 ]


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Клик точно в чекбокс
СообщениеДобавлено: 03 июн 2022, 10:43 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Цитата:
А скажите, плз, есть ли возможность для не ReadOnly столбца по нажатию клавиши сразу не проваливаться в редактор?


Используйте свойство TColumnEh.TextEditing = False

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Клик точно в чекбокс
СообщениеДобавлено: 03 июн 2022, 12:52 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
EhLibSupport писал(а):
Используйте свойство TColumnEh.TextEditing = False

Не-не, это не совсем то. Тогда вообще пропадает возможность проваливаться в редактор, даже для копирования информации.
Я же немного о другом писал - в колонке остаётся возможность редактирования - речь лишь о том, что в режим редактирования попадаем сознательно, а не по первому нажатию клавиши.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Клик точно в чекбокс
СообщениеДобавлено: 03 июн 2022, 19:13 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Цитата:
Я же немного о другом писал - в колонке остаётся возможность редактирования - речь лишь о том, что в режим редактирования попадаем сознательно, а не по первому нажатию клавиши.


Реализовать через настройки такой возможности нет.
Можно в наследнике переписать метод CanCharShowEditor

Код:
function TMyDBGridEh.CanCharShowEditor(Ch: Char): Boolean;
begin
  Result := False;
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB