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

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

Автор: Cryogen2003
Дата сообщения: 07.12.2009 11:44
X11
ААААА, ну это свойство включено
Автор: data man
Дата сообщения: 07.12.2009 12:06
AlexMoor


Код: var
Panel: TdxStatusBarPanel;
begin
Panel := StatusBar.GetPanelAt(X, Y);
if Assigned(Panel) then ...
end;
Автор: AlexMoor
Дата сообщения: 07.12.2009 14:51
data man
Спасибо!!!
Автор: Vadim153
Дата сообщения: 07.12.2009 18:52
vladman

Цитата:
В таком случае могу посоветовать вам обрабатывать событие OnEditKeyDown.

OnEditKeyDown - это чье событие?
Я сделал пока по cxMyGridViewMyColumnPropertiesEditValueChanged.
Автор: vladman
Дата сообщения: 07.12.2009 19:44
Vadim153

Цитата:
OnEditKeyDown - это чье событие?

Это событие TcxGrid1DBTableView.

Цитата:
Я сделал пока по cxMyGridViewMyColumnPropertiesEditValueChanged.

...Changed - это тогда, когда вы изменили, а не изменяете значение. Если вас устраивает изменение значения вычисляемого поля только после того, как полностью введено одно из полей-слагаемых, то обработка этого события подойдет, но если вы хотите получать вычисляемое значения при любом изменении поля-слагаемого то обрабатывайте OnEditKeyDown.
Автор: Vadim153
Дата сообщения: 07.12.2009 22:18
vladman
Большой thanks за помощь. Не просто привыкнуть к логике DevExpress после штатного Grid-a и EhLib. Например, долго искал Disable/EnableControls ...
Четыре проекта планирую перевести на DevExpress.
В чем разница GetDisplayText, DisplayTexts и Value? Для каких случаев оптимальны эти свойства?

Цитата:
OnEditKeyDown ... для TcxGrid1DBTableView

Возражение:
OnEditKeyDown будет отрабатывать при редактировании, например, соседней колонки с названием изделия, каждый раз пересчитывая его стоимость. Не камильфо.
Вопрос:
1. Каким с способом корректно проверить, что в ячейке нет данных?
2. Корректна ли такая запись:
S1: string;
S1 := cxMyGridTableView.Controller.EditingController.Edit.EditValue; // Значение из редактируемой ячейки
Автор: vladman
Дата сообщения: 08.12.2009 01:50
Vadim153

Цитата:
В чем разница GetDisplayText, DisplayTexts и Value? Для каких случаев оптимальны эти свойства?

Все зависит от контекста в котором вы хотите вызвать эти функции/свойства. Нужна более конкретная информация.
Цитата:
Возражение:
OnEditKeyDown будет отрабатывать при редактировании, например, соседней колонки с названием изделия, каждый раз пересчитывая его стоимость. Не камильфо.

Возражение не принимается ). Как раз для понимания того, на какой из колонок произошло срабатывание обработчика, предусмотрен параметр AItem: TcxCustomGridTableItem.
Например, if AItem <> <YourcxGridTableView>PriceColumn then Exit;, или что-то в этом роде.

Цитата:
1. Каким с способом корректно проверить, что в ячейке нет данных?

Опять же, многое зависит от того "где" вы хотите это проверить, т.е. от контекста.
Автор: mrrex
Дата сообщения: 08.12.2009 13:01
Ребята, подскажите новичку, в DevExpress:
1.Использую, верне пытаюсь использовать Шедулер, но никак не пойму, почему праздники, которые задаются в отдельном Storage не имеют статуса повторения?!
Как заставить Sheduler понимать, что 1 января 2009 года это праздник не только в 2009 году, но и на все года вперед?

2. Поскольку мне крайне необходим контроль над манипулированием БД при использовании cxGrid возникает сложность. Допустим, я хочу удалить несколько записей. Я делаю "Delete from ....", далее, поскольку сервер сам сообщает, что данные обновились, я обновляю набор данных query->Refresh().
Ну, если я удалил одну запись или меньше половины оставшихся, то грид обновляется нормально. В противном случае, грид очищается и в фокусе остается только строка быстрой фильтрации. Если _нажать_ после этого Home то обновление происходит нормально.

3. При включенной группировке записей в гриде при обновлении источника данных группы не обновляются. Например, я сгруппировал данные, потом выделив одну из групп (все строки) грохнул их в таблице. Обновил источник. А группа так и осталась и отображается. Читал в доке, что эта проблема так и есть. Или я что-то неправильно понял?
Автор: JohnSilver182
Дата сообщения: 08.12.2009 17:34
Подскажите , какие свойства покурить у TcxGrid1DBTableView что бы количество строк выводилос ??
Автор: X11
Дата сообщения: 08.12.2009 20:17
OptionsView.Footer := true;
А затем примерно так:
Автор: fortezza
Дата сообщения: 09.12.2009 07:55


есть два грида. и несколько проблем.
ситуация такая, в грид "поступления" должны автоматически проставляться данные на основании грида заявок.
в первом гриде существует два уровня, второй уровень обединяет записи по препаратам и расчитывает общее количество.

можно ли сделать так, чтобы при выделении записей второго уровня и нажатии кнопки, например, как на рисунке, во втором гриде добавлялась строчки с заполненным комплексом, препаратом и суммой взятой из Summary (соответственно выделенным строчкам второго уровня?)

1) проблема в том, что ветпрепарат я могу заполнить таким образом:

Код:
ZQuery2.Insert;
ZQuery2.FieldValues['idVetpreparation'] := cxGrid1DBTableView.Controller.SelectedRecords[i].Values[cxGrid1DBidVetpreparation.Index];
Автор: JohnSilver182
Дата сообщения: 09.12.2009 08:09
X11 Так и сделал , токо в RUN time не видно
Автор: f3ka
Дата сообщения: 09.12.2009 08:23
JohnSilver182
что не видно в рантайм? в дизайне смотрю есть 0 и таблица пустая, значит правильно...
где скрин рантайма?
Автор: Cryogen2003
Дата сообщения: 09.12.2009 08:39
JohnSilver182
Кстати, а чего у футера не установлено поле? Вроде не должно работать без этого
Автор: JohnSilver182
Дата сообщения: 09.12.2009 08:57
f3ka
Cryogen2003
Просто тупо нет Футера .
Поле у футера ставить не обязательно. Юзал на новом проекте . Там все робит .
Или я поставил еще какое то из 9000 пропертиз не так .

Автор: neznayka3
Дата сообщения: 09.12.2009 08:57
поставил 6.47. теперь cxLookupComboBox показывает не все отфильтрованные записи. на 6.46 откатываться неохота, там copy\past не работает.

Добавлено:
обещают поправить http://devexpress.com/Support/Center/p/B141999.aspx?searchtext=cxLookupComboBox&p=T1|P0|0. ни у кого фикса нет?
Автор: f3ka
Дата сообщения: 09.12.2009 09:17
JohnSilver182
в коде все таки случайно нигде не меняется свойство отображения футера у вьюхи?
Автор: fortezza
Дата сообщения: 09.12.2009 09:36
помогите пжлст или скажите что не так
Автор: dimm78
Дата сообщения: 09.12.2009 09:56
neznayka3

Цитата:
обещают поправить http://devexpress.com/Support/Center/p/B141999.aspx?searchtext=cxLookupComboBox&p=T1|P0|0. ни у кого фикса нет?

Пиши в личку. С оф. сайта есть багофикс по этой теме
Автор: JohnSilver182
Дата сообщения: 09.12.2009 10:26

Цитата:
в коде все таки случайно нигде не меняется свойство отображения футера у вьюхи?

ШАМАН !!!!
Сделал в КОде OptionsView.Footer := true; , все ОК
Вобще странно , я еще понимаю если бы Styles перекрывал , но Styles у меня только на Styles -> Content
Автор: X11
Дата сообщения: 09.12.2009 10:35

Цитата:
X11 Так и сделал , токо в RUN time не видно

Будь внимательнее, ты не всё заполнил
Автор: f3ka
Дата сообщения: 09.12.2009 11:06
X11
а что он не заполнил???
я вижу что все соответствует нормальному футеру...
Автор: X11
Дата сообщения: 09.12.2009 11:18
FieldName
Автор: f3ka
Дата сообщения: 09.12.2009 11:42
X11
FieldName не обязательное поле вообще то... FieldName необходимо указать только если надо вывести в футере значение которое не относится к выбранной колонке, если не указывать то будут браться значения из колонки...
Автор: X11
Дата сообщения: 09.12.2009 16:04

Цитата:
2) так же нужно чтобы после автоматического добавления пользователь мог редактировать записи, до сохранения, но это невозможно, потому что поле ID заполняется после сохранения

а ты пользователю не показывай вообще ID. Построй приложение так, чтобы пользователь не видел ID и не имел вообще к этому полю доступа!
Автор: vladman
Дата сообщения: 10.12.2009 09:07
JohnSilver182

Цитата:
Сделал в КОде OptionsView.Footer := true; , все ОК

А вы случаем не сохраняете настройки грида в реестр или ini файл, а затем при старте приложения их восстанавливаете? Если да, то сохраненные настройки, скорее всего, и убирают ваш футер. Попробуйте удалить настройки этого грида из реестра (ini).
Автор: X11
Дата сообщения: 10.12.2009 09:13
Вопрос по TcxLocalizer. Dev47.
При создании формы:

Код:
cxLocalizer1.Active := false;
if FileExists(sAppPath + 'Lang\lang.ini') then
begin
cxLocalizer1.FileName := sAppPath + 'Lang\lang.ini';
cxLocalizer1.Active := True;
cxLocalizer1.Language := 'Русский';
end;
Автор: vladman
Дата сообщения: 10.12.2009 09:25
X11

Цитата:
Вопрос по TcxLocalizer. Dev47.

Замените
cxLocalizer1.Language := 'Русский';
на
cxLocalizer1.Language := 'Русский (Россия)'; но более верно, на мой взгляд -
cxLocalizer1.LanguageIndex := 1049;
Автор: X11
Дата сообщения: 10.12.2009 09:52

Цитата:
cxLocalizer1.LanguageIndex := 1049;

Хм.. хватило только этого. Спасибо.


Цитата:
cxLocalizer1.Language := 'Русский (Россия)';

'Русский (Россия)' компонента тянет из ОС?
Автор: xRay
Дата сообщения: 10.12.2009 10:38
Как в cxGrid используя Filter сделать нормальный по-колоночный OR по типу SQL-запроса:
SELECT * FROM Table1 WHERE (col1 like '%a%') OR (col2 like '%a%') OR (col3 like '%a%')
?

Пробую сделать вот так:

Цитата:

tvCustomers.Controller.GridView.DataController.Filter.Active := False;
with tvCustomers.DataController.Filter.Root do
begin
Clear;
BoolOperatorKind := fboOr;
AddItem(tvCustomers.Columns[0], foLike, '%'+Edit1.Text +'%', '%'+ VarToStr(Edit1.Text) +'%');
AddItem(tvCustomers.Columns[1], foLike, '%'+Edit1.Text +'%', '%'+ VarToStr(Edit1.Text) +'%');
AddItem(tvCustomers.Columns[2], foLike, '%'+Edit1.Text +'%', '%'+ VarToStr(Edit1.Text) +'%');
end;
tvCustomers.Controller.GridView.DataController.Filter.Active := True;


Edit1.Text -сюда вводим текст по которому нужно отфильтровать


В итоге получаю общую фильтрацию по всем колонкам, а не независимую по каждой колонке отдельно т.е. что должен дать OR.

Пожалуйста подскажите как можно реализовать требуемое.
p.s. Через TQuery получается, то что нужно, но надо реализовать именно используя cxGrid и его Filter.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

Предыдущая тема: Delphi: tcp клиент в потоке


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