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

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

Автор: QQQRurik
Дата сообщения: 01.12.2006 20:28
У кого есть русские HELP

(Особо интересует на QuantumGrid и PivotGrid)

Не очень важна версия - но лучше поновее
На QG лучше всего 5.18

Автор: drunk2
Дата сообщения: 02.12.2006 18:36
Криво работает событие OnGetDataText у динамически создаваемых столбцов. Прорисовывается только при получении фокуса. пример: _http://drunk003.narod.ru/test.rar
help

Автор: Alex47
Дата сообщения: 02.12.2006 21:11
drunk2

1. В Button2Click в конце поставить: dbtvList_.Invalidate(True);

2. Перенести код создания колонки в Form.Create.

3. Использовать события OnGetText/OnSetText of the field для форматирования текста.
Автор: drunk2
Дата сообщения: 02.12.2006 22:30

Цитата:
1. В Button2Click в конце поставить: dbtvList_.Invalidate(True);

то, что надо

Цитата:
2. Перенести код создания колонки в Form.Create.

нет, это справочники для выбора динамически создаются

Цитата:
3. Использовать события OnGetText/OnSetText of the field для форматирования текста.

понял
Спасибо
Автор: kii
Дата сообщения: 04.12.2006 06:49
Народ !!
Напомните или помогите, как при фильтрации в Гриде добится чтобы в поп-ап меню фильтра выпадали не все значения из исходной таблицы, а только те которые остались, если уже есть фильтрация по какому-нибудь столбцу.
По моему это где-то раньше обсуждалось - но где ?
Автор: Alex47
Дата сообщения: 04.12.2006 08:39
kii

1. Похоже такое поведение стало стандартным в версии 6:
" Filter dropdowns can now be populated with only those values that are currently
available (that have not been filtered out). This is especially useful if you apply filters
consecutively across several columns. Instead of searching through long lists, you deal
with shorter lists that only display the currently available values."
Сам я в QGrid6 пока не работал.
2. В QGrid5 можно в обработчике View.DataController.Filter.OnGetValueList
сформировать самому список фильтра - AValueList
Автор: samusev
Дата сообщения: 04.12.2006 14:26
Доброго дня!

Прошу помощи в работе с компонентом TcxDBDateEdit

Есть острая потребность в изменении порядка формирования календаря. Необходимо, чтобы там была возможность в выборе только тех дат, которые есть в "привязанной" Таблице. По аналогии с Календарем Scheluler2

Есть у кого соображения или наработки в этой области?
Автор: afiget
Дата сообщения: 04.12.2006 20:43
samusev
Судя по этому:
https://devexpress.com/Support/Center/ViewIssue.aspx?issueid=A54&searchtext=custom+calendar&pgid=48409584-e723-41af-b1d3-52dd97577823&pid=ea8b5dd6-67f8-4a10-bd91-a380ba6dea59

https://devexpress.com/Support/Center/ViewIssue.aspx?issueid=B175&searchtext=custom+calendar&pgid=48409584-e723-41af-b1d3-52dd97577823&pid=ea8b5dd6-67f8-4a10-bd91-a380ba6dea59

пока никак, окромя как с помощью cxDateNavigator.
Автор: VadimLou
Дата сообщения: 05.12.2006 05:46
samusev

Цитата:
выборе только тех дат

Как вариант - определить медод валидации в котором устанавливать ошибку для дат не из привязанной таблы ...

Автор: kii
Дата сообщения: 05.12.2006 08:13
Alex47
Спасибо!
Я не совсем понял как, но получилось....
Все больше и больше влюбляюсь в DevExpress и 6 Грид
Автор: samusev
Дата сообщения: 05.12.2006 12:48
По поводу ошибки - No parent Window

Ответ разработчиков
.... First of all, we have noticed that you are using not the latest cxGrid version. So I suggest that you try to update your cxGrid version to the latest 5.20 one and let us know your results. Perhaps, there was an issue which we have already fixed. If the update does not help, possibly your task needs to be clarified.

https://devexpress.com/Support/Center/ViewIssue.aspx?issueid=DQ61367&searchtext=&pgid=48409584-e723-41af-b1d3-52dd97577823&pid=8b369e9e-f81b-4a73-822e-37c84ccafcf7

Добавлено:
afiget
проштудировал cxDateNavigator, пока ничего не обнаружил (((

VadimLou
К сожалению, требования UI запрещают доступ к не "нагруженным" элементам. Лучше вообще запретить выбор дат для которых нет данных в связанной Table, нежели пользователь будет искать требуемое методом тыка.. получая каждый раз мессаджбокс - -"нет данных"
Автор: alexist
Дата сообщения: 05.12.2006 13:58
Помогите с TdxBarManager и TForm.WindowMenu

Использую dxBarManager в качестве главного меню главной формы MDI приложения.
Можно ли как-то подключить WindowMenu к элементу меню dxBarManager , чтобы в него автоматом добавлялся список открытих дочерних окон?
Т.е. чтобы работало навроде подключения стандартого элемента меню TMainMenu.
Автор: Alex47
Дата сообщения: 05.12.2006 14:49
samusev

Цитата:
Ответ разработчиков...


Они просят подробности о коде, помещенном в обработчики. В этом есть смысл. Возможно, анализ этого кода и его модификация решат проблему.
У меня такое бывало и, именно, с "No parent Window".
Автор: yuish
Дата сообщения: 05.12.2006 15:05
можно ли с помощью cxPropertiesStore запоминать положение динамически открываемых форм? у меня получается что он запоминает только одно положение (при условии если писать в ини файл). например PropertiesStore стоит на родительской форме и в динамических. если я открываю-закрываю основную - положение запоминается. из открытой основной - открываю динамическую - запоминает. если потом все закрыть - смотрю в ини - все что связано с динамической стерто и заменено на данные из основной формы. как побороть?
Автор: Alex47
Дата сообщения: 05.12.2006 15:21
alexist

Цитата:
Помогите с TdxBarManager и TForm.WindowMenu

Может это поможет.
[more]
>We have a dxBarManager and have created a "MainMenu" with it. We also have
>some popup menus linked via the PopupLinks property. On the Form, we cannot
>select the dxBarManager's "Window" menu, because the drop down list for the
>Form.WindowMenu property is empty.
>How do we make this work?

It's manual but is pretty easy.

* Create a TdxListItem or a TdxInPlaceSubItem
* Create the click handler
procedure TForm1.WinBarButtonClick( Sender: TObject );
begin
ShowWindow( TForm( ( Sender as TdxBarButton ).Data ).Handle,
SW_RESTORE );
TForm( ( Sender as TdxBarButton ).Data ).BringToFront;
end;
{In prinicple, only one is needed but with MDI applications, I found
that only calling both of these have proper effect}

* create a procedure to add your forms to the list
MenuItem: TdxBarButton;;
begin
MenuItem:= TdxBarButton.Create( dxBarManager1 );
MenuItem.Caption := YourForm.Caption;
MenuItem.Data := YourForm;
MenuItem.OnClick := WinBarButtonClick;
SubItem.ItemLinks.Add.Item := MenuItem;
end;

* To delete the form from the list, you must write a procedure to find
the right button and then just call BatButton.Free.
---
Rajko Bogdanovic - DX Squad

THANKS. Before receiving your post, I experimented with using a
dxBarMRUList. Everything seems to work OK. I am using the following code
to identify and activate the child window selected from the MRUList.

var
szTemp : String;
I : Integer;
begin
szTemp :=
AnsiLowerCase(ExtractFileName(dxBarMRUList.Items.Strings[dxBarMRUList.ItemIn
dex]));

with MyForm do
for I := MDIChildCount - 1 downto 0 do begin
if AnsiLowerCase(MDIChildren[I].Caption) = szTemp then begin
MDIChildren[I].BringToFront;
BREAK;
end;
end;
end;

This allows me to extend the above code to persist the MRU List, and if an
item is selected from the list, but is currently not in the MDIChildren
array, then I can call the "open" action to open the file.

[/more]
Автор: samusev
Дата сообщения: 05.12.2006 15:22
Alex47

Цитата:
Они просят подробности о коде, помещенном в обработчики. В этом есть смысл. Возможно, анализ этого кода и его модификация решат проблему.


Скорее они говорят об апдейте в QG5.20
Цитата:
I suggest that you try to update your cxGrid version to the latest 5.20

, где они уже пофиксили часть
Цитата:
there was an issue which we have already fixed

Автор: Alex47
Дата сообщения: 05.12.2006 15:34
samusev
У меня, к сожалению, сейчас не открывается нужная страница с devexpress - не могу взять цитату. Там в самом конце текста (кажется пункт 2) они ясно просят подробности о коде, помещенном в обработчики.
Автор: alexist
Дата сообщения: 05.12.2006 15:43
Alex47
Что-то тут есть. Попробую.
Спасибо.
Автор: samusev
Дата сообщения: 05.12.2006 17:21
Alex47
Ну это-то понятно... Интересно само упоминание о 5.20! насколько мне не изменяет память в сентябрьской сборке грид был 5.19,а в ноябрьской пошел уже 6.0

Или я где-та промахнулся. Хотя у меня эта ошибка стала выскакивать на смешанном обновлении ноябрь+сентябрьский грид. Перескочил на 6 - все-тоже.

Стандартное место - вызов редакторов (комбо-калькулятор, календарь, списки - в общем дропдаун) в гриде.

Сначала грешил на тонкую настройку Эврики. Отключил - все равно...
Автор: DrLo
Дата сообщения: 05.12.2006 21:41
Джентельмены, всё таки хотелось бы прояснить один вопрос:
Имеет ли смысл переводить рабочие проекты на QGrid 6, или с глюками хлопот не оберёшься?
Автор: JackOff
Дата сообщения: 05.12.2006 22:01
Мне пришлось «откатиться» с шестерке грида назад. Получаю AV при выходе из приложения при условия открытия связки Мастер-Детаил
Автор: VadimLou
Дата сообщения: 06.12.2006 03:25
samusev

Цитата:
No parent Window


У меня такая ошибка была в cxContainer.pas: Исправление:

procedure TcxCustomPopupWindow.Popup(AFocusedControl: TWinControl);
...
procedure ShowPopupWindow;
...
if FFocusedControl = nil then
SetFocus
else {+} if FFocusedControl.CanFocus then {+.}
FFocusedControl.SetFocus;


Разработчикам писал, но у них похоже их же форумы херятся ...
Если это не эта-же проблема, то возможно где то ещё есть установка фокуса без проверки допустимости сего ( CanFocus ) ...


samusev

Цитата:
TcxDateEdit методом тыка


ну тогда остаётся

1) наследоваться от TcxPopupCalendar

и переопределить метод

procedure HidePopup(Sender: TcxControl; AReason: TcxEditCloseUpReason); virtual;

он вызывается при выборе даты ( кнопой или мышом).

Тут и следует игнорировать ненужные даты.

2)
наследоваться от TcxDateEdit

переопределить метод
procedure TcxCustomDateEdit.CreateCalendar;

и загнать в FCalendar твой наследник TcxPopupCalendar

т.к FCalendar св-во только для чтения - , то чтобы загнать(присвоить) значение в FCalendar придётся заюзат RTTI или поправить сырцы на предмет property write:

property Calendar: TcxPopupCalendar read FCalendar write FCalendar;
Автор: samusev
Дата сообщения: 06.12.2006 15:47
Еще одна версия исправления ошибки

Control '' hoas not parent window

[more]
Created by Erdal Delen at 11/22/2006 10:24:54 AM
Attachment: Control_Has_No_Parent.zip Size (1149791 bytes)


Hi Dear Advisor;
We have got a problem.. ( Control '' has no parent window. )
We send sample code.
Please help us for solving this error.
we temporarily solved this way , change cxControl.pas :

procedure TcxControl.CreateWnd;
begin
{ // old
FCreatingWindow := True;
try
inherited;
InitControl;
finally
FCreatingWindow := False;
end;
}
// new
FCreatingWindow := True;
try
inherited;
InitControl;
except // <<<<<< we add this line
FCreatingWindow := False;
exit;
end;
FCreatingWindow := False;

end;

We wait your solving..
Thanks, Regards...

Reviewed by Developer Express Team at 11/23/2006 5:20:59 AM
Resolved (Duplicate) by Developer Express Team at 11/23/2006 9:58:06 AM


Hi Erdal!

We have already been reported of the same problem like yours when posting data within cxButtonEdit's OnButtonClick (http://www.devexpress.com/issue=DB35698). This behavior repeats the behavior when the OnEditValueChanged event is used in the same manner. See the issue ID: AB6499 (http://www.devexpress.com/issue=AB6499).

In additon to the articles above, a solution is to reactivate the inplace editor as follows.
...
procedure TForm1.<AColumn>PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin
with ATable do
begin
Edit;
FieldbyName('AField').AsString := 'ATest' ;
Post ;
<YourView>.Controller.EditingController.ShowEdit(); //<<<<<<<<<<<<<<<
end;
end;

OR
...
procedure TForm1.<AColumn>PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin
with ATable do
begin
Edit;
FieldbyName('AField').AsString := 'ATest' ;
end;
<YourView>.Controller.EditingController.Edit.PostEditValue;
end;

In this case, the value will be posted after the record focus changes.

If you need post data and the ShowEdit method does not suit you, you can try a solution based on using the PostMessage technique from the Support Center ID: DQ43410 (http://www.devexpress.com/issue=DQ43410)

Thanks,
Nicolas.

[/more]
Автор: svs123456789
Дата сообщения: 06.12.2006 20:01
cxPropertiesStore
установка в дизайн тайм в активе -почему то не помогает восстанавливать свойства
приходится в ручную дополнительно писать
cxPropertiesStore1.StorageName:=ExtractFilePath(Application.ExeName) +
'cxPropertiesStore1';
cxPropertiesStore1.RestoreFrom;
Автор: VadimLou
Дата сообщения: 07.12.2006 02:08
samusev

Цитата:
Еще одна версия

там код обработки exception явно лишний - достаточно было просто забанить exception.
Но всё же лечить такие ошибки отловом исключений - варварство. И по ошибке и по её стеку видно что она порождена именно некоректностью процедуры установки фокуса ...
Автор: sunduk4
Дата сообщения: 07.12.2006 06:34
Подскажите, возможно ли в cxImageComboBox разместить рисунок по центру?
Задача - в ячейке грида отображать соответствующий рисунок в зависимости от содержимого ячейки. Воспользовался read only cxImageComboBox. Все бы хорошо, но картинку хотелось бы по центру ячейки поместить.
Вопрос снят, сделал по-другому. Всем спасибо.
Автор: samusev
Дата сообщения: 07.12.2006 13:09
VadimLou
2 дня потратил на изучение всего, что разработчики нарекомендовали по поводу отлова
Control '' has not parent window.

Лекарства не нашел...

А у меня ситуация казалось бы самая тривиальная.
Есть грид. в одном столбце редактируемые данные. в качестве редактора используется
CalcEdit.

И вот этот-то б....ский калькулятор и рушит всю красоту. Закрыть его иначе как нажав на клаве '=' (свойство QuickClose=true) или мышкнув мимо него - НЕЛЬЗЯ. Это-то мышкование и приводит к exception!!!

Причет в хелпе написано мышкование на кнопку = калькурятор не закрывает.-Зря.

Елы палы... пока перескочил на CurrencyEdit. Не так красиво - но без ошибок...

Написать им не могу... ибо вне закона
Автор: Alex47
Дата сообщения: 07.12.2006 14:26
samusev
Предлагаю эксперимент.
Если Вы в Demo ViewTableSimpleDemo в колонке RunTime поставите тип
редактора CalcEdit, - появятся ли после этого у Вас сообщения о No parent Window?
У меня не появляются.
Автор: samusev
Дата сообщения: 07.12.2006 14:50
Alex47
Действительно... значит в консерватории дело...

сделано...
-снес всех девок
-пересобрал все пакеты
-установил заново (инсталятора нет - посему все ручками)
-собрал проект
-прошелся по настройкам свойств грида - АБСОЛЮТНО ничем от примера View...GridSimleDemo не отличается (кроме того что DataSet отфильтрован изначально)

запускаю приложение - ошибка на месте... "Как будто и не приносил"(с)Петренко

Ну не знаю что делать..

2. попытка

создал новый Grid, Level и новый View - без результата - таже ошибка

Автор: Alex47
Дата сообщения: 08.12.2006 13:44
samusev

Для popup разработчики QGrid запускают свой цикл обработки виндовых сообщений
(в cxcontainer procedure TcxCustomPopupWindow.Popup)
Поэтому, если кликнуть мышью в сторону от calcedit, можно в результате запуска
какого-то вашего обработчика событий испортить контекст объекта для которого был запущен цикл обработки:
while Visible and not Application.Terminated do
begin
if PeekMessage(Msg, 0, WM_SYSKEYDOWN, WM_SYSKEYDOWN, PM_NOREMOVE) then
case Msg.wParam of
Windows.VK_MENU, Windows.VK_RETURN, Windows.VK_SPACE:
PeekMessage(Msg, 0, Msg.message, Msg.message, PM_REMOVE);
end;
if ModalResult <> mrNone then
if CloseQuery then
ModalCloseUp
else
ModalResult := mrNone;
Application.HandleMessage;
end;
Тогда проверка на visible будет выполняться для несуществующего объекта, следовательно пойдёт вылет.
Попробуйте отключить всё имеющиеся у Вас в проекте обработчики (на копии) и посмотрите результат.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Kylix


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