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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2015, 18:20   #1
Jenny89
Пользователь
 
Регистрация: 14.07.2015
Сообщений: 30
По умолчанию Kак выделить полностью строку в DBGrid-е

Подскажите как выделить полностью строку в DBGrid-е. Если установить в опциях DBgrid-a свойства dgRowSelect, текущая строка всегда выделяется полностью, но нельзя редактировать поля. А хотелось бы полностью выделить строку и при этом, чтобы была возможность редактировать.

Последний раз редактировалось Jenny89; 07.08.2015 в 18:22.
Jenny89 вне форума Ответить с цитированием
Старый 07.08.2015, 18:41   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

делать программное переключение (например по Dblclick)
Код:
if dgrowselect in Dbgrid.options then 
  Exclude(dbgrid.options, dgrowselect)
else
  Include(dgrid.options, dgrowselect)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.08.2015, 19:12   #3
Jenny89
Пользователь
 
Регистрация: 14.07.2015
Сообщений: 30
По умолчанию

evg_m, Программы выдаёт ошибку на dgrowselect : unit1.pas(138,39) Error: Can't take the address of constant expressions
Jenny89 вне форума Ответить с цитированием
Старый 07.08.2015, 19:43   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Jenny89 Посмотреть сообщение
Подскажите как выделить полностью строку в DBGrid-е. Если установить в опциях DBgrid-a свойства dgRowSelect, текущая строка всегда выделяется полностью, но нельзя редактировать поля. А хотелось бы полностью выделить строку и при этом, чтобы была возможность редактировать.
1)
Код:
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin  // Отключаем  RowSelect
 DBGrid1.Options := DBGrid1.Options - [dgRowSelect];
end;
2)
Код:
procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
begin  // момент перехода на следующий строк включаем заново  RowSelect
 DBGrid1.Options := DBGrid1.Options + [dgRowSelect];
end;
Но скажу что редактирование данных через Grid это глупость . А на курсовой проекте можно если работаешь субд Access или Paradox

Последний раз редактировалось xxbesoxx; 07.08.2015 в 19:58.
xxbesoxx вне форума Ответить с цитированием
Старый 07.08.2015, 20:02   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
редактирование данных через Grid это глупость
Глупость так говорить. Есть ситуации, где вполне обоснованное решение. В трехзвенке, например, редактирование табличной части документа в гриде часто очень удобно, с последующей записью на сервер всего документа в одной транзакции
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2015, 20:20   #6
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
редактирование табличной части документа в гриде часто очень удобно,
Вопрос: А где написать commit ? на несколько СУБД после update , delete и insert надо commit да ? еще там получается без хранимых процедур делаем update , delete и insert
тогда мы теряем следующий

-- Снижение сетевого трафика между клиентами и сервером
-- Большая безопасность
-- Повышенная производительность
Цитата:
с последующей записью на сервер всего документа в одной транзакции
Один опер редактировал данных через Grid и он "находится открытом транзакцию" А второе из другой компьютере смотрит это запись ! Выбирает SELECT что будет ?

Последний раз редактировалось xxbesoxx; 07.08.2015 в 20:29.
xxbesoxx вне форума Ответить с цитированием
Старый 07.08.2015, 20:29   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В трехзвенке на клиенте SQL вообще нет, все на сервере приложений, он общается с SQL-сервером
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2015, 20:40   #8
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
В трехзвенке на клиенте SQL вообще нет
Смотрите ! Не спорю просто вопрос
2 оператор обращается на пример на сервере Oracle
"1 Опер " писал UPDATE Tab1 SET Field = 'чай' WHERE ID=2 и он "находится открытом транзакцию"
"2 Опер" пишет SELECT * FROM Tab1 WHERE ID=2
Друг , "2 опер" не увидит эту изменение который делал "1 Опер " потому что не било commit
xxbesoxx вне форума Ответить с цитированием
Старый 07.08.2015, 20:55   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не увидит. И что?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2015, 20:56   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
хотелось бы полностью выделить строку и при этом, чтобы была возможность редактировать.
Описать отрисовку записи в гриде например как тут: http://delphiworld.narod.ru/base/dra...elect_row.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программно выделить строку в ListView and1733 C++ Builder 1 21.05.2013 08:37
Как выделить строку? o818 Microsoft Office Excel 3 02.11.2012 10:13
выделить строку в DBGrid All517 БД в Delphi 5 24.08.2012 12:43
Выделить строку RichEdit жирным Aleksandr Общие вопросы Delphi 4 11.07.2011 14:36
ValueListEditor - как выделить строку? AssistentAlex Помощь студентам 2 07.01.2009 18:39