Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress (часть 4)

Автор: mdid
Дата сообщения: 07.03.2012 10:17
andreybear
пардон...я так накинулся а у самого отрисовывается иконка через OnCustomDrawCell..так что дико извиняюсь...видимо копипаст уже бессознательно происходит..и что значит "поля ячейки"? фон? так без проблем
Автор: simplecs
Дата сообщения: 07.03.2012 10:45
Здравствуйте!
Вот такая проблема с cxGrid: использую Inplace editors при помощи cxEditRepository. Если я ставлю на колонку, например, spnEdit или MaskEdit то нули или пустая маска ввода автоматически появляются во всех пустых записях таблицы. Получается что столбец, в который пользователь не заносил пока, данные содержит одни нули. Как бы этого избежать? Вот при использовании в качестве Inplce редактора календаря или ввода времени – все хорошо срабатывает – в пустых записях ничего не появляется, а эти контролы работают по другому.
Автор: Andrey128
Дата сообщения: 07.03.2012 13:24
Как сделать центрирование строки в TcxGrid?
Т.е. есть DataSet, он открывается, затем ищется запись.
После этого показывается форма с TcxGrid, и грид показывает текущую запись у своей нижней границы, а хотелось бы посередине.
Спасибо!
Автор: marser
Дата сообщения: 07.03.2012 17:32
Andrey128
Вычислить и установить свойство DataController.TopRecordIndex
Автор: A_V
Дата сообщения: 07.03.2012 23:34
simplecs
на OnGetDisplayText выставляй пустую строку для таких записей
Автор: simplecs
Дата сообщения: 10.03.2012 18:32
Здравствуйте!
Использую редактор HyperLinkEdit1. Хочу активировать событие запуска гиперссылки через код. Не подскажите как выполнить?


Shellexecute - напрямую не хочу использовать так как народ пишет что не совсем она "хорошо" работает под Win 7
Автор: wasilissk
Дата сообщения: 11.03.2012 06:23
simplecs
Может они про WinExec писали? На msdn ничего плохого про нее не нашел.
Автор: andreybear
Дата сообщения: 11.03.2012 11:52
mdid
Не поля ячейки, пол-ячейки, т.е. половину ячейки.))
Меня больше тема с отображением маленьких чисел беспокоит. Никто не сталкивался? (описание проблемы на предыдущей странице)
Автор: k94kwk1
Дата сообщения: 11.03.2012 20:34
[more] Здравствуйте!
Вот два вопроса возникло. Практический и теоретический:
1. Практический – как узнать какое значение храниться в определенной записи и определенном столбце таблице. Через DataController не получается так как на сколько я понимаю он содержит исходную структуру записей, которая была загружена и затем могла быть изменена при фильтрации и сортировке. А как тогда узнать? Поясню зачем мне это нужно: через событие OnCustomDrawCell ячеек я крашу строку таблицы в определенный цвет в зависимости от значения определенной ячейки.

2. Вот читаю help. Структура cxgrid и что где искать. Правильно ли я понимаю, что:
- раздел DataController – все что связано с данными в БД;
- раздел ViewInfo – все что связано с изменением формата элемента (шрифт, цвет и проч.)
- раздел Painter – фиг знает чем отличается от ViewInfo???
- ViewData - вроде из Help=а понятно что содержит информацию о том как представляются данные в таблице….Но что там конкретно – не ясно
- Controller – все что связано с перемещением по ячейкам [/more]

Добавлено:
Здравствуйте!
Вот два вопроса возникло. Практический и теоретический:
1.    Практический – как узнать какое значение храниться в определенной записи и определенном столбце таблице. Через DataController не получается так как на сколько я понимаю он содержит исходную структуру записей, которая была загружена и затем могла быть изменена при фильтрации и сортировке. А как тогда узнать?
2.    Вот читаю help. Структура cxgrid и что где искать. Правильно ли я понимаю, что:
- раздел DataController – все что связано с данными в БД;
- раздел ViewInfo – все что связано с изменением формата элемента (шрифт, цвет и проч.)
- раздел Painter – фиг знает чем отличается от ViewInfo???
- ViewData - вроде из Help=а понятно что содержит информацию о том как представляются данные в таблице….Но что там конкретно – не ясно
- Controller – все что связано с перемещением по ячейкам

Автор: X11
Дата сообщения: 11.03.2012 21:01

Цитата:
Практический – как узнать какое значение храниться в определенной записи и определенном столбце таблице. Через DataController не получается


DataController.Values[DataController.FocusedRecord, cxGridColumn.index]
Автор: mdid
Дата сообщения: 12.03.2012 16:30
хелп плиз...второй раз натыкаюсь на такую херню..есть панель dxbar на ней компонент LookupComboBox=EmployeeID
ImmediatePost = true
SyncMode = true

и есть код в кнопке

Код:
else if EmployeeID.EditValue<>null then begin
Автор: neznayka3
Дата сообщения: 12.03.2012 18:45
Есть PageControl c CloseButton-и. TcxTabSheet создаю динамически и надо что при закрытии некоторые страницы не уничтожалась, а скрывались. Пока писал, набросал, будут трудности с таким кодом?

Код: procedure TForm1.cxPageControl1CanCloseEx(Sender: TObject;
ATabIndex: Integer; var ACanClose: Boolean);
begin
ACanClose:=false;
cxPageControl1.Pages[ATabIndex].TabVisible:=False;
if ATabIndex<>0 then
cxPageControl1.ActivePageIndex:=ATabIndex-1;
end;
Автор: wasilissk
Дата сообщения: 12.03.2012 19:31
mdid

Цитата:
де беда?

А ежели?

Код: else if VarIsNull(EmployeeID.EditValue) then begin
Автор: k94kwk1
Дата сообщения: 12.03.2012 19:42
[more] [more] [more] Здравствуйте!
Проблема следующая. Допустим у меня есть cxGrid с двумя столбцами и связью с базой данных. В первой колонке при помощи cxEditRepository1Date пользователь может выбрать какую-нибудь дату. А во второй отображается соответствующее этой дате значение, которое сразу же заносится в Базу данных. Скажем, если пользователь выбрал дату, которая меньше сегодняшнего дня, то во второй колонке отображается «ДА», в иначе НЕТ. Причем Важно, чтобы данные из второй колонки попадали в соответствуюшщее поле БД. Я написал такой код на обновление второго столбца:

Код:
Procedure ReSetCellStatus(Arow:integer);
Begin
frmMain.cxGrid1DBTableView1.BeginUpdate;
If Frmmain.cxGrid1DBTableView1.ViewData.Rows[Arow].DisplayTexts[1]<’12.03.12' then
Frmmain.cxGrid1DBTableView1.DataController.Values[Arow,2]:= ‘ДА’
Else Frmmain.cxGrid1DBTableView1.DataController.Values[Arow,2]:= Нет';
frmMain.cxGrid1DBTableView1.endUpdate;
End;
Автор: andreybear
Дата сообщения: 13.03.2012 04:57
k94kwk1

Цитата:
If Frmmain.cxGrid1DBTableView1.ViewData.Rows[Arow].DisplayTexts[1]<’12.03.12' then

А что сравниваете? Две строки? Или все таки надо сравнить две даты?
Я бы повесил на событие BeforePost DataSet'а и присвоение делал бы полям DataSet'a, который подключен к cxGrid.

Добавлено:

Цитата:
почему-то та дата, которую выбрал пользователь cxEditRepository1Date не заносится в таблицу и не сохраняется

ImmediatePost = true?
Проверьте свойства компонентов.
Автор: mdid
Дата сообщения: 13.03.2012 08:53
wasilissk
отладчик показывает что VarIsNull(EmployeeID.EditValue)=true но все равно не заходит...видимо косяки в делфи...попробую переустановить...я уже пробовал и VarToStr проверять на '' но одно и то же
Автор: andreybear
Дата сообщения: 13.03.2012 10:25
mdid

Цитата:
else if EmployeeID.EditValue<>null then begin

т.е. здесь условие должно было выполниться, когда значение не Null, а здесь

Цитата:
VarIsNull(EmployeeID.EditValue)=true

когда значение равно Null?
Автор: mdid
Дата сообщения: 13.03.2012 10:56
andreybear
нет..я написал что отладчик возвращает значение not VarIsNull(EmployeeID.EditValue) как true..то есть он просто обязан зайти в секцию begin если в EmployeeID.EditValue содержится 419...я пробовал сначала

Код: else if EmployeeID.EditValue<>null then begin
Автор: Lena44
Дата сообщения: 13.03.2012 12:44
Можно ли в cxGrid в дизайне добавить строки и внести в них нужные значения? Например, мне нужен cxGrid всегда с 5-мя строками.
Автор: wasilissk
Дата сообщения: 13.03.2012 12:46
Lena44
dxMemData
Автор: Lena44
Дата сообщения: 13.03.2012 16:34
Нашла как, правда не в дизайне:
cxGrid1TableView1->DataController->RecordCount = 5;
cxGrid1TableView1->DataController->SetValue(0,0,".....");




Добавлено:
У меня в одной из колонок cxGrid1TableView1 хранятся цифры. Как сделать выравнивание в этой колонке по правой стороне и придать цифрам формат – после запятой две цифры? Такая возможность есть у суммирующих колонок, там есть свойство Format, а вот в целом для простой колонки не нашла как это сделать…
Автор: marser
Дата сообщения: 13.03.2012 19:45
Lena44

Цитата:
У меня в одной из колонок cxGrid1TableView1 хранятся цифры. Как сделать выравнивание в этой колонке по правой стороне и придать цифрам формат – после запятой две цифры

В Properties колонки есть свойство выравнить по горизонтали. Если создадите Properties как CurrencyEdit, то там есть Formаt. В крайнем случае, у колонки есть событие GetDisplayText.
Автор: Lena44
Дата сообщения: 13.03.2012 21:38
marser, СПАСИБО!
Автор: X11
Дата сообщения: 14.03.2012 00:26
Lena44, у датасета, к которому привязан грид, у каждой колонки есть свойство DisplayFormat, туда введи, например, это:

Код: #,##0.
Автор: andreybear
Дата сообщения: 14.03.2012 04:12
В колонке cxGrid Properties = MaskEdit. При вводе числа с пятью и более знаками после запятой с 0 целой частью, например, 0.00001, в ячейке отображается значение 15. Если десять знаков после запятой, то 110. В таком случае в БД пишется значение в виде 1E-n, где n - степень (в первом случае 1E-5, во втором - 1E-10). Не понятно, почему значения выводятся таким образом и как решить эту проблему. Хочется, чтобы число отображалось в том виде, в котором его ввел пользователь, ведь 15 - это не 0.00001, и даже не не 1E-5.
Что можно сделать в этой ситуации?
Автор: marser
Дата сообщения: 14.03.2012 06:50
andreybear
Так Вы ничего не написали. Версия DevExpress? Версия среды разработки? Какая маска? Какие свойства в Properties (не по умолчанию)? Какая БД? Формат поля БД? Проблема только с DB Grid или с не DB тоже? Как ведут себя контролы cxDBMaskEdit и cxMaskEdit?
Автор: dimm78
Дата сообщения: 14.03.2012 09:48

Цитата:
В колонке cxGrid Properties = MaskEdit. При вводе числа с пятью и более знаками после запятой с 0 целой частью, например, 0.00001, в ячейке отображается значение 15. Если десять знаков после запятой, то 110. В таком случае в БД пишется значение в виде 1E-n, где n - степень (в первом случае 1E-5, во втором - 1E-10). Не понятно, почему значения выводятся таким образом и как решить эту проблему. Хочется, чтобы число отображалось в том виде, в котором его ввел пользователь, ведь 15 - это не 0.00001, и даже не не 1E-5.
Что можно сделать в этой ситуации?


Я обычно для этих целей использую TcxCurrencyEdit настраивая в Properties свойства DecimalPlaces и DisplayFormat. Он позволяет отображать до 15 знаков после запятой
Автор: andreybear
Дата сообщения: 14.03.2012 11:26
dimm78
Заранее не известно, сколько знаков после запятой будет у числа в конкретной ячейке, а отображать надо так, как ввел пользователь.
marser
Версия DevExpress 56.
Delphi 2006.
Маска: -?\d+,\d+
Properties:
Ссылка
БД Oracle 10g.
Формат поля? Что Вы имеете ввиду?
Тип поля: number.
Проблема только с cxDBMaskEdit, cxMaskEdit отображает как надо.

Складывается впечатление, что компонент некорректно обрабатывает значения вида 1E-n (где n - степень), т.к. в БД маленькие значения сохраняются именно в таком виде.
Автор: marser
Дата сообщения: 14.03.2012 21:19
andreybear
Действительно, есть такая проблема.

Цитата:
т.к. в БД маленькие значения сохраняются именно в таком виде.

Похоже БД здесь ни при чём Ссылка
Не совсем по теме, но может поможет Ссылка
Автор: simplecs
Дата сообщения: 15.03.2012 14:43
Здравствуйте!
Сделал в cxgrid группировку по какому-нибудь столбцу – нужно отразить в строке группировки итоговые значения по группе но не стандартные а свои собственные. Как написать свои собственные итоги в нижнем Footor-е и в Footor-е группы я понимаю (через OnGetText). А как мне отследить записи которые попали в тут или иную группу. Например, мне необходимо в группе показать (слово «Привет» встретилось 2 раза, слово «Пока» 3 раза в столбце 1). Но как посчитать эти 2 и 3 раза в рамках группы, а не всей таблицы?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.