Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet) / 25 сообщений из 31, страница 1 из 2
13.11.2020, 14:21
    #40017923
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Компонента TcxDBVerticalGrid привязана к НД TpFibDataSet и используется просто для вывода данных на экран, для отображения данных.

Но появилась нужда добавить 1-2 строки TcxDBEditorRow и заполнить их не из привязанного НД.
Создать строку типа cxCombobox или cxTextEdit не проблема, но получается так, что в cxCombobox ничего выбрать нельзя, а в cxTextEdit ничего ввести нельзя ни ручками, ни программно.

А очень хочется.

P.S. Можно, конечно, заменить сетку на TcxVerticalGrid,но тогда придется все строки заполнять ручками в коде, а мне - леньки
...
Рейтинг: 0 / 0
13.11.2020, 14:52
    #40017944
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
X11,
Вычисляемые поля в DataSet
...
Рейтинг: 0 / 0
13.11.2020, 14:56
    #40017945
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
И как мне это поможет?
...
Рейтинг: 0 / 0
13.11.2020, 15:55
    #40017972
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
X11, в событии OnCalcFields датасета этим полям можно присвоить значение.
...
Рейтинг: 0 / 0
13.11.2020, 16:01
    #40017983
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Я пока по другому сделал.
В строку добавил выпадающую панель и там уже пусть пользователь что-то меняет.
...
Рейтинг: 0 / 0
13.11.2020, 17:23
    #40018044
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Polesov
X11,
Вычисляемые поля в DataSet

Ему нужны "вычисляемые строки", а не поля.
...
Рейтинг: 0 / 0
13.11.2020, 17:28
    #40018046
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
строки в данном случае - это поля, ведь это вертикальная сетка
...
Рейтинг: 0 / 0
13.11.2020, 17:34
    #40018053
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
X11,

тогда он прав.
...
Рейтинг: 0 / 0
13.11.2020, 22:10
    #40018135
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
X11
P.S. Можно, конечно, заменить сетку на TcxVerticalGrid,но тогда придется все строки заполнять ручками в коде, а мне - леньки

Что стоит Единожды написать процедуру, заполняющую Грид по НАИМЕНОВАНИЮ колонок из Датасета ?
...
Рейтинг: 0 / 0
14.11.2020, 09:11
    #40018238
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Не стоит использовать этот вертикальный грид для показа одной строки данных, он для этого не предназначен как нам сказали. Оказывается мы его неправильно используем, он для отображения сразу многих записей :)
Т.е отобразить он конечно отобразит, но при обновлении единственной отображаемой строки данных тормозить будет беспощадно.
...
Рейтинг: 0 / 0
14.11.2020, 10:21
    #40018246
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
вертикальная сетка довольно удобна для формы редактирования/добавления/показа записи из базы
...
Рейтинг: 0 / 0
14.11.2020, 13:57
    #40018303
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Вопрос в том, надо просто отображать пользователю данные или надо еще их редактировать? Если просто отображать, то что может быть проще OnGetDisplayText Editor'а:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TForm.EditorPropertiesGetDisplayText(Sender: TcxCustomEditorRowProperties; ARecord: Integer; var AText: string);
  Var
        X, Y, M: integer;
begin
      { Получаем данные для отображения }         
           X := 2;
           Y := 2;
           M := X * Y;         
    
      { Выводим } 
           AText := Format('%d умножить на %d равно %d!', [X, Y, M]);
end;


Properties = Label, FieldName пустое.
...
Рейтинг: 0 / 0
15.11.2020, 15:21
    #40018510
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Непонятно, как это событие работает, как его правильно использовать, в какие моменты. При открытии формы, при перерисовке... когда оно срабатывает?
Ок, сделал строку с выпадающим списком (TcxLookupComboBox) и привязал к НД, выбираю там что-то, но строка пустая, пока она активна, в режиме редактирования. Как только фокус покидает ячейку, вижу результат выбора. Как только щелкаю туда - снова пустая.

Для выбора использую событие EditPropertiesCloseUp, где назначаю выбранное значение глобальной переменной. А потом эту глобальную переменную использую в PropertiesGetDisplayText.
...
Рейтинг: 0 / 0
15.11.2020, 15:41
    #40018517
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
X11
Непонятно, как это событие работает, как его правильно использовать, в какие моменты. При открытии формы, при перерисовке... когда оно срабатывает?
Коллега, у вас отладчик не работает? Или религия не позволяет использовать? Создайте точку останова и всё узнаете.

Вообще я в таких случаях делаю очень прямолинейно и просто - создаю два вертикальных грида. Один DB, второй обычный. В DB-гриде отображаю данные из датасета (чтобы руками не прописывать), а второй обычный грид кидаю на форму ниже, под DB-гридом, прямо вплотную, чтобы оба грида составляли как бы одно целое. Для пользователя внешне это будет выглядеть как один вертикальный грид.
Но это работает только в том случае, разумеется, если отображаемые данные и редактируемые данные можно расположить последовательно. Если редактируемые строчки надо вклинить между данными из БД, то этот вариант не подойдёт.
...
Рейтинг: 0 / 0
15.11.2020, 15:43
    #40018520
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Работает и пользуюсь, и вижу, что переменной выбранное в списке значение присваивается, только вот не отображается, пока не выйдешь из режима редактирования.
Как только снова щелкаю по строке (по ячейке), значение снова исчезает.
...
Рейтинг: 0 / 0
15.11.2020, 15:44
    #40018522
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Две сетки мне не подходит.
Мой пользователь имеет доступ к редактированию визуально части сетки. Т.е. это кагбэ дизайнер формы.
Поэтому вот.
...
Рейтинг: 0 / 0
15.11.2020, 16:02
    #40018525
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
X11
Ок, сделал строку с выпадающим списком (TcxLookupComboBox) и привязал к НД, выбираю там что-то, но строка пустая, пока она активна, в режиме редактирования. Как только фокус покидает ячейку, вижу результат выбора. Как только щелкаю туда - снова пустая.
Коллега, вы троллите что ли? Ничего не пропадает, если Properties->DataBinding->FieldName задано корректно.
...
Рейтинг: 0 / 0
15.11.2020, 16:13
    #40018529
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Перечитайте ТЗ с самого начала. Намекну, что у меня в этой одной строке нет привязки к НД.
...
Рейтинг: 0 / 0
15.11.2020, 16:26
    #40018532
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
X11
Перечитайте ТЗ с самого начала. Намекну, что у меня в этой одной строке нет привязки к НД.
А это кто писал:X11сделал строку с выпадающим списком (TcxLookupComboBox) и привязал к НД
Но даже если нет привязки, можно создать фиктивное поле в результате запроса и привязаться к нему. Не знаю, правда, как к этому отнесётся Fib, но проверить можно.
...
Рейтинг: 0 / 0
15.11.2020, 16:35
    #40018533
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Вы не поняли, это список (ListSource) привязан, т.к. источник отображения списка.
А свойство FieldName пустое.
...
Рейтинг: 0 / 0
15.11.2020, 17:02
    #40018537
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
В общем, решение пока такое, но не очень, после выбора значения из TcxLookupComboBox, в событии EditPropertiesCloseUp добавил строку

Код: pascal
1.
cxDBVerticalGrid1.HideEdit;
...
Рейтинг: 0 / 0
15.11.2020, 17:05
    #40018538
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
X11
Вы не поняли, это список (ListSource) привязан, т.к. источник отображения списка.
А свойство FieldName пустое.
Я всё прекрасно понял. Именно поэтому я и предложил присвоить свойству FieldName значение фиктивного поля из вашего TpFibDataSet.
...
Рейтинг: 0 / 0
15.11.2020, 17:09
    #40018539
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Возвращаюсь к нашим баранам. НД только для отображения. Поэтому он всегда ReadOnly, т.е. при попытке что-то присвоить полю, будет exception - dataset not in isert or edit mode.
...
Рейтинг: 0 / 0
15.11.2020, 17:58
    #40018546
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
X11
Возвращаюсь к нашим баранам. НД только для отображения. Поэтому он всегда ReadOnly, т.е. при попытке что-то присвоить полю, будет exception - dataset not in isert or edit mode.
Всегда ReadOnly - это не аксиома. У FibDataSet есть LocalUpdate, по-моему. Можно его включать. Но вообще лучше всего использовать Calculated Fields, как сразу вам и сказали.
...
Рейтинг: 0 / 0
15.11.2020, 17:59
    #40018547
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet)
Именно с Calculated Fields я и экспериментировал и получил ошибку, вышеуказанную.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Присвоить значение строке TcxDBVerticalGrid (ReadOnly DataSet) / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]