Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
1

Непонятки с ADVStringGrid

22.05.2016, 11:29. Показов 2089. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Название: Снимок15.PNG
Просмотров: 64

Размер: 12.4 Кб
Использую таблицу такого плана. Встроенный чек бокс в нулевой столбец для возможности выделения нескольких строк и DropDownFilter. Все вроде хорошо, но возникают некоторые ситуации мне непонятные. Может кто поможет разобраться как их исправить?


1.При включении чек-бокса строки выделяются какое-то время нормально, но в какой-то момент получается, что чек-бокс отмечен, а строка при этом не выделяется цветом.
Так происходит когда фильтром не пользуюсь, а если еще и включить фильтр, то вообще через раз, то выделяется, то нет.
Название: Снимок16.PNG
Просмотров: 66

Размер: 10.9 Кб
Почему так происходит, не могу понять, код выделения строки брал из официального примера для ADVStringGrid, ничего в нем не менял:
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TFMLazKart.AdvSG2GetCellColor(Sender: TObject; ARow, ACol: Integer;
  AState: TGridDrawState; ABrush: TBrush; AFont: TFont);
var state: boolean;
begin
   if AdvSG2.GetCheckBoxState(0, ARow, state) then
    begin
     if state then
       ABrush.Color := AdvSG2.SelectionColor;
    end;
end;
Почему он то срабатывает то нет, непонятно, причем нету никакой закономерности.

2. При использовании выпадающего фильтра тоже есть непонятные нюансы. Мне к примеру нужно при включенном фильтре произвести некоторые изменения в БД и после этого перезаполнить таблицу, в результате этого у меня выпадает ошибка: Invalid Pointer Operation и таблица не заполняется. Получается что фильтром я могу пользоваться только как бы для просмотра, а когда что-то редактирую и перезаполняю таблицу, почему-то выпадает ошибка.

3. Вопрос по фильтру DropDownFilter. Можно ли как-то программно узнать по каким столбцам в данный момент включен фильтр? Нужно это значение сохранить, чтобы после перезаполнения отобразить таблицу в том же состоянии фильтра.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2016, 11:29
Ответы с готовыми решениями:

ADVStringGrid и FilterDropDown
Есть таблица ADVStringGrid, в ней включен FilterDropDown. Вопрос, есть ли у этого FilterDropDown...

ADVStringGrid -группировка
Делаю группировку в ADVStringGrid, по определенному полю, но почему-то эта операция занимает очень...

Таблица AdvStringGrid и встроенный CheckBox
Есть таблица AdvStringGrid, в которую заливаю данные из БД MySQL. В нулевой столбец вставил...

AdvStringGrid: ввод в определенные столбцы только числовых значений
Есть таблица ADVStringGrid, в столбцах которой к примеру под номером 2 и 3 нужно установить...

31
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
24.05.2016, 14:14 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от edsjeka Посмотреть сообщение
Я даже видел в каком-то примере, что оно работает, но так и не понял где это выставить.
I want to select multiple rows with Ctrl - mouseclick and Shift - mouse click

In the Options property set goRowSelect = true and set MouseActions.DisjunctRowSelect = true. The desired selection capabilities are enabled now.
Bruno Fierens (Jan 21, 2009)
вот у них на сайте есть такое
1
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
24.05.2016, 21:05  [ТС] 22
Цитата Сообщение от qwertehok Посмотреть сообщение
вот у них на сайте есть такое
Ушел от чек-боксов и теперь думаю, зачем я вообще их придумывал, так намного удобнее, просто выделять те записи которые нужно и им задавать значения. Спасибо.
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
06.06.2016, 19:55  [ТС] 23
Вот еще один вопрос возник, который никак не могу решить. Есть таблица ADVStrngGrid:
Непонятки с ADVStringGrid

В ней некоторые поля доступны к редактированию. После редактирования и нажатия клавиши Enter внесенные данные записываются в БД, рассчитывается значение вычисляемого поля и тоже записывается в БД.
Вопрос вот в чем, по нажатию Enter это все у меня выполняется, но если я не нажимаю Enter, а перехожу стрелкой влево или вправо, вверх, вниз, то это действие не происходит. Какое событие использовать при выходе из ячейки стрелкой на клавиатуре, чтобы реакция была как на Enter, как в Exсel? Я уже все что мог перепробовал, пока ничего не получается. Для действия после нажатия Enter использую событие OnEditCellDone, но оно не работает, если из ячейки просто выходить стрелками или просто курсор перевести мышкой в другую ячейку.
0
qwertehok
06.06.2016, 21:46
  #24

Не по теме:

напомните если завтра не отпишусь
был у меня проект где я этот грид мучал

0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
07.06.2016, 08:00  [ТС] 25
Цитата Сообщение от qwertehok Посмотреть сообщение
напомните если завтра не отпишусь
OK.
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
10.06.2016, 18:03  [ТС] 26
Цитата Сообщение от qwertehok Посмотреть сообщение
напомните если завтра не отпишусь
был у меня проект где я этот грид мучал
Я понял, почему у меня не получалось. Все оказалось просто.
Когда я нажимал Enter, у меня происходило событие OnEditCellDone и я применял действия к ячейке с текущими координатами. А когда я нажимаю стрелку или мышкой меняю положение курсора, то тоже происходит событие OnEditCellDone, НО, координаты-то уже не те становятся и все что в событии выполняется, но не там где мне нужно, а мне нужно делать изменения в той ячейке, в которой до этого был курсор.
0
qwertehok
10.06.2016, 19:50
  #27

Не по теме:

извините, посмотрел проект, но события не проверял - не было времени взяться

0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
10.06.2016, 19:56  [ТС] 28
Цитата Сообщение от qwertehok Посмотреть сообщение
извините, посмотрел проект, но события не проверял - не было времени взяться
Да не за что извиняться, Вы мне и так очень помогаете.
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
28.06.2016, 12:08  [ТС] 29
Добрый день. Вопросик появился, никак не могу разобраться. В таблице ADVStringGrid мне нужно, чтобы в нескольких столбцах числовые данные выводились с двумя знаками после запятой. Если у числа есть дробная часть, то выводится со знаками после запятой, а если число целое, то нули после запятой не выводятся. Как сделать, чтобы все числа и даже целые выводились с дробной частью?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
28.06.2016, 12:15 30
FormatFloat?
0
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
28.06.2016, 12:17  [ТС] 31
Цитата Сообщение от qwertehok Посмотреть сообщение
FormatFloat?
Да, Float.
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
28.06.2016, 12:21 32
это функция такая
Знаки после запятой.
1
28.06.2016, 12:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2016, 12:21
Помогаю со студенческими работами здесь

AdvStringGrid: встроенный ComboBox нужно заполнить значениями из таблицы БД
Из файла заполняется вот так: with AdvStringGrid1 do case ACol of 1: begin ...

Таблица AdvStringGrid как правильно сделать редактирование базы через ячейки таблицы
Есть таблица AdvStringGrid, в которой отображаются данные базы данных. Грубо говоря есть три поля:...

Непонятки с Locate
Всем Доброго времени суток!!!! Прежде всего вот код: if ADOQuery1.Locate('client_id',...

Непонятки с вставкой
При первом нажатии на кнопку заменяет первую запись. после добавляет в конец как и должно быть....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru