Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.07.2010, 17:34
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию 2 вопроса по DBGrid

Добрый день, возникли следующие вопросы:
1) Каким образом можно сделать так чтобы в dbgrid строка выделялась полностью.
2)В dbgride выведен список товаров, нужно сделать чтобы при нажатии на enter товар убавлялся на 1 единицу (не могу понять как обработать это самое нажатие на enter ). Буду рад вашей помощи
Ответить с цитированием
  #2  
Старый 13.07.2010, 17:44
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. DBGrid.Options.dgRowSelect := True в инспекторе объектов.
2. Через TActionList. Заводишь там Action c хоткеем Enter. В его Execute'е делаешь так:
Код:
DBGrid1.DataSource.DataSet.Edit;
DBGrid1.DataSource.DataSet.Edit.FieldByName('Fld').AsInteger := 
  DBGrid1.DataSource.DataSet.Edit.FieldByName('Fld').AsInteger - 1;
DBGrid1.DataSource.DataSet.Post;
Ответить с цитированием
  #3  
Старый 13.07.2010, 21:16
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
1. DBGrid.Options.dgRowSelect := True в инспекторе объектов.
2. Через TActionList. Заводишь там Action c хоткеем Enter. В его Execute'е делаешь так:
Код:
DBGrid1.DataSource.DataSet.Edit;
DBGrid1.DataSource.DataSet.Edit.FieldByName('Fld').AsInteger := 
  DBGrid1.DataSource.DataSet.Edit.FieldByName('Fld').AsInteger - 1;
DBGrid1.DataSource.DataSet.Post;
Спасибо, все работает, еще 1 вопросик уже по форме. Вообщем хочу сделать чтобы когда форма закрывалась данные из таблицы удалялись. пишу такой код на событие FormCLose -
Код:
if MessageDlg('Закрыть окно?.',mtInformation ,mbOkCancel , 0) = mrOk then ......

но независимо от того нажал ты OK или Cancel форма закрывается, как сделать чтобы при нажатии на Cancel Она не закрывалась?
Ответить с цитированием
  #4  
Старый 13.07.2010, 21:21
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

не то событие. тебе нужно OnCloseQuery. у него есть параметр (canClose кажется). Если он True, то форма закроектся, если false - то нет.
Ответить с цитированием
  #5  
Старый 13.07.2010, 23:51
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
не то событие. тебе нужно OnCloseQuery. у него есть параметр (canClose кажется). Если он True, то форма закроектся, если false - то нет.
Спасибо
Ответить с цитированием
  #6  
Старый 14.07.2010, 12:40
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Чтобы не создавать новую тему задам тут же вопрос, такая ситуация - в гриде есть список товаров, (наименование, кол_во, розн.цен,сумма,дата_продажи), нужно сформировать товарный чек, рассматриваю варианты через эксель или фаст\рейв репорт, только желательно бы сделать так чтобы при нажатии на кнопку печать, чек сразу печатался. какими способами можно это реализовать? Думал через эксель - сформировать чек не показывая сам эксель, но незнаю как написать код чтобы на печать сразу отправлялся... а с репортами даже не знаю как попробывать...
Ответить с цитированием
  #7  
Старый 20.07.2010, 20:01
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
1. DBGrid.Options.dgRowSelect := True в инспекторе объектов.
2. Через TActionList. Заводишь там Action c хоткеем Enter. В его Execute'е делаешь так:
Код:
DBGrid1.DataSource.DataSet.Edit;
DBGrid1.DataSource.DataSet.Edit.FieldByName('Fld').AsInteger := 
  DBGrid1.DataSource.DataSet.Edit.FieldByName('Fld').AsInteger - 1;
DBGrid1.DataSource.DataSet.Post;
Возник вопрос по данной процедуре, нажатие клавиш действует независимо от того где ты находишься, курсор в другой таблице, нажимаешь энтер действие выполняется, можно ли как нибудь разграничить это? допустим 1 экшнлист с хоткеями действует для 1 грида, другой для другого?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:15.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter