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

» Использование DevExpress 2

Автор: Dennica
Дата сообщения: 04.07.2007 09:25
saltmi1
Ты получаеш закладку и ничего с ней не делаеш. Помоему еще нужно явно перейти на запись в датасэте:

Код: DM.ClientQ.Bookmark := bookmark;
Автор: Dronton2
Дата сообщения: 04.07.2007 09:42
X11
Непонятно, куда добавляются данные в цикле: записи в VerticalGrid, или в строки TcxImageCombobox?

Чем не подходит свойство TcxImageComboboxProperties.FindItemByValue?
Автор: X11
Дата сообщения: 04.07.2007 11:09
данные в цикле добавляются в выпадающий список
вот из такой формы
http://www.ra-codecraft.com.ua/scr/FormEdit.png
я хочу создать форму добавления в виде таблицы
Куча выпадающих списков - это всё справочники.
И я вот решаю, что использовать, вроде TcxLookupCombobxProperties можно, но как оттуда вытащить KeyValue пока не допёр и на сайте у них не могу найти, неужели нельзя проще сделать...
Автор: Dronton2
Дата сообщения: 04.07.2007 11:51
Чем дальше, тем запутаннее и запутаннее...

Цитата:
создать форму добавления в виде таблицы

Правильно ли я понял, что вместо множества Edit-контролов на форме будет один cxGrid, содержащий cxTableView? И некоторые поля будут иметь редакторы в виде TcxLookupCombobox?
И в какой момент нужно узнать KeyValue? Сразу после того, как пользователь выбрал какое-либо значение в выпадающем списке?

Тогда можно использовать событие EditProperties.OnChange,
получать значение TcxCustomGridTableItem.EditValue, и, возможно, нужно установить TcxCustomEditProperties.ImmediatePost := true;
Автор: saltmi1
Дата сообщения: 04.07.2007 12:28
Dennica
Dronton2
Заработало! Спасибо товарищи.
Автор: X11
Дата сообщения: 04.07.2007 12:29

Цитата:
Правильно ли я понял, что вместо множества Edit-контролов на форме будет один cxGrid

cxVerticalGrid

Добавлено:

Цитата:
И некоторые поля будут иметь редакторы в виде TcxLookupCombobox?

именно

потом всё будет по нажатию кнопки
DataSet.FieldByName('ID_Type').AsVariant := (rowType.properties.EditProperties as TcxLookupComboboxProperties).что сюда???

Добавлено:

Цитата:
получать значение TcxCustomGridTableItem.EditValue

но мне нужно KeyValue, вот в библиотеке EhLib контролы имеют KeyValue, там всё просто и понятно и код не такой длинющщий, как у девок
Автор: Dronton2
Дата сообщения: 04.07.2007 13:38
X11
В случае справочников нормальным считается случай, когда EditValue в колонке cxVerticalGrid равно значению KeyField в cxLookupComboBox.
Автор: X11
Дата сообщения: 04.07.2007 14:19
я думал, что EditValue это видимое значение, типа поле Name из справочника
Автор: eyewo
Дата сообщения: 05.07.2007 04:27
В cxGrid в столбце, отображающем значение типа "дата и время" не отображается полночь. Вместо "01.01.2007 0:00:00" показывается "01.01.2007". Любое другое время отображается полностью ("01.01.2007 10:30:00"). То же самое происходит при назначении и отображении фильтра (в поле ввода значения для сравнения и в строке описания фильтра). Как сделать чтобы время отображалось везде и в любом случае?
Автор: Dennica
Дата сообщения: 05.07.2007 07:11
eyewo
Для колонки грида можно самому как нужно форматироать значение в OnGetDataText. Насчет фильтра затрудняюсь =\
Автор: X11
Дата сообщения: 05.07.2007 10:10
Ну так как всё таки выудить это самое cxLookupComboBoxPropertis.KeyValue?
Автор: Dronton2
Дата сообщения: 05.07.2007 10:36
eyewo
Если данные в гриде берутся из датасета, то в поле датасета можно задать формат:

Код: myField.DisplayFormat := 'dd-mmm-yyyy hh:nn'
Автор: eyewo
Дата сообщения: 05.07.2007 10:58
Dronton2

Спасибо. Но я, на самом деле, уже перепробовала все вами перечисленное, только нужного эффекта так и не добилась.

Назначение myField.DisplayFormat не влияет на отображение описания фильтра, оно по прежнему выглядит так: "Начало (дата и время) = 03.07.2007".

И вот еще что странно. Колонке назначено Properties DateEdit, причем с Kind = cxDateTime и все такое. При этом как в cxFilterControl, так и в cxFilterDialog всплывающий редактор показывает календарь, часы и кнопку "Сегодня", но не кнопку "Сейчас" (всплывающий редактор в ячейке грида отображает кнопки правильно - "Сейчас", а не "Сегодня").
Автор: X11
Дата сообщения: 05.07.2007 11:20
Dronton2
у меня нет колумнов, у меня есть Rows, я использую cxVerticalGrid

Добавлено:
если ты имеешь виду колумн у cxLookupComboBoxPropertis, то там тогда нужно таблицу создавать, да?

Добавлено:

Код:
v := (rState.Properties.EditProperties as TcxLookupComboBoxProperties).какой такой mycolumn??
Автор: Dennica
Дата сообщения: 05.07.2007 11:34
X11
cxVerticalGrid1EditorRow1.Properties.Value
Автор: X11
Дата сообщения: 05.07.2007 12:24
Dennica и что мен выдаст? значение поля ID?

Добавлено:
Как правило таблицы справочники состоят из 2х полей id и name, пользователь выбирает/видит name а в основную таблицу заносится поле id

Добавлено:
Dennica из выпадающего списка выбираю всё время разные значения и проверяю так
[code]
v := rState.Properties.Value;
ShowMessage(v);

все время ноль выдает
Автор: Dronton2
Дата сообщения: 05.07.2007 13:01
eyewo
У меня в строке описания фильтра отображается правильно: "(Дата = 03-июн-2007 00:00)".
При этом, Properties для колонки не задан.

X11

Цитата:
у меня нет колумнов, у меня есть Rows

Прости, забыл.
Dennica прав: используй cxVerticalGrid1EditorRow1.Properties.Value. Оно выдаст значение поля ID из справочника. И именно это значение хранится в cxVerticalGrid1EditorRow1.


Цитата:
все время ноль выдает

Попробуй в Properties указать:
cxVerticalGrid1EditorRow1.Properties.EditProperties.ImmediatePost := true;

Автор: X11
Дата сообщения: 05.07.2007 13:44

Цитата:
Попробуй в Properties указать:
cxVerticalGrid1EditorRow1.Properties.EditProperties.ImmediatePost := true;

Dronton2
пользователь ручками не заполняет ничего в выпадающих списках, причем здесь ImmediatePost?
Автор: Dronton2
Дата сообщения: 05.07.2007 13:52
X11
Тогда каким образом заполняются значения полей?
Кусок кода можешь показать?
Автор: X11
Дата сообщения: 05.07.2007 14:39
Вот так, без кода

http://img160.imageshack.us/img160/5971/11111jt3.png
Автор: Dronton2
Дата сообщения: 05.07.2007 16:46
X11
То есть, они добавляются напрямую в датасет?
Тогда что мешает взять значения напрямую из полей датасета?
Автор: Dennica
Дата сообщения: 05.07.2007 18:09
X11

Цитата:
из выпадающего списка выбираю всё время разные значения и проверяю так
v := rState.Properties.Value;
ShowMessage(v);

все время ноль выдает


Да быть такого не может. Сделаю предположение, что поле ID указанное в KeyFieldNames на самом деле не существует в датасете, либо существует но во всех строках содержит нули %)
Автор: X11
Дата сообщения: 06.07.2007 07:47
Dennica
тебе снимки экрана дать?

Добавлено:
http://img243.imageshack.us/img243/7594/62921150sd6.png
http://img369.imageshack.us/img369/20/61496868mz5.png
http://img149.imageshack.us/img149/2314/55872581mf4.png
Автор: Dennica
Дата сообщения: 06.07.2007 08:24
X11
Т.е. этим ты хочеш сказать что мои предположения по поводу датасета не верны?
В общем решение тут было озвучено, и оно проверено и полностью рабочее. Почему у тебя не работает я могу только гадать. Сделай пример небольшой из одной формочки, вместо своего датасета подставь например dxMemData. Если не заработает, сможеш его выложить на поглядеть.
Автор: X11
Дата сообщения: 06.07.2007 08:37
ок, ждите

Добавлено:
Прикиньте, с dxMemDataset прокатывает нормально, только не id показывает!!!! всё таки не Id
а то, что видно в строке! Ща выложу пример

Добавлено:
я в шоке всё работает , как и вы говорили, и выкладывать стыдно рабочий пример, не пойму, что у меня не так в рабочем проекте, я приношу свои извинения за отнятое время, парни, не обижайтесь, всякое бывает

Добавлено:
Ещё вопрос, как менять местами строки, добавил в конец списка таблицу строку-категорию, а вверх поднять не могу

Добавлено:
я в шоке, пересоздал строку, теперь вместо нуля на все строки выдаёт Null
Автор: Dronton2
Дата сообщения: 06.07.2007 10:01
X11

Цитата:
я в шоке, пересоздал строку, теперь вместо нуля на все строки выдаёт Null

К полю датасета строка прикреплена? Датасет открыт?


Цитата:
Ещё вопрос, как менять местами строки, добавил в конец списка таблицу строку-категорию, а вверх поднять не могу

В LayoutEditor мышкой перетаскивай:
- на строку - добавить child
- чуть левее строки - добавить sibling
Автор: X11
Дата сообщения: 06.07.2007 10:38
И в ListFieldNames, и в KeyFieldNames установлены значения полей. могу форму прислать по электронке. Я уже просто не знаю что делать. Что Dev с FIB+ не дружат, чтоли?

Добавлено:
Я сделал так:
1. кинул датасет + датасорс, соединил
2. кинул вертикалгрид
3. добавил строку
4. в EditProperties выбрал LookupCombobox
5. выбрал в listsource Datasource1
6. Выбрал в ListFieldNames поле NAME
7. Выбрал в KeyFieldNames поле ID

вроде всё, как и в тестовом примере
запустил приложение

Добавлено:
ураааааааааааааааааааа, заррррработалооооооооооо, заново таблицу пересоздал

Добавлено:
Но это ещё не всё, вопрос с извлечением id из комбобокса остался открытым, а именно:
добавление записей и привязка id r ybv hf,jnftn yjhvfkmyj

Код:
procedure TfmAddApart2.ToolButton1Click(Sender: TObject);
begin
(rIs.Properties.EditProperties as TcxComboBoxProperties).Items.Clear;
fibdsState.Open;
fibdsState.First;
while not fibdsState.Eof do begin
(rIs.Properties.EditProperties as TcxComboBoxProperties).Items.AddObject(fibdsState.FBN('NAME').AsString,
Pointer(fibdsState.FBN('ID').AsInteger) );
fibdsState.next;
end;
end;
Автор: Dennica
Дата сообщения: 06.07.2007 11:23
X11
Я вот чего не пойму, почему ты так упорно пытаешся использовать комбобокс там где явну неоюходимо использовать лукапкомбо.. ы?
Автор: X11
Дата сообщения: 06.07.2007 11:24

так не прокатывает, компилятор на add и Description ругается
[code]
while not tTypes.Eof do begin
with TcxImageComboBoxProperties(rType.Properties.EditProperties) do begin
with add do begin
Description:='xxx';

end;

end;







Dennica
я говорил, что у меня будет куча разных типов: Integer, String, boolean, выпадающие спики не связанные с таблицами базы, LookupCombobox, жалко дерево они не встроили в EditProperties
так что я тут на долго
Автор: Dennica
Дата сообщения: 06.07.2007 11:38
X11
Заполняеш так:

Код:
fibdsState.First;
while not fibdsState.Eof do begin
with ( rIs.Properties.EditProperties
as TcxImageComboBoxProperties).Items.Add do
begin
Description := fibdsState.FieldByName('name').AsString;
Value := fibdsState.FieldByName('id').AsInteger;
end;
fibdsState.Next;
end;

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


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