Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)

Модерирует : ShIvADeSt

ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

   

golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express




 
Сами прирученные компоненты частенько приходят на водопой сюда
 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, Первая часть, вторая часть

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:31 07-02-2009 | Исправлено: vladman, 14:36 24-10-2009
Meister Floh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
К сожалению не позволяет.. И сейчас у меня сохраняется в блоб поток.. Только куча траблов при этом..

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 11:48 21-05-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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;

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 12:58 21-05-2009
Meister Floh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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;
}
 

А так нет:

Код:
 
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(cxImage1->Picture->Bitmap,         cxImage1->Picture->Bitmap->TransparentColor);
        cxImage1->Properties->Stretch = true;
    }
    delete imgstream, img;
}

 
В чем разница?

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 15:25 21-05-2009
Semeon555777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как в cxGridCardView добавть картинку

Всего записей: 13 | Зарегистр. 07-01-2008 | Отправлено: 15:35 21-05-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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;

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

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 16:07 21-05-2009 | Исправлено: vladman, 16:09 21-05-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Semeon555777
что значит добавить ? в колонку? CardView с базой работает или как?
кстати вот здесь можно посмотреть чутка как товарищи DevExpress'овцы делают

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 16:31 21-05-2009 | Исправлено: f3ka, 17:06 21-05-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Meister Floh

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

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

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

Сейчас погляжу

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 17:00 21-05-2009
Semeon555777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[q][/q]
CardView без базы

Всего записей: 13 | Зарегистр. 07-01-2008 | Отправлено: 18:07 21-05-2009
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Meister Floh
 
Значит при cxImage1->Picture->Assign(img) маска не копируются.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 18:27 21-05-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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  
}
 

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 18:46 21-05-2009
Chukotka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
QuantumTreeList: для колонки в footer'e задан Kind=Sum
Принцип формирования итоговой суммы меня несколько озадачил: суммируются данные не только первого уровня, но и вложенных узлов. Можно указать дереву, чтобы учитывались только узлы первого уровня или бороться ручной перерисовкой?

Всего записей: 429 | Зарегистр. 01-11-2006 | Отправлено: 21:32 21-05-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chukotka

Цитата:
Можно указать дереву, чтобы учитывались только узлы первого уровня

Если вы не используете ExpressQuantumTreeList Suite v5, то нельзя.
Но можно обработать событие cxTreeList onSummary:

Код:
 
procedure <YourForm>.<YourcxDBTreeListSummary>(ASender: TcxDataSummaryItems; Arguments:
    TcxSummaryEventArguments; var OutArguments: TcxSummaryEventOutArguments);
var
  i: integer;
  vSummaryValue: integer;
  vSummaryItemIndex: Integer;
  vTreeList: TcxDBTreeList;
begin
  vSummaryValue := 0;
  vSummaryItemIndex := <YourItemIndexWhichNeedSummary>;
  vTreeList := <YourcxDBTreeList>;
  if vTreeList.Nodes.Root.Count = 0 then exit;
  for i:=0 to vTreeList.Nodes.Root.Count - 1  do
    vSummaryValue := vSummaryValue + vTreeList.Nodes.Root.Items[i].Values[vSummaryItemIndex];
  OutArguments.SummaryValue := vSummaryValue;
  OutArguments.Done := true;
end;
 

Также необходимо выполнить <YourcxDBTreeList>.DataController.Refresh для загрузки данных в <YourcxDBTreeList>.DataController до выполнения обработчика onSummary (например в onCreate формы-родителя <YourcxDBTreeList>)

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 02:18 22-05-2009
Meister Floh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги, позволю себе вернуться к файлу локализации Дев.. Вот что я написал, для того, чтоб его не таскать за собой - для начала в редакторе ресурсов втаскиваю ini-файл, в своем случае обзываю ресурс именем "LocalRus" и пишу обработчик:

Код:
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    UnicodeString sCfgsPath = IncludeTrailingBackslash(ExtractFileDir(Application->ExeName)) + "Cfgs";
    UnicodeString sCfgsFile = IncludeTrailingBackslash(sCfgsPath) + "LocalRus.cfg";
    if (!DirectoryExists(sCfgsPath))
        if (!CreateDir(sCfgsPath)) throw Exception("Не могу создать папку: " + sCfgsPath);
 
    if (!FileExists(sCfgsFile)) {
        TResourceStream *streamRes = new TResourceStream(unsigned(HInstance), UnicodeString("LocalRus"), (System::WideChar*)RT_RCDATA);
        TFileStream *fileLocalRus = new TFileStream(sCfgsFile, fmCreate);
        fileLocalRus->CopyFrom(streamRes,0);
        fileLocalRus->Free();
        streamRes->Free();
    }
 
    cxLocalizer1->FileName = sCfgsFile;
    cxLocalizer1->Active = true;
    cxLocalizer1->LanguageIndex = 1049;
}
 

 
И вуаля - все работает.. И ничего не нужно таскать за собой..

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 12:20 22-05-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Meister Floh

Цитата:
И вуаля - все работает..

Правда, хорошая статейка Описание работы с ресурсами - Resource Files Made Easy ?
Вот и пригодилась.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 12:30 22-05-2009 | Исправлено: vladman, 12:31 22-05-2009
Meister Floh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman - 100% спасибо!!

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 13:27 22-05-2009
Senpai07



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Коллеги, позволю себе вернуться к файлу локализации Дев.. Вот что я написал, для того, чтоб его не таскать за собой

Я чего-то пропустил. Вместо того чтобы носить файл локализации нужно носить екзэшник в котором файл ресурсов. И к тому же мультиязычный?
 
Поправьте шапку. Ссылка на 2 вторую часть топика ссылается на 1-ую часть
Вот корректная ссылка: http://forum.ru-board.com/topic.cgi?forum=33&topic=7918&start=2420#lt

Всего записей: 295 | Зарегистр. 05-12-2005 | Отправлено: 15:52 22-05-2009
Semeon555777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите как CardView получить индекс строки на которой стою

Всего записей: 13 | Зарегистр. 07-01-2008 | Отправлено: 16:28 22-05-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Semeon555777
<TcxGridCardView>.Controller.FocusedRow.Index

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 16:46 22-05-2009
Meister Floh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Senpai07 Вместо того чтобы носить 2 файла, ехешник и файл локализации, который нужно ложить рядом с экзешником, теперь достаточно носить только экзешник с локализацией внутри
 
 
Добавлено:
Господа.. Что-то я совсем потерялся.. Задача: нужен комбо-бокс, чтобы в выпадающем списке были картинки и их описания, а при выборе конкретной картинки, в выбранном значении было только описание без картинки, так как при выборе картинки из имидж-листа в IDE.. на форму кинул TcxImageCombobox - а вот какое свойство установить, чтобы при выборе было только описание.. никак найти не могу..

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 16:50 22-05-2009
Semeon555777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka спасибо
 
Еще вопрос, как CardView уменшить или увеличит высоту строки
 
Добавлено:
вопрос снят)

Всего записей: 13 | Зарегистр. 07-01-2008 | Отправлено: 17:36 22-05-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)
ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru