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

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

Автор: jicoff
Дата сообщения: 19.05.2009 14:14
afiget

Но ведь RowIndex будет меняться в зависимости от сортировки или фильтрации, проще уж оставить RecordIndex.
Автор: zaroman
Дата сообщения: 19.05.2009 15:03
afiget
Спасибо огромное!!!!

Добавлено:
afiget
К сожалению, заметил такую вещь: работает хорошо, но в случае с группировкой - не работает...
Автор: jicoff
Дата сообщения: 19.05.2009 15:43
zaroman

Попробуй использовать просто ARecord.RecordIndex
Автор: zaroman
Дата сообщения: 19.05.2009 15:46
jicoff
если на то же событие OnGetDisplayText - еще хуже
Автор: afiget
Дата сообщения: 19.05.2009 15:48

Цитата:
Но ведь RowIndex будет меняться в зависимости от сортировки или фильтрации

Он будет меняться и тем самым вне зависимости от сортировок строки будут пронумерованы правильно.

Цитата:
в случае с группировкой - не работает...

Это да. Мне ни разу еще не приходилось по ТЗ нумеровать группированные строки, не было необходимости искать решение.
Автор: zaroman
Дата сообщения: 19.05.2009 15:57
afiget
Эх...очень жалко. Но все равно, еще раз большое спасибо.
Буду искать дальше..
Автор: jicoff
Дата сообщения: 19.05.2009 16:00
zaroman

А если при группировке к RowIndex, если уж RecordIndex работает еще хуже, прибавлять GroupIndex?
Автор: vladman
Дата сообщения: 19.05.2009 16:05
Chukotka

Цитата:
как в обработчике ... вычислить имя связанного поля БД?

Как-то достаточно долго дискутировали по этому поводу на стр. 2-5, если не ошибаюсь.

Можно попробовать так:
procedure <YourForm>.<YourcxDBEditorRowEditPropertiesChange>(Sender: TObject);
begin
ShowMessage(TcxDBEditorRow(TcxVerticalGrid(TcxCustomEdit(Sender).Parent).FocusedRow).Properties.DataBinding.FieldName);
end;

опять же - Для надежности можно/нужно проверять что Sender is TcxCustomEdit, что TcxCustomEdit(Sender).Parent is TcxVerticalGrid, а FocusedRow is TcxDBEditorRow

С OnGetContentStyle немного по-другому, если еще актуально, набросаю пример.
Автор: Chukotka
Дата сообщения: 19.05.2009 18:52
vladman
Спасибо, с OnEditValueChanged все работает

Цитата:
С OnGetContentStyle немного по-другому, если еще актуально, набросаю пример.

Было бы здорово. Динамически изменять стиль проще - сейчас после сохранения данных приходится вручную менять стили для всех полей
Автор: zaroman
Дата сообщения: 20.05.2009 08:16
jicoff
с GroupIndex конечно можно попробовать - только пока не очень понял как будет правильнее: при группировке есть более одного значения - при распахивании каждого из них - какой должна быть нумерация? Сквозной? Или же в каждой группе начинаться с 1 (мне кажется так правильнее)
Автор: infomSB
Дата сообщения: 20.05.2009 09:16
Ребят кто пользовался dxSpellChecker как избавиться от того что он принимает кавычки за символы и подчеркивает слов с кавычками как ошибочные ?
Где указаны символы разделители слов ?
Автор: Semeon555777
Дата сообщения: 20.05.2009 11:21
Помогите

Как сделать что бы по щелчку по +
в ячейки загружалась фотография
Автор: X11
Дата сообщения: 20.05.2009 12:04
В свойствах колонки выбери тип Blob или подходящий. В событии нажатия кнопки в колонке напиши код загрузки изображения в базу.
Автор: Semeon555777
Дата сообщения: 20.05.2009 13:08
Если бы все было так просто(
У меня разнотипные данные в колонке
Автор: f3ka
Дата сообщения: 20.05.2009 13:20
Semeon555777
что значит разнотипные данные в колонке??? если колонка называется "ФОТО СОТРУДНИКА" то что может еще там быть кроме ФОТО? к тому же никто не запрещает на ходу менять у колонки тип
Автор: Semeon555777
Дата сообщения: 20.05.2009 13:42
Посмотрите пример
У меня всего 3 колонки, по одной идет группировка
а результат должен быть таким
Автор: f3ka
Дата сообщения: 20.05.2009 14:19
Semeon555777
как вариант можно тогда попробывать сделать на основе CardView
Автор: Meister Floh
Дата сообщения: 20.05.2009 22:49
Коллеги! Попробую сформултровать вопрос.. Есть трилист, хочу использовать настраиваемые иконки для каждой записи, причем хочу, чтобы эти иконки пользователь мог сам подгружать в ран-тайм, теперь вопрос, как сохранить, то, что загрузил пользователь.. Т.е. как сохранить иконки в каком-нибудь ини или еще где, так чтобы, при переносе на другой комп, где этих иконок нет, они не терялись? (вариант с внесением в служебную БД - не предлагать, это рабочая версия)...
Автор: X11
Дата сообщения: 21.05.2009 00:10
ой, не дочитал, извините
Автор: f3ka
Дата сообщения: 21.05.2009 08:03
Meister Floh
можно попробывать реализовать сохранение например в файл ресурсов...
а cxStorage не позволяет сохранить какой нить ImageList?
Автор: Meister Floh
Дата сообщения: 21.05.2009 10:48
f3ka
К сожалению не позволяет.. И сейчас у меня сохраняется в блоб поток.. Только куча траблов при этом..
Автор: vladman
Дата сообщения: 21.05.2009 11:58
Chukotka

Цитата:
Было бы здорово. Динамически изменять стиль проще - сейчас после сохранения данных приходится вручную менять стили для всех полей


Можно так -

Код: procedure <YourForm>.<YourcxDBVerticalGridStylesGetContentStyle>(Sender: TObject; AEditProp: TcxCustomEditorRowProperties;
AFocused: Boolean; ARecordIndex: Integer; var AStyle: TcxStyle);
begin
AStyle := <YourcxStyle>; //это обязательно!
if TcxDBEditorRow(AEditProp.Row).Properties.DataBinding.FieldName = '<YourField1Name>' then
AStyle.Color := clRed
else
if TcxDBEditorRow(AEditProp.Row).Properties.DataBinding.FieldName = '<YourField2Name>' then
AStyle.Color := clYellow
else AStyle.Color := clGreen;
end;
Автор: Meister Floh
Дата сообщения: 21.05.2009 14:25
vladman
Только тебе как к знатоку Дев..
Вот так работает:

Код:
void __fastcall TForm1::cxButton1Click(TObject *Sender)
{
    TFileStream *imgstream;
    TdxPNGImage *img = new TdxPNGImage();
    if (FileOpenDialog1->Execute()) {
        imgstream = new TFileStream(FileOpenDialog1->FileName, fmOpenRead + fmShareDenyNone);
        img->LoadFromStream(imgstream);
        cxImage1->Picture->Assign(img);
        cxImageList1->AddMasked(img->GetAsBitmap(), img->GetAsBitmap()->TransparentColor);
        cxImage1->Properties->Stretch = true;
    }
    delete imgstream, img;
}
Автор: Semeon555777
Дата сообщения: 21.05.2009 14:35
Подскажите как в cxGridCardView добавть картинку
Автор: vladman
Дата сообщения: 21.05.2009 15:07
zaroman

Цитата:
Добрый день! Подскажите, пожалуйста, можно ли в QuantumGrid, в DBTableView добавить "внутренний "столбец - номер по порядку. Такой, чтобы переситывался (не менялся) при сортировках, группировках и т.д.


Цитата:
пока не очень понял как будет правильнее: при группировке есть более одного значения - при распахивании каждого из них - какой должна быть нумерация? Сквозной? Или же в каждой группе начинаться с 1 (мне кажется так правильнее)

Ниже решение вашего вопроса.

Вариант со сквозной нумерацией при группировке:

Код: procedure <YourForm>.<YourcxGridDBTableViewOrderNumberColumnGetDisplayText>(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AText: string);
var
vRowIndex: integer;
vGroupRowInfo: TcxGroupsRowInfo;
begin
if ARecord.GridView.GroupedItemCount = 0 then
AText := IntToStr(ARecord.Index + 1)
else
begin
vRowIndex := Sender.GridView.DataController.GetRowIndexByRecordIndex(ARecord.RecordIndex, False);
vGroupRowInfo := Sender.GridView.DataController.DataControllerInfo.DataGroups.RowInfo[vRowIndex];
AText := IntToStr(vGroupRowInfo.RecordListIndex + 1);
end;
end;
Автор: f3ka
Дата сообщения: 21.05.2009 15:31
Semeon555777
что значит добавить ? в колонку? CardView с базой работает или как?
кстати вот здесь можно посмотреть чутка как товарищи DevExpress'овцы делают
Автор: vladman
Дата сообщения: 21.05.2009 16:00
Meister Floh

Цитата:
Т.е. как сохранить иконки в каком-нибудь ини или еще где, так чтобы, при переносе на другой комп, где этих иконок нет, они не терялись?

Сохранять иконки в файл ресурсов, переносить приложение с этим файлом. При старте приложения если такой файл существует, то вычитывать иконки из него, если нет - использовать те, что по умолчанию.
Описание работы с ресурсами - Resource Files Made Easy

Meister Floh

Цитата:
В чем разница?

Сейчас погляжу
Автор: Semeon555777
Дата сообщения: 21.05.2009 17:07
[q][/q]
CardView без базы
Автор: jicoff
Дата сообщения: 21.05.2009 17:27
Meister Floh

Значит при cxImage1->Picture->Assign(img) маска не копируются.
Автор: vladman
Дата сообщения: 21.05.2009 17:46
Meister Floh
TdxPNGImage->GetAsBitmap() - создает НОВЫЙ битмап из PNG.
Следовательно этот вновь созданный битмап и добавляется в cxImageList1.
Наверное, правильнее было бы сделать так

Код:
void __fastcall TForm1::cxButton1Click(TObject *Sender)
{
TFileStream *imgstream;
TdxPNGImage *img = new TdxPNGImage();
TBitmap *bmpimg; //-> Added
if (FileOpenDialog1->Execute()) {
imgstream = new TFileStream(FileOpenDialog1->FileName, fmOpenRead + fmShareDenyNone);
img->LoadFromStream(imgstream);
cxImage1->Picture->Assign(img);
bmpimg = img->GetAsBitmap; //-> Added
cxImageList1->AddMasked(bmpimg, bmpimg->TransparentColor); // -> Modified
cxImage1->Properties->Stretch = true;
}
delete imgstream, img, bmpimg; // -> Modified
}

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

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


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