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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
drunk2



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть грид, в хидере дни месяца. Надо отрисовать ячейки в зависимости от значения в ней. Пишу для первого дня:
Код:
  if ARecord.Values[AItem.Index]=1 then
    AStyle:=cxStyle1
  else if ARecord.Values[AItem.Index]=2 then
    AStyle:=cxStyle2
  else if ARecord.Values[AItem.Index]=3 then
    AStyle:=cxStyle3;
...
назначаю это событие всем колонкам с днями месяца, но рисует в первой. Как написать общий обработчик, а не копипастить 30 раз?

Всего записей: 204 | Зарегистр. 27-10-2005 | Отправлено: 11:27 26-03-2008
makz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
drunk2
 
  AStyle:=TcxStyle(cxStyleRepository1.Items[AItem.Index]);

Всего записей: 1034 | Зарегистр. 17-05-2003 | Отправлено: 12:15 26-03-2008
VikLabel

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как в Design-Time поменять местами панели инструментов в dxBarManager.
Сейчас их порядок такой - как они создавались в среде (D7),  
а мне нужно выстроить их как бы по логичнее (по смыслу) что ли.
Панели редактирования рядом друг за другом, и т.д.
Ни где не могу найти ответа.

Всего записей: 674 | Зарегистр. 05-03-2003 | Отправлено: 13:29 26-03-2008
drunk2



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
makz
Похоже пример ввел в заблуждение или криво объяснил. Вот кусок из кода:
Код:
...
   if ARecord.Values[AItem.Index]=41 then
    AStyle:=c_blue
  else if ARecord.Values[AItem.Index]=53 then
    AStyle:=c_red
  else if ARecord.Values[AItem.Index]=4 then
    AStyle:=c_black;
...
Те cxStyleRepository здесь ни причем.

Всего записей: 204 | Зарегистр. 27-10-2005 | Отправлено: 14:28 26-03-2008
VikLabel

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Давний мой вопрос ещё в силе
 
Как убрать отступ в cxDBVerticalGrid?
 
 

Всего записей: 674 | Зарегистр. 05-03-2003 | Отправлено: 15:00 26-03-2008
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VikLabel
Вообще-то для пользователя привычнее по алфавиту, а не по смыслу.
Открой текстовым редактором dfm и дальше копи-пэйст

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 16:48 26-03-2008
VadimLou



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VikLabel
тож не нашёл, похоже на мелкую бяку... надо ковырять сорцы...

Всего записей: 702 | Зарегистр. 22-07-2004 | Отправлено: 21:56 26-03-2008
drunk2



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поставил последних девок, до этого были от 2007-04-27. У всех TdxMemData, у которых есть OnFilterRecord вываливается AV в dbrtl100.bpl. Есть PageControl, при переходе на одну закладку, где находятся только кнопки (TcxButton) c рисунками и TcxGrid получаю EListError "List index out of bands (2)" и вываливаюсь в cxGraphics.TcxImageList.Insert(AIndex: Integer; AImage, AMask: TBitmap); Как быть?
 
ЗЫ Похоже это только начало'(
 
Добавлено:
Зато вопрос про OnGetContentStyle снимается. Теперь все работает правильно.

Всего записей: 204 | Зарегистр. 27-10-2005 | Отправлено: 07:40 27-03-2008
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VikLabel
Рисуй сам в OnDrawRowHeader
 
Добавлено:
Вот, попробовал набросать. Может какой-то из параметров не учел, но для простых случаев должно работать.

Код:
 
procedure TForm2.cxVerticalGrid1DrawRowHeader(Sender: TObject;
  ACanvas: TcxCanvas; APainter: TcxvgPainter;
  AHeaderViewInfo: TcxCustomRowHeaderInfo; var Done: Boolean);
var
  i: integer;
  LTextBounds: TRect;
  LOffset: Integer;
begin
  with AHeaderViewInfo do
  begin
    cxApplyViewParams(ACanvas, AHeaderViewInfo.ViewParams);
    ACanvas.FillRect(HeaderRect);
    for i := 0 to Pred(CaptionsInfo.Count) do
    begin
      with CaptionsInfo[i] do begin
        LTextBounds := CaptionTextRect;
        if i = 0 then
        begin
          LOffset := Round((IndentBounds.Right - IndentBounds.Left)
            / Succ(AHeaderViewInfo.Row.Level));
          LTextBounds.Left := LTextBounds.Left - LOffset;
          LTextBounds.Right := LTextBounds.Right + LOffset;
        end;
        ACanvas.DrawTexT(Caption, LTextBounds, TextFlags);
      end;
    end;
  end;
  Done := True;
end;

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 10:04 27-03-2008
VikLabel

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
Спасибо, как то не подумал об этом dfm, мне этого пока хватит.
 
Dennica
Спасибо, работает.  Видимо в самой компоненте косяк.
 
 
Добавлено:
Ещё один вопросик о cxDBVerticalGrid
Как убрать показ фокусировки (по периметру точки)
т.е. чтобы при уходе с компонента напр. на edit, ...
выполнить типа такого ShowFocusRect:=False (это я с умничал  )

Всего записей: 674 | Зарегистр. 05-03-2003 | Отправлено: 14:31 27-03-2008
X11



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

Код:
 
procedure TfmMain.CreateFormButton(form1:TForm);
var
  ABarManager : TdxBarManager;
  ABar : TdxBar;
  NewButton : TdxBarButton;
  NewItemLink : TdxBarItemLink;
  Icon   : TIcon;
  Bitmap : TBitmap;
 
begin
   ABarManager := GetBarManagerByForm(self);
   ABar := Bar1;
   NewButton := TdxBarButton.Create(self);
 
   NewItemLink := ABar.ItemLinks.Add;
   NewItemLink.Item := NewButton;
   NewItemLink.Item.Tag := form1.Handle;
 
   NewButton.Tag          := form1.Handle;
   NewButton.Name         := 'dxButton'+IntToStr(NewButton.Tag);
   NewButton.Caption      := form1.Caption + '[' + IntToStr(MDIChildCount) + ']';
   NewButton.Hint         := form1.Caption;
   NewButton.OnClick      := dxBarButtonClick;
   NewButton.ButtonStyle  := bsChecked;
   NewButton.Down         := true;
   NewButton.GroupIndex   := 1;
   NewButton.Glyph.Canvas.Draw(0,0,form1.Icon);
   NewButton.PaintStyle   := psCaptionGlyph;
end;
 

 
Но иконок нет на кнопках. Как правильно вывести иконку окна на кнопке?
 
Спасибо.
 
Добавлено:
Удаляю кнопки таким кодом:
 

Код:
 
procedure TfmMain.DeleteFormButton(form1:TForm);
Var
 i:integer;
begin
  for I := 0 to Bar1.ItemLinks.Count - 1 do
    if Bar1.ItemLinks[i].Item is TdxBarButton then
      if TdxBarButton(Bar1.ItemLinks[i].Item).Tag = form1.Handle then begin
 
Так правильно?
        Bar1.ItemLinks[i].Item.Free;
 
или так?
        Bar1.ItemLinks[i].free;
        Break;
      end;
end;
 
 

 
Добавлено:
Если удаляю так:
то удаляется по идее только кнопка, а ItemLinks остаётся
Bar1.ItemLinks.Item.Free;
 
а если так:
то удаляется ItemLinks а кнопка остаётся
Bar1.ItemLinks.free;
 
Работает и тот код и тот. Вопрос в том, как правильно? Или может как-то нужно удалять одновременно и ItemLinks, и ItemLinks.Item


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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:43 27-03-2008
shulum



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
 
ПУНКТ 1
 
Var
im: TPicture;
......
 
begin
im:=Tpicture.Create;
....
 
im.LoadFromFile(откуда-то отттуда); // ну, или из потока, или еще как по необходимости
NewButton.Glyph:=im.Bitmap;
NewButton.PaintStyle:=psCaptionGlyph; // например ..., или какой надо
....
end; //собственно? вот
 
одно замечание - ты не присваиваешь кнопку категории ...
bar1.Categories.Add('хорошая такая категория');  
NewButton.Category:=bar1.Categories.IndexOf('хорошая такая категория');
 
 
ПУНКТ 2
 
разрушай кнопку ... линк сам умрет ... во всяком случае у меня работает
 
только ИМХО при переборе надо использовать обратный порядок
 
for I := Bar1.ItemLinks.Count - 1 downto 0 do

Всего записей: 121 | Зарегистр. 11-06-2006 | Отправлено: 22:32 27-03-2008
Mishgan_ru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здрасти! Подскажите пож-та ответ... C#, DevExpress 7.2,MS SQL SERVER 2005
  Нужно программно поставить фильтр на гриде...
 
 
  C_AKTgridView.ActiveFilterString = "[akt_date]Between('"+ dateEdit1.DateTime.Date+ "','" + dateEdit2.DateTime.Date + "')";
   C_AKTgridView.ActiveFilterEnabled = true;
 
  ...ничего хорошего не получается (((( Пробовал dateEdit1.DateTime.Date.ToString("d") - нифига.. Как я понял фильтр чето свое пропихивает... или нет?

Всего записей: 1 | Зарегистр. 28-03-2008 | Отправлено: 07:12 28-03-2008
X11



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

Цитата:
ПУНКТ 1
 
Var
im: TPicture;
......
 
begin
im:=Tpicture.Create;
....
 
im.LoadFromFile(откуда-то отттуда); // ну, или из потока, или еще как по необходимости
NewButton.Glyph:=im.Bitmap;
NewButton.PaintStyle:=psCaptionGlyph; // например ..., или какой надо
....
end; //собственно? вот  

мне нужно присвоить иконку окна, а не грузить из файла
 
Добавлено:

Цитата:
одно замечание - ты не присваиваешь кнопку категории ...
bar1.Categories.Add('хорошая такая категория');  
NewButton.Category:=bar1.Categories.IndexOf('хорошая такая категория');
 

а это обязательно? что мне это даст?
 
Добавлено:

Цитата:
ПУНКТ 2
 
разрушай кнопку ... линк сам умрет ... во всяком случае у меня работает
 
только ИМХО при переборе надо использовать обратный порядок
 
for I := Bar1.ItemLinks.Count - 1 downto 0 do

вот за это спасибо, только какая разница в порядке, в за один проход удаляется только 1 кнопка!
кстати, ты уверен, что линк сам умирает и прога к концу дня не станет жрать по 500 метров памяти?

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 10:26 28-03-2008
shulum



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

Цитата:
а это обязательно? что мне это даст?

 
в реалтайме ты ее сможешь найти в настройках (Добавить/удалить кнопки)
- опционально, конечно, но все же ...
 

Цитата:
вот за это спасибо, только какая разница в порядке, в за один проход удаляется только 1 кнопка!  
кстати, ты уверен, что линк сам умирает и прога к концу дня не станет жрать по 500 метров памяти?

 
ну если одна - то разницы нет ... а вот если кучка, то есть разница.
А то что линк умирает - теперь уверен, во всяком случае попытка опросить количество линков и кнопок показывает, что количество оных уменьшается после разрушения кнопки. А вот после разрушения линка - кнопка остается ... что в общем то логично.
 
 
 
Добавлено:

Цитата:
мне нужно присвоить иконку окна, а не грузить из файла

 
в свою бытность, для этого я использовал TImageList
бросал туда иконку, а вынимал BitMap, возможно, несколько коряво, но работало ...
AddIcon
GetBitmap

Всего записей: 121 | Зарегистр. 11-06-2006 | Отправлено: 10:58 28-03-2008
drunk2



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
После установки новых девок в Delphi7 вываливается
Цитата:
[Fatal Error] DataModule.pas(10): Unit cxGridCustomTableView was compiled with a different version of cxEdit.TcxInplaceEditList.GetEdit
Старых девок удалял полностью, удалял все dcu, делал rebuild - не помогает(
 
Добавлено:
Вопрос снят. Не все dcu почистил.

Всего записей: 204 | Зарегистр. 27-10-2005 | Отправлено: 08:05 31-03-2008
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблему решил одной строчкой )))

Код:
 
   NewButton.PaintStyle   := psCaptionGlyph;
   NewButton.GroupIndex   := 1;
   NewButton.Glyph.Width  := 16;//GetSystemMetrics(SM_CXSMICON);
   NewButton.Glyph.Height := 16;//GetSystemMetrics(SM_CYSMICON);
   NewButton.Glyph.Canvas.Draw(0,0,form1.Icon);
 
//ВОТ ОНА!!
   ABar.Control.RepaintBar;
 

Осталось понять, как можно нарисовать иконки 16х16, а то всё равно рисуются почти на всю кнопку

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 09:09 31-03-2008
shulum



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
 
имхо - надо саму иконку ресайзить ...  
 
P.S.
а попробуй вот так поставить (сам не пробовал - времени нет)
   NewButton.Glyph.Canvas.Draw(0,0,form1.Icon);
   NewButton.Glyph.Width  := 16;//GetSystemMetrics(SM_CXSMICON);  
   NewButton.Glyph.Height := 16;//GetSystemMetrics(SM_CYSMICON);  
 
вообще дурь, конечно, но вдруг поможет ....

Всего записей: 121 | Зарегистр. 11-06-2006 | Отправлено: 13:46 31-03-2008
drunk2



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно сделать,  чтобы Caption у TdxNavBarItem переносился по словам на несколько строк, типа WordWarp? Как у виндового explore-а?

Всего записей: 204 | Зарегистр. 27-10-2005 | Отправлено: 14:55 31-03-2008
ArtemiyUO

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день уважаемые!
 
Столкнулся, похоже, с багом в Devexpress контролах. Проверял на версиях 30 и 33.
Если создать New VCL Application, кинуть на неё TcxTextEdit и запустить на терминальном сервере, а окно терминальной сессии "восстановить" (сделать не на полный экран), то при переключении задач с помощью Alt + Tab теряется фокус с активного контрола на форме. В результате этого первое нажатие клавиши после переключения обратно на задачу "теряется".
т.е. если мы введем ааа, получим аа.
 
С обычным TEdit все в порядке.
 
Проблема, похоже, в неправильной обработке системных комбинаций клавиш.
Замечено, что после переключения на задачу, фокус находится у системного меню формы (это легко проверяется нажатием на пробел)
 
Собираюсь оформить баг-репорт, а пока ничего лучше, чем приделать следующую кривую заплатку не придумал:
На главную форму приложения кинуть TApplicationEvents и в обработчике OnMessage написать:
Handled := (Msg.Message = WM_KEYUP) and (Msg.wParam = VK_MENU);
 
Никто не сталкивался с этой проблемой? Как решали?

Всего записей: 539 | Зарегистр. 12-12-2005 | Отправлено: 15:15 31-03-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