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

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

Автор: scratch
Дата сообщения: 16.08.2007 12:17

Цитата:
Попробовал поставить у себя 25 ресурсов на страницу. Вроде шустро все бегает...

вот выложил пример:
h**p://rapidshare.com/files/49304696/ShedDemo.rar.html
компилим, запускаем, разворачиваем окошко на весь экран.. Может конечно у меня банка слабая ) хотя проц AMD 3000+, оперативки 512...
Автор: Dennica
Дата сообщения: 16.08.2007 13:04
Не могу с рапиды скачать =\ Премиума нет, а очереди дождаться в нашей конторе бесполезно. Как ни зайду, всегда просят ждать часа полтора %)
Автор: scratch
Дата сообщения: 16.08.2007 13:45
Dennica
h**p://www.sendspace.com/file/sb90if
Автор: Dennica
Дата сообщения: 16.08.2007 14:41
scratch
поставь в GroupSeparatorWidth = 0, должно помоч
Автор: zver
Дата сообщения: 16.08.2007 16:05
Как в TcxPage Control название одной! вкладки(TabSheet) написать в две строчки?
Автор: korobovmax
Дата сообщения: 16.08.2007 16:15
zver, никак.
Зачем вам это?
Автор: zver
Дата сообщения: 16.08.2007 16:45
Есть 20 вкладок с относительно длинными названиями.
Если ставить MultiLine, то вкладки будут скакать(при выборе вкладки с верхней строчки вся группа вкладок перемещается вниз - вызуально очень неудобно).
Автор: korobovmax
Дата сообщения: 16.08.2007 16:53
zver, к сожалению, такое поведение наблюдается в стандартном виндовом контроле pagecontrol. DevExpress'овцы только копируют.

Как самый плохой вариант, предлагаю вам в событии OnChange PageControl'а узнавать индекс текущей вкладки и менять у нее PageIndex.
Автор: scratch
Дата сообщения: 17.08.2007 08:12

Цитата:
поставь в GroupSeparatorWidth = 0, должно помоч

Хы, помогло вот не думал что такая фигня столько проблем вызовет
Автор: Widoms
Дата сообщения: 23.08.2007 08:15
Кто юзал новый компонент Ribon ?
Как сделать форму похожую на office 2007 ?

если ставить Form1.BorderStyle = bsNone как то не очень красиво получается.
Автор: yuish
Дата сообщения: 23.08.2007 08:30
Widoms
Скачай демки, там есть прекрасная демка по рибону. Я разобрался за 5 минут и уже активно пользую.
Автор: zak 956
Дата сообщения: 23.08.2007 14:40
Widoms

в модуле формы в Uses добавь модуль dxRibbonForm,
предка формы измени на tdxRibbonForm, то есть например
TForm1 = class(TdxRibbonForm) вместо TForm1 = class(TForm)
и у Риббона свойство SupportNonClientDrawing выставь True
Автор: DeSergio
Дата сообщения: 23.08.2007 18:19
Всем привет!

проблема в следующем:
используем в своей прилоге трилист и данные подгружаем динамически при экспанде ноды (на BeforeExpand). есть прекрасная опция, по которой нода экспандится при Drag&Drop, которая и установлена в true.
глюк заключается в том, что при Drag&Drop ноды (node1) на другую ноду (node2) происходит копирование node1, то есть у node2 появяются 2 ребенка c именем node1.
но это происходит лишь втом случае, если node2 не был до этого заэкспанден.
при удалении одного из этих клонов (или любом редактировании), удаляются (редактируются) оба.

никто с таким не встречался?

заранее спасибо

p.s. созданные ноды ссылаются на одну и туже строчку из датасета. как так?
Автор: clear2121
Дата сообщения: 28.08.2007 10:45
Hi!
Ставлю девок от 2 августа на BDS C++ Builder 2006. При запуске куча ошибок. Нет фалов dcldxSkinsCoreC10.*
Где их взять или как создать?

СПАСИБО!

Добавлено:
Забыл сказать, что инсталятор от ФЕНДИ
Автор: Dennica
Дата сообщения: 28.08.2007 10:54
clear2121
Попробуй, отключи скины в инсталяторе. Скины всеравно пока очень сырые.
Автор: zver
Дата сообщения: 28.08.2007 17:16
Да. У меня такое предположение, что скины пока тестируются и тестируются причем на Делфях и не приспособлены пока для С++Builder-a.
Автор: clear2121
Дата сообщения: 29.08.2007 04:41
Все оказалось проще: я не включил в проект скины. А они, похоже, действительно участствуют в нескольких компонентах. Включив их, получил нормальный проект. Невнимательность БЛИН!
Автор: Dennica
Дата сообщения: 29.08.2007 07:37
clear2121
В delphi с включенными скинами время компиляции возрастает в разы, в билдере такого эффекта не наблюдается?
Автор: clear2121
Дата сообщения: 29.08.2007 09:41
Dennica
Я их не использую, поэтому не знаю. Можно попробовать.
Автор: golkanavt
Дата сообщения: 29.08.2007 16:25
Пару недель назад у пользователя VAbramyak был вопрос про "каскадное чеканье" в TreeList. У меня возникла схожая задача, но для грида при наличии несколько уровней. У колонки, связанной с полем в таблице, отвечающей за состояние записи (выбрано, частично, не выбрано) установил Porperties.CheckBox и в свойствах чекбокса указал AllowGrayed = True, ValueGrayed = 2, Type = Integer. При тестовом запуске теперь все записи отмечены как Grayed, хотя реально там значения стоят, указывающие на то что они выбраны. Это баг или фича?

Добавлено:
С первым вопросом разобрался, изначально поле было boolean-type, видимо в базе где то остались ограничения, после пересоздания поля в базе и колонки с чекбоксом все стало выглядить нормально. Теперь следующий вопрос - как заставить обновляться родительскую запись при изменении в дочках и наоборот?
Автор: Samara123
Дата сообщения: 31.08.2007 09:40
Есть запрос, который по двум датам начала и окончания, возвращает месячные периоды, то есть например:
05.01.2007 и 01.05.2007 - даты. Запрос возвращает:
------------------------
05.01.2007 | 05.02.2007
05.02.2007 | 05.03.2007
05.03.2007 | 05.04.2007
05.04.2007 | 01.05.2007
Эти данные выводятся в cxGrid в 3 столбца. 3ий столбец - количество дней в периоде. Количество дней подсчитывается при помощи калькулируемого поля. Требуется сделать, чтобы при изменении одной из дат в первом столбце руками, менялась дата в предыдущей строке во втором столбце на идентичную. И наоборот. Первую и последнюю даты менять нельзя. То есть дата первого столбца всегда была равна дате второго столбца предыдущей строки.
Промучился достаточно долго. Во-первых единственное событие, которое выводит новое значение даты на экран это cxGrid1DBTableView1Column1PropertiesValidate со значением DisplayValue. Но при использовании SetValue к предыдущей строке при нажатии Ентер значение меняется, но при переходе на другу строку возвращается старое. При обработке OnUpdate происходит переполнение. Да и при обработках подобных событий бегать по строкам нельзя. Заночить значения в БД и заменять отталкиваясь от них не выход.
Вобщем получается замкнутый круг какой-то. Подскажите плиз, что можно предпринять в данном случае?
Спасибо.
П.С. Делать одно из полей вычисляемым на основании другого не вариант, так как надо, чтобы работало в обе стороны.
Автор: clear2121
Дата сообщения: 31.08.2007 10:44
HI!
Поставил C++ Builder 2007. На компе так же стоит BDS C++ Builder 2006. Установил все компоненты в 2007 (нормально работают в 2006). Создал проект в 2007 с Девками и получил
[BCC32 Error] dxBar.hpp(9336): E2034 Cannot convert 'void *' to '_di_IdxBarAccessibilityHelper'

Хотя если просто положить EDIT, то все проходить.
Вопрос: как можно прикрутить инсталятор от ФЕНДИ (августовский) к BDS 2006 и C++ 2007?

СПАСИБО!
Автор: Dennica
Дата сообщения: 31.08.2007 10:44
Samara123
Если view связан с данными из датасета, то применять SetValue для установки значений нельзя. Нужно изменять сам датасет. Для такой задачи датасет должен естественно быть кэшыруемым, т.е. CachedUpdates должно стоять true. Вообще, если бы я начал делать эту задачу, то скорее всего вместо PropertiesValidate воспользовался бы OnUpdateData эвентом TDataSource. Попробую счас накидать код в качестве разминки.

Добавлено:
Samara123
Вроде работает...

Текст pas [more]unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, dxmdaset, cxGridLevel, cxClasses, cxControls,
cxGridCustomView, cxGrid, cxCalendar;

type
TForm2 = class(TForm)
cxGrid1DBTableView1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
dxMemData1: TdxMemData;
dxMemData1ds: TDateTimeField;
dxMemData1de: TDateTimeField;
DataSource1: TDataSource;
cxGrid1DBTableView1RecId: TcxGridDBColumn;
cxGrid1DBTableView1ds: TcxGridDBColumn;
cxGrid1DBTableView1de: TcxGridDBColumn;
procedure DataSource1UpdateData(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.DataSource1UpdateData(Sender: TObject);
var
bm: Pointer;
cds, cde: Variant;
begin
with dxMemData1 do begin
dxMemData1.DisableControls;
bm := dxMemData1.GetBookmark;
try
cds := FieldByName('ds').Value;
cde := FieldByName('de').Value;
// Если изменилась дата начала периода
if cds <> FieldByName('ds').OldValue then begin
// Если первая запись, не даем менять дату начала периода
if RecNo = 1 then begin
Edit;
FieldValues['ds'] := FieldByName('ds').OldValue;
Post;
end else begin
Prior;
Edit;
FieldValues['de'] := cds;
Post;
end;
// Если изменилась дата конца периода
end else if cde <> FieldByName('de').OldValue then begin
// Если последняя запись, не даем менять дату конца периода
if RecNo = RecordCount then begin
Edit;
FieldValues['de'] := FieldByName('de').OldValue;
Post;
end else begin
Next;
Edit;
FieldValues['ds'] := cde;
Post;
end;
end else
Exit;

GotoBookmark(bm);
finally
FreeBookmark(bm);
EnableControls;
end;
end;
end;

end.[/more]
Текст dfm [more]object Form2: TForm2
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 286
ClientWidth = 426
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object cxGrid1: TcxGrid
Left = 0
Top = 0
Width = 426
Height = 241
Align = alTop
TabOrder = 0
object cxGrid1DBTableView1: TcxGridDBTableView
NavigatorButtons.ConfirmDelete = False
DataController.DataSource = DataSource1
DataController.KeyFieldNames = 'ds'
DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
DataController.Summary.DefaultGroupSummaryItems = <>
DataController.Summary.FooterSummaryItems = <>
DataController.Summary.SummaryGroups = <>
OptionsData.Deleting = False
OptionsData.Inserting = False
object cxGrid1DBTableView1RecId: TcxGridDBColumn
DataBinding.FieldName = 'RecId'
Visible = False
end
object cxGrid1DBTableView1ds: TcxGridDBColumn
DataBinding.FieldName = 'ds'
PropertiesClassName = 'TcxDateEditProperties'
Properties.ImmediatePost = True
end
object cxGrid1DBTableView1de: TcxGridDBColumn
DataBinding.FieldName = 'de'
PropertiesClassName = 'TcxDateEditProperties'
Properties.ImmediatePost = True
end
end
object cxGrid1Level1: TcxGridLevel
GridView = cxGrid1DBTableView1
end
end
object dxMemData1: TdxMemData
Active = True
Indexes = <>
Persistent.Data = {
5665728FC2F5285C8FFE3F02000000080000000B000300647300080000000B00
03006465000100009E7083C9CC420100003043D3C9CC420100003043D3C9CC42
010000385C1BCACC42010000385C1BCACC42010000CA2E6BCACC42010000CA2E
6BCACC420100007621AECACC42}
SortOptions = []
Left = 360
Top = 248
object dxMemData1ds: TDateTimeField
FieldName = 'ds'
end
object dxMemData1de: TDateTimeField
FieldName = 'de'
end
end
object DataSource1: TDataSource
DataSet = dxMemData1
OnUpdateData = DataSource1UpdateData
Left = 392
Top = 248
end
end[/more]
Автор: Samara123
Дата сообщения: 31.08.2007 18:18
Dennica, Спасибо огромное. Пытался также сделать, но не получалось, так как только что узнал, что есть DisableControls, правда что это такое пока не знаю, поэтому пошел читать маны.
Автор: X11
Дата сообщения: 03.09.2007 08:49
Здравствуйте. Есть пара вопросов. Мне здесь не раз помогали и, я уверен, на то что в очередной раз помогут. Заранее благодарен.

Итак. Есть таблица, сгруппированная по 4 полям



Нужно:
1. Развернуть все уровни. Может есть у девок команда типа Развернуть всё.
2. Развёрнутую таблицу нужно сохранить как есть, т.е.

Название уровня1
Название уровня2
Название уровня3
Название уровня4
товар
товар
товар
Название уровня4
товар
товар
Название уровня3
Название уровня4
товар
товар
Автор: Dennica
Дата сообщения: 03.09.2007 09:01
X11
Развернуть все можно так:
cxGrid1TableView1.ViewData.Expand(True);

А вот насчет сохранения не понял. Что и куда нужно сохранить.

Добавлено:
Кстати начет разворачивания.. Если в принципе хочется видеть всегда все группы развернутыми, то можно просто DataController.Options.dcoGroupsAlwaysExpanded установить в true
Автор: X11
Дата сообщения: 03.09.2007 09:11
вот я развернул всю тадицу, все группы, все товары, теперь эту таблицу нужно перекинуть, ну, допустим, в Excel. Но перекинуть в таком виде, в каком мы её видем на экране в развернутом виде:

вот в таком виде
Автор: Dennica
Дата сообщения: 03.09.2007 09:21
X11
для 6-го грида: (unit cxGridExportLink)
procedure ExportGridToExcel(const AFileName: string; AGrid: TcxGrid;
AExpand: Boolean; ASaveAll: Boolean; AUseNativeFormat: Boolean; const AFileExt: string);
Автор: X11
Дата сообщения: 03.09.2007 09:41
в очередной раз Спасибо

Добавлено:
А как мне программно или в дизайне сделать такое?


чтобы пользователь не перетаскивал ручками, и, хотелось бы, чтобы эти поля вверху не были видны.
Автор: Dennica
Дата сообщения: 03.09.2007 12:21
X11
cxGrid1TableView1.OptionsView.GroupByBox := False;

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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