Delphi DBGrid отключает нажатие на другую строку при редактировании

У меня есть dbgrid, отображающий данные из Ttable, и моя проблема в том, что при редактировании строки в сетке фокус находится на строке, которую я хочу изменить, но я все еще могу щелкнуть другую строку и отредактировать ее. Как отключить нажатие на другую строку или сохранить фокус на той же строке?

Второй вопрос (все еще в dbgrid): когда я редактирую столбец и дважды щелкаю по этому столбцу, фокус перемещается в конец текстовой строки, поэтому не отображается исходный текст, а отображаются только, возможно, последний символ и пробелы.

Пожалуйста помоги...


person user1878281    schedule 05.12.2012    source источник
comment
Зачем тебе это? Просто посмотрите, как щелкнуть другую строку как «Сохранить» или «Отменить» (выберите одну и соблюдайте единообразие во всех сетках вашего приложения).   -  person Marjan Venema    schedule 05.12.2012
comment
Кстати, вы, вероятно, получите лучшие ответы, если будете задавать один вопрос на, ну... вопрос.   -  person Marjan Venema    schedule 05.12.2012
comment
Дело принято, давайте начнем с первого вопроса: как отключить редактирование другой строки, которая изначально не была выбрана?   -  person user1878281    schedule 05.12.2012
comment
почему вы хотите, чтобы ваш пользователь нажимал везде, где он хочет?   -  person jachguate    schedule 05.12.2012
comment
Поскольку, когда таблица находится в режиме редактирования, если пользователь переходит и щелкает другую строку, он может редактировать эту конкретную строку, и это неприемлемо, следует редактировать только строку, в которой он находится, в противном случае отменить редактирование и выбрать другую строку, а затем нажать на кнопку редактирования, чтобы отредактировать выбранную строку. Надеюсь, вы поняли, о чем я. NB: у меня есть кнопка «ОК», чтобы опубликовать изменения.   -  person user1878281    schedule 05.12.2012
comment
Установите для TDataSource.AutoEdit значение false   -  person Sir Rufo    schedule 05.12.2012
comment
Сэр Руфо, в какой момент я могу установить автоматическое редактирование на false? Поскольку установка автоматического редактирования на false по-прежнему позволяет пользователю продолжать и щелкать другие строки и, следовательно, перемещать фокус с редактируемой строки, НО не может редактировать другие строки, даже те, которые нужно отредактировать. Итак, установив значение false, теперь я просто не могу редактировать.   -  person user1878281    schedule 05.12.2012
comment
в противном случае отмените редактирование и выберите другую строку, затем нажмите кнопку редактирования, чтобы отредактировать выбранную строку - была ли у вас кнопка редактирования или нет?   -  person Sir Rufo    schedule 05.12.2012
comment
У меня есть кнопка редактирования и кнопка ok (опубликовать).   -  person user1878281    schedule 05.12.2012
comment
Непонятно, чего вы на самом деле хотите, читая ваш вопрос и комментарии. В: Никакого изменения строки в режиме редактирования, C: Изменение строки должно отменить фактическое редактирование, а редактирование должно начинаться с кнопки   -  person Sir Rufo    schedule 05.12.2012
comment
Если вы не хотите, чтобы пользователь редактировал какую-либо другую запись, не используйте сетку для ее редактирования, используйте форму с представлением одной записи. :)   -  person jachguate    schedule 05.12.2012


Ответы (1)


Через некоторое время, поиграв с этим, я обнаружил, что нет простого способа запретить пользователю перемещаться из выделенной строки (строка для редактирования) при нажатии на другую строку. Лучший способ — отменить, когда он нажмет на другую строку, я использую TTable и TQuery, поэтому в событии BeforePost просто выполните отмену в своей таблице или запросе. Но вам также нужно сделать то же самое даже на AfterScroll, на всякий случай.

Спасибо за вашу помощь.

person user1878281    schedule 06.12.2012