Проблема StringGrid в мобильном приложении Delphi XE8 firemonkey

Я использую Delphi XE8 для разработки мобильных приложений, и я столкнулся с некоторыми проблемами в TStringGrid.

  1. Я написал следующий код в событии StringGridSelectCell.

Showmessage (StringGrid.Cells [0, ARow]);

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

  1. Итак, я попытался написать это сообщение в событии OnClick.

    var iRowInd: Integer; begin iRowInd: = StringGrid1.Selected; ShowMessage (StringGrid.Cells [0, iRowInd]); конец;

И это не работает при первом нажатии, а когда я щелкнул во второй раз, он работает правильно. Эта проблема возникает только в мобильных устройствах Android, а не в Windows.

  1. Позже я сохранил код события, и тогда я столкнулся с другой проблемой. Когда я прокручиваю сетку, запускается событие onClick. Итак, отображается ранее выбранное значение строки.

Пожалуйста, дайте мне какое-нибудь решение. И заранее спасибо.


person Work 2 Enjoy - Enjoy 2 Work    schedule 30.06.2015    source источник


Ответы (2)


Сделаем это с помощью события OnClick:

procedure TfmMain.StringGrid1Click(Sender: TObject);
begin
  Caption := 'Selected ROW ID: ' + StringGrid1.Selected.ToString + '. Selected COLUMN ID: ' + StringGrid1.ColumnIndex.ToString + '. Action at: ' + DateTimeToStr(Now);
end;

свойство TStringGrid.Selected вернет ROW ID (начиная с нуля)

и

свойство TStringGrid.ColumnIndex вернет COLUMN ID (начиная с нуля)

person Zam    schedule 30.06.2015
comment
Я использовал это, но все еще сталкиваюсь с проблемой. Как я объяснил ранее, в первый раз не предоставляется правильно выбранный элемент, и когда я прокручиваю элементы сетки, он всегда запускает событие onClick. Эта проблема есть только в мобильной версии Android, а в десктопной Windows это нормально. Пожалуйста, предоставьте мне решение, и TGrid также дает ту же проблему, - person Work 2 Enjoy - Enjoy 2 Work; 30.06.2015
comment
в первый раз не предоставляет должным образом выбранный элемент - да, теперь я понимаю. когда я прокручиваю элементы сетки, всегда запускается событие onClick - да, это правда. Может быть, вы могли бы проверить в событии OnClick, если ColumnID и RowID такие же, как и раньше, то просто выйти из процедуры OnClick? - person Zam; 30.06.2015
comment
Есть ли возможность отменить выбор выбранной строки. Так что я могу легко продолжить работу. В VCL я нашел несколько примеров для снятия выделения с выбранной строки. И можно ли что-нибудь обработать в событии Draw cell для снятия выделения с выбранной строки? - person Work 2 Enjoy - Enjoy 2 Work; 01.07.2015

На данный момент я использовал Material Design в форме. И сначала пользователю нужно выбрать сетку. Затем пользователю нужно нажать кнопку, и после этого я продолжаю свою логику. Это создает хороший графический интерфейс приложения и делает функциональность правильной.

person Work 2 Enjoy - Enjoy 2 Work    schedule 02.07.2015