Форум по 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  
Старый 14.07.2010, 13:25
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

однозначно через репорты.
все просто в фаст репорте создаешь файл репорта.

далее в программе на кнопку печати вешаешь обработчик:
Код:
 frReport.LoadFromFile(FileName);
  frReport.PrepareReport(true);
  frReport.Print;
Примерно так.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #8  
Старый 14.07.2010, 21:07
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от Black Raider
однозначно через репорты.
все просто в фаст репорте создаешь файл репорта.

далее в программе на кнопку печати вешаешь обработчик:
Код:
 frReport.LoadFromFile(FileName);
  frReport.PrepareReport(true);
  frReport.Print;
Примерно так.
Все с отчетом разобрался, сделал в рейврепорте, работает отлично

Еще 1 вопросик есть, у меня база аксесс, данные в грид выводятся, хочу чтобы сумма и количество выводилось с подписью сумма - руб., количество- шт., В базе поставил формат денежный, там выводится все верно 550,0р. , а в программе просто 550. а количество даже незнаю как сделать...
Ответить с цитированием
  #9  
Старый 14.07.2010, 23:10
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от windaws
Все с отчетом разобрался, сделал в рейврепорте, работает отлично

Еще 1 вопросик есть, у меня база аксесс, данные в грид выводятся, хочу чтобы сумма и количество выводилось с подписью сумма - руб., количество- шт., В базе поставил формат денежный, там выводится все верно 550,0р. , а в программе просто 550. а количество даже незнаю как сделать...
Смотри в сторону DisplayFormat у Colums DBGRid
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #10  
Старый 15.07.2010, 08:49
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от Black Raider
Смотри в сторону DisplayFormat у Colums DBGRid
Немогу найти такое свойство у columns....
Ответить с цитированием
  #11  
Старый 15.07.2010, 08:54
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от windaws
Немогу найти такое свойство у columns....
Пардон. у DataSet'a Fields DisplayFormat
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #12  
Старый 15.07.2010, 18:50
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от Black Raider
Пардон. у DataSet'a Fields DisplayFormat
Спасибо в свойство было достаточно написать #0 руб. =)
Ответить с цитированием
  #13  
Старый 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, время: 23:42.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter