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

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

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

ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 122

   

ShIvADeSt



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

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




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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:16 29-01-2007 | Исправлено: VitaliM, 15:47 24-11-2008
infomSB



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kmich
Просто так это не сделать, необходимо писать свой обработчик прорисовки Caption колонок, я делал так:  
procedure TfrmMain.cxGrid1TableView1CustomDrawColumnHeader(
  Sender: TcxGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
  Size: TSize;
  OldFont: TLogFont;
  LogFont: TLogFont;
  ARect: TRect;
  I, RCount, Offset, StrLen, YOut: Integer;
  AClipRegion: TcxRegion;
  PartText, RestText:String;
begin
  with AViewInfo do
  begin
    GetObject(ACanvas.Font.Handle, SizeOf(OldFont), @OldFont);
    LogFont := OldFont;
    with LogFont do
    begin
      lfEscapement := 900;
      lfOrientation := lfEscapement;
      lfOutPrecision := OUT_TT_ONLY_PRECIS;
    end;
    ACanvas.Font.Handle := CreateFontIndirect(LogFont);
    GetTextExtentPoint32(ACanvas.Handle, PChar(Text), Length(Text), Size);
    ARect := Bounds;
    PartText := '';
    RestText := Text;
    LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds,
      Neighbors, Borders, cxbsNormal, taCenter, vaCenter, False, False, '',
      ACanvas.Font, clNone, Params.Color);
    with TextAreaBounds do
      if Left < Right then
        begin
           RCount := (Size.cx div (Bottom - Top - 2))+1;
           RestText := WrapText(RestText, '@',[' '],  Length(RestText) div RCount);
           Offset := (Right - Left - Size.cy*RCount) div 2;
           for I := 1 to RCount  do    // Iterate
           begin
             StrLen := pos('@', RestText);
             if StrLen < 1 then StrLen := Length(RestText);
 
             PartText := StringReplace(copy(RestText, 1, StrLen), '@', '', [rfReplaceAll]);
             RestText := copy(RestText, StrLen+1, Length(RestText)-StrLen);
 
             GetTextExtentPoint32(ACanvas.Handle, PChar(PartText), Length(PartText), Size);
             if Size.cx < Bottom - Top - 2 then
                 YOut := Bottom - ((Bottom - Top - 2 - Size.cx) div 2)
                 else YOut := Bottom - 1;
             ACanvas.Canvas.TextOut((Left+Offset+(I-1)*Size.cy),
            (YOut),
            PartText)
           end;    // for
        end;
    AClipRegion := ACanvas.GetClipRegion;
    try
      for i := 0 to AreaViewInfoCount - 1 do
        AreaViewInfos[i].Paint;
    finally
      ACanvas.SetClipRegion(AClipRegion, roSet);
    end;
    ADone := True;
    AViewInfo.Column.BestFitMaxWidth := (RCount+1)*Size.cy;
  end;
end;
 
Взято кстати с этого топика )

Всего записей: 75 | Зарегистр. 17-03-2006 | Отправлено: 09:10 27-10-2008
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
infomSB ты немного не понял... ему надо повернуть ЗАГОЛОВКИ ЗАКЛАДОК которые отвечают за переключение уровней (LEVEL) в cxGride.

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:21 27-10-2008
Kmich



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
infomSB
Мне Caption не колонок нужно происовать (хотя спасибо в хозяйстве пригодится), а на закладке для гридлевела необходимо повернуть надпись.
 
 

Всего записей: 192 | Зарегистр. 21-01-2005 | Отправлено: 11:22 27-10-2008
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kmich на сколько я понял после прочтения базы знаний DevExp'a, нет возможности отрисовывать по своему заголовки табов для GridLevel.

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:58 27-10-2008
infomSB



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извините, действительно не так понял.
Один выход - переписывать сам cxGrid. Средств для внешней отрисовки DevExpress не предоставляет.

Всего записей: 75 | Зарегистр. 17-03-2006 | Отправлено: 12:19 27-10-2008
skinka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток!!!
Возникла такая задача (мульти поля):
Есть таблица 1(id, имя, фамилия, отчество, др.) и таблица 2(id, link, поле, значение)
Таблица 1 с таблицей 2 перевязаны 1.id=2.link
В таблице 2 «поле» - имя виртуального поля таблицы 1
Использую в своей программе квантум грид вьювы могут быть как КАРД так  и ГРИД.
Нужно:
Привязать виртуальное поле к таблице 1.
Единственный вариант который я увидел это использование ExtLookupComboBox, но поскольку он Lookup эта конструкция не работает потому-то ему не к чему вязаться.
Как можно в виртуальное поле вставить этот Lookup и чтобы он жил своей жизнью (но показывал только те записи которые относятся к определенной записи из таблицы 1)
Добавлял, удалял, редактировал записи. Было бы еще неплохо чтобы вместо Lookup была просто таблица внутри ячейки!!!
Может кто сталкивался с таким и как то решил эту проблему!!!
Просто не хочется создавать лишние таблицы на форме. Просто вирт. полей может быть много.
 
 
 
Добавлено:

Цитата:
Один выход - переписывать сам cxGrid. Средств для внешней отрисовки DevExpress не предоставляет.

а на cxGrid'е не пробывали установить RootLevelStyles.Tab там ножно крутить текст!!! вот только помойму не увеличивается в размерах сам Tab.
а если поставить leveltabs.style в OneNote то он сам переворачивает текст

Всего записей: 2 | Зарегистр. 27-10-2008 | Отправлено: 12:48 27-10-2008
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skinka а в каком именно свойстве можно покрутить заголовок табов? RootLevelStyles.Tab.Font.Orientation? Так там крутиться текст и крутиться он очень странно... Да и при повороте текста не увеличивается высота заголовка таба, поэтому не годится...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 16:55 27-10-2008
skinka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я так понял что ты поставил табы с левой стороны????
там есть настройка их вида!!! вот некоторые из них когда с левой стороны (или с правой) переворачивают текст "leveltabs.style" - тут гляди это на самом гриде

Всего записей: 2 | Зарегистр. 27-10-2008 | Отправлено: 18:09 27-10-2008
Vstory

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день! Вопрос по PivotGrid. Такая задача - по выбранной ячейке, нужно определить значение 2х полей по которым ячейка сгруппирована по строкам и по колонкам соответственно. Со строками - никаких проблем, делаю так:  
// получаю координату
  y := cxDBPivotGrid1.ViewData.FocusedCell.Y;
// по ней номер записи
  y := cxDBPivotGrid1.ViewData.Rows[y].GroupItem.RecordIndex;
// считываю значение   - поле cxDBPivotGrid1Field1 находится в области строк
mfo2 := cxDBPivotGrid1.DataController.GetDisplayText(y, cxDBPivotGrid1Field1.Index);
 
но как это сделать с колонками - никак не могу придумать ;(( Если есть у кого какие идеи - поделитесь пожалуйста!!! Спасибо!

Всего записей: 10 | Зарегистр. 21-05-2008 | Отправлено: 19:29 27-10-2008
Sufferer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хелп! Бьюсь с TcxVerticalGrid Вер.3.27. Застрял на удалении/добавлении строк. После выполнения .Remove или .AddChild навигация с клавиатуры начинает порождать ошибки.
При этом визуально все нормально добавляется/удаляется, выделение мышью тоже нормально проходит.
Вот собственно код удаления/добавления строк. В чем дело?

Код:
 
procedure TForm19.SettingsKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
Var i: Integer;
    Row: TcxMultiEditorRow;
begin
 if not Assigned(Settings.FocusedRow) then Exit;
 if not Settings.FocusedRow.HasChildren and (Settings.FocusedRow.Index <> 0)
 then begin
      case Key
      of VK_INSERT: begin
                    Row := TcxMultiEditorRow(Settings.AddChild(Settings.FocusedRow.Parent, TcxMultiEditorRow));
                    for i := 0 to TcxMultiEditorRow(Settings.FocusedRow).Properties.Editors.Count-1
                    do Row.Properties.Editors.Add;
                    for i := Row.Index downto Settings.FocusedRow.Index+1
                    do Row.Parent.Rows[i].Index := Row.Parent.Rows[i-1].Index;
                    end;
         VK_DELETE: Settings.Remove(Settings.FocusedRow);
      end;
      Settings.FocusRow(Row);
      end;
end;
 

Всего записей: 271 | Зарегистр. 21-07-2001 | Отправлено: 23:34 27-10-2008 | Исправлено: Sufferer, 23:40 27-10-2008
RWSergey

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте!!!
Прошу совета вот на такую ситуацию:
Из таблици БД выводятся данные в cxGrid, в одном из полей числа типа Real, в той же таблице есть поля указывыающие на формат данного числа, т.е. одно поле кол-во знаков до запятой и второе после запятой.
Возможно ли сделать так чтобы число (типа real) выводилось(отображалась) в каждой строчке cxGrid со своим форматом, описанным в тех двух полях.
т.е. для каждой записи cxGrid ячейка имеет разный формат вывода числа.
 
Спасибо!

Всего записей: 61 | Зарегистр. 28-05-2003 | Отправлено: 10:45 28-10-2008
Czechoslovak



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RWSergey
Ну что нить такое OnGetDisplayText .... AText :=  Format(ARecord.values[ColumnFormat.Index],ARecord.values[ColumnValue.Index])
 

Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 11:10 28-10-2008
RWSergey

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Czechoslovak
Спасибо, помогло. Работает как задумано..

Всего записей: 61 | Зарегистр. 28-05-2003 | Отправлено: 12:48 28-10-2008
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Господа,как для TcxGridDBTableView програмно установить фильтр,другого варианта нету - так как плохие компоненты АДО не хотят фильтровать детайл таблицы

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 15:50 28-10-2008
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol взято из хелпа девок

Код:
 
The following example demonstrates how to set filter criteria for the following string:
 
(CustNo < 1000) AND ((Name LIKE 'A%') OR (Name LIKE 'Z%')).
 
The DBTableView1CustNo and DBTableView1Name objects are of the TcxGridDBColumn class. They identify the desired items in a grid control.
 
To prevent filter criteria from being updated every time a filter condition is added, operations are enclosed within the TcxFilterCriteria.BeginUpdate and TcxFilterCriteria.EndUpdate methods.
 
var
  AItemList: TcxFilterCriteriaItemList;
//...
  FDataController.Filter.BeginUpdate;
  try
    FDataController.Filter.Root.Clear;
    FDataController.Filter.Root.AddItem(DBTableView1CustNo, foLess, 1000, '1000');
    AItemList := FDataController.Filter.Root.AddItemList(fboOr);
    AItemList.AddItem(DBTableView1Name, foLike, 'A%', 'A%');
    AItemList.AddItem(DBTableView1Name, foLike, 'Z%', 'Z%');
  finally
    FDataController.Filter.EndUpdate;
  end;
  FDataController.Filter.Active := True;
 
 

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 16:23 28-10-2008 | Исправлено: f3ka, 16:29 28-10-2008
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sufferer
 
Чесно говоря не совсем понятно на какой Row устанавливается фокус после удаления записи, т.к. эта переменная не инициализируется перед удалением.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 18:40 28-10-2008
Sufferer



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

Цитата:
Чесно говоря не совсем понятно на какой Row устанавливается фокус после удаления записи, т.к. эта переменная не инициализируется перед удалением.

Вот ведь, а слона то я и не заметил. Спасибо за наводку, я уже всю голову сломал.

Всего записей: 271 | Зарегистр. 21-07-2001 | Отправлено: 22:42 28-10-2008
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто подскажет, можно ли как-то у компоненты TcxComboBox скрыть все сколлбары? Если да, то как? Спасибо.

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 01:38 29-10-2008
VAbramyak

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть проблема с cxCheckLIstBox. При его наполнении посредством Additem, items в cxCheckLIstBox дергает, типа делает repaint, как-то некрасиво і долго это делает. В стандартной компоненте Delphi работает нормально. Это баг или особенность?

Всего записей: 191 | Зарегистр. 16-09-2005 | Отправлено: 15:35 01-11-2008
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VAbramyak думаю что сказать что это (баг или фича), будет очень трудно, если ты не разработчик...  
Проблема еще в том что почему то нету BeginUpdate/EndUpdate которые бы могли это исправить

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 16:02 01-11-2008
   

Страницы: 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 122

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2
ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru