думаю да, но на всякий случай спрошу, вот у меня есть стороннее дерево, типа TFIBExTreeCombobox (http://home.mts-nn.ru/~mapnn/index_ru.html), мож кто сталкивался к таким, я покупал его ещё года 2 назад. Так вот, можно его врулить туда, в EditProperties?
» Использование DevExpress 2
X11
можно
можно
Очень странное поведение, то 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;
но заполняется нормально, по крайней мере записи видны
Код:
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;
X11
Что-то всеже с твоим датасетом не то. У тебя 'id' какого типа?
Попробуй всеж написать
Код: Value := tTypes.FBN('id').AsString;
Что-то всеже с твоим датасетом не то. У тебя 'id' какого типа?
Попробуй всеж написать
Код: Value := tTypes.FBN('id').AsString;
Цитата:
У тебя '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;
X11
Цитата:
Если это 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
- датасет открывается после того, как будет заполнен список.
Цитата:
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
- датасет открывается после того, как будет заполнен список.
я поставил ImadiatePost в True и ImediateTextUpdate в True пока всё работает
X11
Цитата:
Да нет, не должно.
Пока у меня мысли кончились, и домой уже хочется =) Тут только дебагером смотреть нужно почему null все время рисуется.
Цитата:
а ничего не связано с DataBinding.valueType или properties.value.type (инспектор свойст)?
Да нет, не должно.
Пока у меня мысли кончились, и домой уже хочется =) Тут только дебагером смотреть нужно почему null все время рисуется.
уже не рисуется , идиотизм, нудно везде ставить ImmediatePost в True
X11
Ну, не совсем идиотизм. Если ImmediatePost установить в false, то значение будет передано в датасет когда редактор потеряет фокус, или когда будет вызвано PostEditValue. В общем, это даёт большую гибкость, хотя и нечасто используется.
Ну, не совсем идиотизм. Если ImmediatePost установить в false, то значение будет передано в датасет когда редактор потеряет фокус, или когда будет вызвано PostEditValue. В общем, это даёт большую гибкость, хотя и нечасто используется.
Вот пример:
у основной таблицы есть поле id_type : integer;
значит тип rType.Properties.DataBinding.ValueType должен быть тоже integer
а если
у основной таблицы есть поле remark : string;
значит тип rRemark.Properties.DataBinding.ValueType должен быть тоже string
rRemark и rType это, как Вы понимаете строки вертикалгрид
и дальше, если ключевое поле (id) справочной таблицы имеет целочисленный тип, то и тип
rType.Properties.Value.Type тоже должен быть integer или можно всё это не трогать, а?
у основной таблицы есть поле id_type : integer;
значит тип rType.Properties.DataBinding.ValueType должен быть тоже integer
а если
у основной таблицы есть поле remark : string;
значит тип rRemark.Properties.DataBinding.ValueType должен быть тоже string
rRemark и rType это, как Вы понимаете строки вертикалгрид
и дальше, если ключевое поле (id) справочной таблицы имеет целочисленный тип, то и тип
rType.Properties.Value.Type тоже должен быть integer или можно всё это не трогать, а?
Реально ли сделать с помощью DevExpress такие же кнопки, как у Ribbon, с такой же подсветкой и подсказками, но только на белом фоне и разместить их отдельно от Ribbon?
Oweb
Реально. Ribbon есть в девэкспрессе. Берёшь его исходники и вытаскиваешь кнопки и подсказки. Правда, для этого нужен некоторый опыт.
Реально. Ribbon есть в девэкспрессе. Берёшь его исходники и вытаскиваешь кнопки и подсказки. Правда, для этого нужен некоторый опыт.
А есть способ проще? Может есть другой компонент, реализующий данные эффект?
Oweb
Пока что такого нет.
Есть TcxHintStyleController и TcxButtton. Можешь попробовать написать что-то на их основе, но, наверное, проще будет написать свой компонент, унаследовав его от TComponent.
Пока что такого нет.
Есть TcxHintStyleController и TcxButtton. Можешь попробовать написать что-то на их основе, но, наверное, проще будет написать свой компонент, унаследовав его от TComponent.
удалено, похоже фигню сморозил =)
Подскажите, возможно ли добавить колонку с checkbox'ом в cxGrid, не связанную ни с каким полем из DataSource. В настройках DataSet стоит запрет на изменение базы. Проще выражаясь, нужен чекбокс для каждой записи из DataSet, независящий от данных
UnholyRS
смотри unbound mode
смотри unbound mode
UnholyRS
Можно. Сейчас точно не помню как это делал, но можно проверить 2 случая:
1. В DBTableView добавить колонку и ни к чему её не привязывать.
2. В датасете (если он формируется по запросу), добавить в выводимые поля запроса константу, например, 0 или NULL, например:
select t.*, 0 newfield from mytable t
Затем, в датасете в списке полей для этого поля указать св-во FieldKind := fkInternalCalc.
Можно. Сейчас точно не помню как это делал, но можно проверить 2 случая:
1. В DBTableView добавить колонку и ни к чему её не привязывать.
2. В датасете (если он формируется по запросу), добавить в выводимые поля запроса константу, например, 0 или NULL, например:
select t.*, 0 newfield from mytable t
Затем, в датасете в списке полей для этого поля указать св-во FieldKind := fkInternalCalc.
Спасибо, помогло.
Добавлено:
Я просто добавил пустую колонку, свойство 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;
Добавлено:
Я просто добавил пустую колонку, свойство 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;
Как узнать координаты кнопки на панели инструментов? Хочу, чтобы при нажатии под ней открывалась небольшая форма.
узнавай координаты курсора мыши
X11
Не пойдет, надо, чтобы форма появилась точно под кнопкой (как DropDownMenu).
Не пойдет, надо, чтобы форма появилась точно под кнопкой (как DropDownMenu).
drunk2
Используй mydxBarButton.ClickItemLink.ItemRect
ClickItemLink - контрол, на который щелкнули мышью. Для одного item их может быть много, например, кнопка на панели инструментов и в меню.
ItemRect - координаты относительно родительского элемента. Сам родительский элемент получаешь так: mydxBarButton.ClickItemLink.BarControl и для него используешь GetFullItemRect, GetItemRect, GetItemRectEx - в hlp-файле это описано.
Используй mydxBarButton.ClickItemLink.ItemRect
ClickItemLink - контрол, на который щелкнули мышью. Для одного item их может быть много, например, кнопка на панели инструментов и в меню.
ItemRect - координаты относительно родительского элемента. Сам родительский элемент получаешь так: mydxBarButton.ClickItemLink.BarControl и для него используешь GetFullItemRect, GetItemRect, GetItemRectEx - в hlp-файле это описано.
Подскажите, пожалуйста:
в cxGrid создан cxGridDBBandedTableView
Необходимо в footer выводить сумму, если только она положительная (больше нуля).
Выстявляю
DBGrid->DataController->Summary->FooterSummaryItems->Items[i]))->Format =",0.00; ";
При значении суммы меньше -1 (например -5) отрабатывает правильно, т.е. отображается пробел.
При значении суммы меньше 0, но больше -1 (например -0.05) отрабатывает не правильно, а именно 0.00
Это фича? Какой формат применить?
в cxGrid создан cxGridDBBandedTableView
Необходимо в footer выводить сумму, если только она положительная (больше нуля).
Выстявляю
DBGrid->DataController->Summary->FooterSummaryItems->Items[i]))->Format =",0.00; ";
При значении суммы меньше -1 (например -5) отрабатывает правильно, т.е. отображается пробел.
При значении суммы меньше 0, но больше -1 (например -0.05) отрабатывает не правильно, а именно 0.00
Это фича? Какой формат применить?
Подскажите, пожалуйста,
по какому событию определить
в cxGrid в какую
1 - ячейку,
2 - строку,
3 - столбец
тыкнули мышой за раз.
Т.е. я тыкаю в ячеку и получаю ее содержимое,
а так же объект строки и столбца.
В TableView.OnCellClick через TcxGridTableDataCellViewInfo
ACellViewInfo.GridRecord.DisplayTexts[Column]
можно получить значение, но я не могу узнать
в какой столбец (Column) тыкнули.
по какому событию определить
в cxGrid в какую
1 - ячейку,
2 - строку,
3 - столбец
тыкнули мышой за раз.
Т.е. я тыкаю в ячеку и получаю ее содержимое,
а так же объект строки и столбца.
В TableView.OnCellClick через TcxGridTableDataCellViewInfo
ACellViewInfo.GridRecord.DisplayTexts[Column]
можно получить значение, но я не могу узнать
в какой столбец (Column) тыкнули.
Ivan_Kia
Используй TcxDataSummaryItem.OnGetText для вывода значения
Bol970
Код: ShowMessageFmt('Столбец - %s, строка - %d, значение - %s ',
[ ACellViewInfo.Item.Name,
ACellViewInfo.GridRecord.Index,
VarToStrDef(ACellViewInfo.Value, '(пусто)') ]);
Используй TcxDataSummaryItem.OnGetText для вывода значения
Bol970
Код: ShowMessageFmt('Столбец - %s, строка - %d, значение - %s ',
[ ACellViewInfo.Item.Name,
ACellViewInfo.GridRecord.Index,
VarToStrDef(ACellViewInfo.Value, '(пусто)') ]);
Dennica
ПАСИБ.
Помогло.
ПАСИБ.
Помогло.
Dennica, уже пришлось через TcxDataSummaryItem.OnGetText сделать, но все ж непонятно с форматом...
Всем привет!
В динамике заполняю грид. Как у полей с типом 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
В динамике заполняю грид. Как у полей с типом 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, истории становления российского интернета. Сделано для людей.