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

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

Автор: Dronton2
Дата сообщения: 22.03.2007 11:53
DragFaq
В хелпе есть пример:

Код: var
I: Integer;
ARowIndex: Integer;
ARowInfo: TcxRowInfo;
begin
with tvOrders.DataController do
begin
BeginUpdate;
try
for I := 0 to GetSelectedCount - 1 do
begin
ARowIndex := GetSelectedRowIndex(I);
ARowInfo := GetRowInfo(ARowIndex);
//Test whether a row is a grouping row
if ARowInfo.Level < Groups.GroupingItemCount then
Continue
else
//unbound or provider mode
Values[ARowInfo.RecordIndex, tvOrdersSaleDate.Index] := Now();
end;
finally
EndUpdate;
end;
end;
end;
Автор: Glukodel
Дата сообщения: 22.03.2007 15:42
Dronton2
waik
вариант со скрытой колонкой, показывающий на поле, где формируется полная строка у меня реализован сейчас, но это удвоение занимаемой памяти... по требованию заказчика это всё должно работать при скажем 50тыс. строк... т.е. интересен вариант переопределения отрисовки (пока не вышло) или еще какой...
и еще не смог переопределить метод, дёргающий Properties.OnChange
кто-нибудь добирался до него?
Автор: Dennica
Дата сообщения: 22.03.2007 18:32
Glukodel
А если сверху положить cxTextEdit оставив незакрытой кнопку вызова списка? Во времена программирования на фокспро частенько так выкручивались хехе
Автор: jicoff
Дата сообщения: 23.03.2007 12:01
Glukodel

Странно что заказчик не потребовал работу в миллион строк при увеличении скорости работы. Ну да ладно...

Что касается Properties.OnChange попробуй создать свой наследник от того Properties, который требуется твоему компоненту и переопредели: class function GetPropertiesClass: TcxCustomEditPropertiesClass; virtual;
Автор: demonkot
Дата сообщения: 23.03.2007 12:57
cxGridBandedView
Кто подскажет как в cxGridBandedView впихнуть быстро большое кол-во записей?
Кроме как

GBD2.DataController.BeginUpdate;
for i:=0 to j do begin
with GBD1.DataController do begin
Values[i,0]:=varDataRows_4[0,i];
end;
end;
GBD2.DataController.EndUpdate;
Автор: jicoff
Дата сообщения: 23.03.2007 14:45
demonkot

Не совсем понятно, зачем тебе впихивать большое количество данных в GridView, если у тебя уже есть они в каком-то виде. Используй TcxCustomDataSource, пример есть в демках, и ничего никуда не придется впихивать.
Автор: Glukodel
Дата сообщения: 23.03.2007 17:54
Dennica
эээ... спасибо, конечно, за совет, но у меня всё еще не настолько плохо
jicoff
у TcxLookupComboBox есть DoOnChange, который как мне показалось должен дергать Properties.OnChange ... но не дергает
короче должен быть такой метод у TcxLookupComboBox... его и ищу
Автор: Alkatraz
Дата сообщения: 26.03.2007 23:17
Здравствуйте люди! Вот всплыла проблемма при заполнении значений Unbound колонок в DBView.

На обработчик непривязанного поля (тип выставлен, но имя поля не задано) OnGetDataText вешаю расчет значения и делаю DataController.SetValue(ARecordIndex, Sender.Index, Value). Все проходит нормально, но при завершении заполнения всех строк выдается Access Violation, при чем где то на уровне самого компонента cxGrid, ибо Try..Except'ом не ловится.

Я знаю, что можно сделать и через Calculated Field, но все-таки интересно, где косяк - делаю по примеру с CheckBox'ами, расписанными в Knowledge Base, значения задаются нормально, но вываливается ошибка уже после завершения заполнения значений. Ясно, что намутил где-то с самим гридом/вью, но где не пойму.

Если кто работал с Unbound колонками или встречал подобную ситуацию, пожалуйста помогите с решением. Пока сделал через вычисляемое поле, но интересно, как это же реализовать через грид. Буду очень признателен...

Добавлено:
Glukodel
Делай Unbound колонку, задавай AText в OnGetDataText и используй ExtLookUpComboBox, в котором будешь выводить требуемые колонки при выпадении списка и нужную вычисляемой колонки при закрытии. Я так у себя вывернулся. Работает на порядок быстрее, чтом вычисляемое поле. Только не понял на счет памяти...
Автор: George_Lucky
Дата сообщения: 27.03.2007 06:36
1) Как быстро очистить cxGridTableView от заполненных данных
2) Как привязать cxGridTableView к cxExtLookupComboBox, который находится отдельно на другой панели
Автор: Daeron
Дата сообщения: 27.03.2007 09:28

Цитата:
"RecordIndex вышел за границы диапазона".

Есть такое. Что делать - непонятно
Автор: Dronton2
Дата сообщения: 27.03.2007 16:11
Alkatraz
Зачастую нужно проверять входные параметры процедур, например, RecordIndex в некоторых процедурах может быть равно -1, ARecord может быть равно nil и т.д.
Автор: jicoff
Дата сообщения: 27.03.2007 19:39
George_Lucky

1. А GridView какой: DB или нет?

2. Тут совсем не понятен вопрос, а какие могут быть проблемы? Форма одна, на которой находятся компоненты?
Автор: George_Lucky
Дата сообщения: 28.03.2007 06:31
jicoff не DB.
1) заполнение данными идет через cxGrdTableView.DataController.AppendRecord;
теперь нужна очистка и заполнение обновленными сведениями.

2) в том-то и дело, что на одной форме и не видит.
Автор: greenpc
Дата сообщения: 28.03.2007 06:38
George_Lucky
1) cxGrdTableView.DataController.RecordCount := 0;
2) св-ва view и listfielditem выбраны ?
Автор: George_Lucky
Дата сообщения: 28.03.2007 07:13
в Деффках имеется компонент, исполняющий роль Панели? Че-т не найду

Добавлено:
greenpc
1) а разве cxGrdTableView.DataController.RecordCount не ReadOnly ?
2) так во View и не отображается
Автор: greenpc
Дата сообщения: 28.03.2007 07:42
George_Lucky
1) проверь
2) а если так
cxExtLookupComboBox1.view :=cxGrdTableView;
cxExtLookupComboBox1.listfielditem :=<поле из cxGrdTableView>;
Автор: yuish
Дата сообщения: 28.03.2007 13:17
у cxButtonEdit можно создавать не одну, а несколько кнопок. как обрабатывать нажатие на одну или другую кнопку?


Извиняюсь. вопрос снимается. нашел сам. если кому интересно:

procedure TForm1.cxButtonEdit1PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin

if AButtonIndex = 0 then
ShowMessage('кнопка 1')
else
ShowMessage('кнопка 2');
end;
Автор: greenpc
Дата сообщения: 28.03.2007 13:39
удалено
Автор: xokc
Дата сообщения: 29.03.2007 19:23
George_Lucky
Нету такого
Автор: VikLabel
Дата сообщения: 29.03.2007 20:45
Как убрать отступ в cxDBVerticalGrid?

Автор: greenpc
Дата сообщения: 30.03.2007 10:20
VikLabel
красивая ссылка на рисунок _c:\777.jpg
George_Lucky
cxGroupBox без заголовка как вариант
Автор: john_rico
Дата сообщения: 30.03.2007 15:02
посмотрел демку с GridMode ничего не понял.
может кто подскажет как в GridMode фильтровать и сортировать можно?
Автор: golkanavt
Дата сообщения: 30.03.2007 16:56
Есть вопрос по мартовскому релизу, а именно PrintingSystem. В предыдущих версиях был компонент TdxComponentPrinter для печати грида и прочих компонентов, соответственно были ReportLink'и для коннекта движка печати с конкретными обработчиками печати для каждого из визуальных виджетов. Внимание, вопрос - куда они пропали в мартовской версии? TdxComponentPrinter есть, ставлю в РепортЛинк для грида(dxPScxGrid6LnkD6.dpk), но в палитре компонентов он не появляется! В чем дело?
Автор: VikLabel
Дата сообщения: 01.04.2007 19:19
Извеняюсь!
Автор: svs123456789
Дата сообщения: 01.04.2007 21:05
как увеличить у всплывающих подсказок в гриде?
как оказалось оно не связано с Application.HintHidePause и т.п.
Автор: Widoms
Дата сообщения: 02.04.2007 03:40
На форме 6 компонентов cxGrid
Делаю экспорт в XLS вот таким способом

if SaveDialog1.Execute then
ExportGridtoExcel(SaveDialog1.FileName,cxGrid1,true,true,true);

Хочется все это сделать одной кнопкой, как узнать имя активного в данный момент грида ?
Автор: greenpc
Дата сообщения: 02.04.2007 11:26
Widoms
var
myControl : TComponent;
i : Integer;
begin
for i := 0 to MainForm.ComponentCount - 1 do
begin
myControl := MainForm.Components[I];
if myControl is TcxGrid then with myControl as TcxGrid do if Active then
if SaveDialog1.Execute then
ExportGridtoExcel(SaveDialog1.FileName,myControl ,true,true,true);

Типа такого
если названия грида cxGrid1, cxGrid2
то myControl :=nil;
myControl :=MainForm.FindComponent('cxGrid'+ IntToStr(i));
if (myCotrol<>nil) and ( myControl as TcxGrid).Active then ......

Автор: golkanavt
Дата сообщения: 02.04.2007 14:16

Народ, подскажите, для ExpressQuantumGrid 6 в крайнем мартовском релизе есть ReportLink или где? Посмотрел оф. сайт, 6го грида я там не нашел, посему терзают смутные сомнения, его что, совсем похерили разрабы или же он просто не попал в релиз? Заранее спасибо за ответ.
Автор: mcdie
Дата сообщения: 02.04.2007 14:38
Widoms
Может поможет (Только если вешать на нажатие кнопки то кнопка становится ActiveControl):

if ActiveControl is TcxGridSite then
if SaveDialog1.Execute then ExportGridtoExcel(SaveDialog1.FileName,TcxGridSite(ActiveControl).parent,true,true,true);
Автор: Bill_PHO
Дата сообщения: 02.04.2007 22:42
Не сталкивался ли кто со следующей ситуацией:
Есть cxGrid (5 или 6 версии). Если строки не перекрашивать, то нормально обрабатывается группировка записей перетаскиванием заголовка колонки на поле группировки.
Но если перекрашивать строки по какому-нибудь условию, например так:
в обработчике GetContentStyle

if ARecord.Values[cxGridDBBandedTableView1RowColor.Index]= clWhite then
AStyle := cxStyle2 else
begin
cxStyle5.Color:=ARecord.Values[cxGridDBBandedTableView1RowColor.Index];
AStyle := cxStyle5;
end;
то группировка по колонкам, содержащим строковые данные, завершается сообщением "Could not convert variant of type (String) into type (Double).

Как это можно побороть?
Может быть красить надо как-то иначе?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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