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

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

Автор: X11
Дата сообщения: 06.07.2007 12:53
думаю да, но на всякий случай спрошу, вот у меня есть стороннее дерево, типа TFIBExTreeCombobox (http://home.mts-nn.ru/~mapnn/index_ru.html), мож кто сталкивался к таким, я покупал его ещё года 2 назад. Так вот, можно его врулить туда, в EditProperties?
Автор: Dennica
Дата сообщения: 06.07.2007 12:59
X11
можно
Автор: X11
Дата сообщения: 06.07.2007 13:24
Очень странное поведение, то null выдает на любую строку, которую я выбрал, то всё время 174 (id одной из записей)
но заполняется нормально, по крайней мере записи видны

Код:
procedure TfmAddApart2.FormCreate(Sender: TObject);
begin
tTypes.Open;
tTypes.First;
while not tTypes.Eof do begin
with (rType.Properties.EditProperties as TcxImageComboBoxProperties).Items.Add do begin
Description := tTypes.FBN('Name').Value;
Value := tTypes.FBN('id').Value;
end;
tTypes.Next;

end;
end;


procedure TfmAddApart2.ToolButton1Click(Sender: TObject);
begin
ShowMessage(VarToStr(rType.Properties.Value));
end;
Автор: Dennica
Дата сообщения: 06.07.2007 13:42
X11
Что-то всеже с твоим датасетом не то. У тебя 'id' какого типа?
Попробуй всеж написать

Код: Value := tTypes.FBN('id').AsString;
Автор: X11
Дата сообщения: 06.07.2007 14:15

Цитата:
У тебя 'id' какого типа?

integer, как и положено

Добавлено:
ShowMessage нормальные id выдает при заполнении

Код:
with (rType.Properties.EditProperties as TcxImageComboBoxProperties).Items.add do begin
Description := tTypes.FBN('Name').Value;
Value := tTypes.FBN('id').AsString;
ShowMessage (tTypes.FBN('id').AsString);
end;
Автор: Dronton2
Дата сообщения: 06.07.2007 15:17
X11

Цитата:
ShowMessage нормальные id выдает при заполнении
ShowMessage(VarToStr(rType.Properties.Value)); результат то же - null


Если это DBVerticalGrid, то нужно проверить:
- DBVerticalGrid.DataController.DataSource <> nil
- DBVerticalGrid.DataController.DataSource.Dataset.Active = true
- DBVerticalGrid.DataController.DataSource.Dataset.FieldByName('xxx').AsVariant <> null
- DBVerticalGrid.DataController.DataSource.Dataset.FieldByName('xxx').Value присутствует в списке, сформированном для TcxImageComboBoxProperties
- датасет открывается после того, как будет заполнен список.
Автор: X11
Дата сообщения: 06.07.2007 15:21
я поставил ImadiatePost в True и ImediateTextUpdate в True пока всё работает
Автор: Dennica
Дата сообщения: 06.07.2007 15:23
X11

Цитата:
а ничего не связано с DataBinding.valueType или properties.value.type (инспектор свойст)?

Да нет, не должно.

Пока у меня мысли кончились, и домой уже хочется =) Тут только дебагером смотреть нужно почему null все время рисуется.
Автор: X11
Дата сообщения: 06.07.2007 15:46
уже не рисуется , идиотизм, нудно везде ставить ImmediatePost в True
Автор: Dronton2
Дата сообщения: 06.07.2007 16:09
X11
Ну, не совсем идиотизм. Если ImmediatePost установить в false, то значение будет передано в датасет когда редактор потеряет фокус, или когда будет вызвано PostEditValue. В общем, это даёт большую гибкость, хотя и нечасто используется.
Автор: X11
Дата сообщения: 06.07.2007 16:30
Вот пример:
у основной таблицы есть поле id_type : integer;
значит тип rType.Properties.DataBinding.ValueType должен быть тоже integer

а если
у основной таблицы есть поле remark : string;
значит тип rRemark.Properties.DataBinding.ValueType должен быть тоже string


rRemark и rType это, как Вы понимаете строки вертикалгрид


и дальше, если ключевое поле (id) справочной таблицы имеет целочисленный тип, то и тип
rType.Properties.Value.Type тоже должен быть integer или можно всё это не трогать, а?
Автор: Oweb
Дата сообщения: 08.07.2007 16:44
Реально ли сделать с помощью DevExpress такие же кнопки, как у Ribbon, с такой же подсветкой и подсказками, но только на белом фоне и разместить их отдельно от Ribbon?
Автор: Dronton2
Дата сообщения: 09.07.2007 08:39
Oweb
Реально. Ribbon есть в девэкспрессе. Берёшь его исходники и вытаскиваешь кнопки и подсказки. Правда, для этого нужен некоторый опыт.
Автор: Oweb
Дата сообщения: 09.07.2007 09:54
А есть способ проще? Может есть другой компонент, реализующий данные эффект?
Автор: Dronton2
Дата сообщения: 09.07.2007 10:33
Oweb
Пока что такого нет.
Есть TcxHintStyleController и TcxButtton. Можешь попробовать написать что-то на их основе, но, наверное, проще будет написать свой компонент, унаследовав его от TComponent.
Автор: Dennica
Дата сообщения: 09.07.2007 12:43
удалено, похоже фигню сморозил =)
Автор: UnholyRS
Дата сообщения: 10.07.2007 09:39
Подскажите, возможно ли добавить колонку с checkbox'ом в cxGrid, не связанную ни с каким полем из DataSource. В настройках DataSet стоит запрет на изменение базы. Проще выражаясь, нужен чекбокс для каждой записи из DataSet, независящий от данных
Автор: drunk2
Дата сообщения: 10.07.2007 10:20
UnholyRS
смотри unbound mode
Автор: Dronton2
Дата сообщения: 10.07.2007 10:50
UnholyRS
Можно. Сейчас точно не помню как это делал, но можно проверить 2 случая:
1. В DBTableView добавить колонку и ни к чему её не привязывать.
2. В датасете (если он формируется по запросу), добавить в выводимые поля запроса константу, например, 0 или NULL, например:
select t.*, 0 newfield from mytable t
Затем, в датасете в списке полей для этого поля указать св-во FieldKind := fkInternalCalc.
Автор: UnholyRS
Дата сообщения: 10.07.2007 11:02
Спасибо, помогло.

Добавлено:
Я просто добавил пустую колонку, свойство DataBinding.FieldName оставил пустым, а FieldType = Boolean. В Properties выбрал CheckBox


Добавлено:
А вот так установил начальные значения:

for I := 0 to <view_name>.DataController.RecordCount - 1 do
begin
<view_name>.DataController.SetValue(I, <column_name>.Index, true);
end;
Автор: drunk2
Дата сообщения: 11.07.2007 07:15
Как узнать координаты кнопки на панели инструментов? Хочу, чтобы при нажатии под ней открывалась небольшая форма.
Автор: X11
Дата сообщения: 11.07.2007 07:43
узнавай координаты курсора мыши
Автор: drunk2
Дата сообщения: 11.07.2007 08:13
X11
Не пойдет, надо, чтобы форма появилась точно под кнопкой (как DropDownMenu).
Автор: Dronton2
Дата сообщения: 11.07.2007 09:37
drunk2
Используй mydxBarButton.ClickItemLink.ItemRect
ClickItemLink - контрол, на который щелкнули мышью. Для одного item их может быть много, например, кнопка на панели инструментов и в меню.
ItemRect - координаты относительно родительского элемента. Сам родительский элемент получаешь так: mydxBarButton.ClickItemLink.BarControl и для него используешь GetFullItemRect, GetItemRect, GetItemRectEx - в hlp-файле это описано.
        
Автор: Ivan_Kia
Дата сообщения: 12.07.2007 07:08
Подскажите, пожалуйста:
в cxGrid создан cxGridDBBandedTableView
Необходимо в footer выводить сумму, если только она положительная (больше нуля).
Выстявляю
DBGrid->DataController->Summary->FooterSummaryItems->Items[i]))->Format =",0.00; ";
При значении суммы меньше -1 (например -5) отрабатывает правильно, т.е. отображается пробел.
При значении суммы меньше 0, но больше -1 (например -0.05) отрабатывает не правильно, а именно 0.00
Это фича? Какой формат применить?
Автор: Bol970
Дата сообщения: 12.07.2007 10:07
Подскажите, пожалуйста,
по какому событию определить
в cxGrid в какую
1 - ячейку,
2 - строку,
3 - столбец
тыкнули мышой за раз.
Т.е. я тыкаю в ячеку и получаю ее содержимое,
а так же объект строки и столбца.
В TableView.OnCellClick через TcxGridTableDataCellViewInfo
ACellViewInfo.GridRecord.DisplayTexts[Column]
можно получить значение, но я не могу узнать
в какой столбец (Column) тыкнули.
Автор: Dennica
Дата сообщения: 12.07.2007 10:53
Ivan_Kia
Используй TcxDataSummaryItem.OnGetText для вывода значения
Bol970

Код: ShowMessageFmt('Столбец - %s, строка - %d, значение - %s ',
[ ACellViewInfo.Item.Name,
ACellViewInfo.GridRecord.Index,
VarToStrDef(ACellViewInfo.Value, '(пусто)') ]);
Автор: Bol970
Дата сообщения: 12.07.2007 11:35
Dennica
ПАСИБ.
Помогло.
Автор: Ivan_Kia
Дата сообщения: 12.07.2007 13:42
Dennica, уже пришлось через TcxDataSummaryItem.OnGetText сделать, но все ж непонятно с форматом...
Автор: Shadi
Дата сообщения: 13.07.2007 11:50
Всем привет!
В динамике заполняю грид. Как у полей с типом Float поставить DisplayFormat := ',0.00'???

кусок ш-ш-кода:


Код: for I := 0 to spRun.FieldCount - 1 do // Iterate
begin
BField := GridDB.CreateColumn as TcxGridDBColumn;
BField.Caption := spRun.Fields[i].FieldName;
BField.DataBinding.FieldName := spRun.Fields[i].FieldName;
if spRun.Fields[i].DataType = ftFloat then
BField.DisplayFormat := ',0.00' //Так не катит
else if spRun.Fields[i].DataType = ftInteger then
BField.Summary.FooterFormat := ',0';
end; // for

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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