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

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

Автор: V1s1ter
Дата сообщения: 24.12.2009 10:01
afiget

Цитата:
Я обычно могу определить задержки около 300мс.

Я не говорю о принципиальной возможности, а о том, что в зависимости от среды (OS, IDE, эксперты, процессы и службы) результат можно и не получить.
Например на моем компе при отладке цикла
1) for i=:=0 to ...
2) A[i] :=
если жать F8? то с первой строки уходит со строки 1 на строку2 за 1-3 секунды
А если стать на строку 2 и нажать F4 то переходит менее чем за секунду...
Автор: afiget
Дата сообщения: 24.12.2009 11:53
V1s1ter
Именно поэтому я и написал: "может быть сразу увидишь где проблема".
Автор: btolik
Дата сообщения: 24.12.2009 12:11
Может кто то выложить пример с кратким описанием как создать свой собственный In-place редактор для колонки в cxGrid.
Delphi 2009. Есть собственная компонента
TCustomDBTreeComboBox = class(TcxCustomPopupEdit)
TCustomDBTreeLookupComboBox = class(TCustomDBTreeComboBox)
TDBTreeLookupComboBox = class(TCustomDBTreeLookupComboBox)

Хотелосьбы что бы для колонки в cxGrid в свойстве Properties выбиралась эта компонента, что бы потом в гриде при редакитировании ячейки ее использовать

Спасибо
Автор: vladman
Дата сообщения: 24.12.2009 15:00
ShamaN

Цитата:
Подскажите, как сделать у закладок PageControl многострочный Caption?

Достаточно нетривиальная задача. Единственное что приходит на ум - попытаться создать свой новый Painter для PageControl. How to create a new Painter for a PageControl component. Посмотрите, может поможет решить проблему

Добавлено:
btolik

Цитата:
Может кто то выложить пример с кратким описанием как создать свой собственный In-place редактор для колонки в cxGrid.

В саппорт сентр и ноледж бэйз давно уже опубликованы:
How to Use a VCL Edit Control as an Inplace Editor
Creating my own cxGrid Column inplace editor
Автор: rokerr
Дата сообщения: 24.12.2009 16:18
Люди помогите разобраться с гридом

Чего только я не делал, в толк взять не могу почему так получается.
Имеется таблица с паспортами (ID ключевое поле) назовем ее А. Вторая таблица (Б) с составом поспартов (связь осуществляется по полю PASPID)
Имеются 2 датасета в выборками из таблицы Б. Один дата сет с условием (1), другой без (2). Датасет для таблицы А.

Доступ к данным осуществляется через cxGrid.
cxGrid1
cxGrid1Level1 cxGrid1DBTableView1 (паспорта)
cxGrid1Level2 cxGrid1DBTableView2 (их содержимое)

Суть проблемы в том, что когда cxGrid1DBTableView2.DataController.DataSource:= 2 в гриде при выборе определенного паспорта отображаются только 65 записей а должно быть 19303 (и хоть ты тресни до последней до ходит и перескакивает на первую вьюшку). Если ставлю cxGrid1DBTableView2.DataController.DataSource:= 2 (где условие именно этот паспорт) то отображается 19303 записи.

GridMode и там и там false.
Что делать ума не приложу. Помогите плз, наставьте на путь истенный.
Мануал почитал, все что можно перепробовал.
Автор: Cryogen2003
Дата сообщения: 24.12.2009 16:37
Добрый вечер. Вчера задал вопрос, но на него так ничето и не ответил. Меня интересует, почему когда грид с двумя уровнями, то в гриде второго уровня не работает перемещение как по записям, так и просто по ячейкам. Как сделать так, чтобы работало?
Автор: xokc
Дата сообщения: 24.12.2009 19:30
Cryogen2003
Чиать help по ExpressQuantumGrid's в разделе "Tutorials.Master-detail tutorial". Обратить особое внимание на правильную установку ВСЕХ полей.
Автор: Cryogen2003
Дата сообщения: 24.12.2009 19:44
xokc
У меня как в первом гриде, так и во втором гриде основное поле, это agreeid. В первом гриде надо какие-то поля ставить или нет? Во втором гриде я везде поставил agreeid
Автор: vladman
Дата сообщения: 24.12.2009 21:17
Cryogen2003

Цитата:
У меня как в первом гриде, так и во втором гриде основное поле, это agreeid....

Давайте пример где это не работает. Чтобы не привязываться к вашей СУБД, проэмулируйте таблицы (те, которые master-detail) как memtable, и набросайте в них каких-нибудь данных. С примером будет легче вам помочь.

Добавлено:
rokerr

Цитата:
Что делать ума не приложу. Помогите плз, наставьте на путь истенный.

Попробуйте в (2) сделать ORDER BY PASPID
Автор: dimm78
Дата сообщения: 24.12.2009 21:26

Цитата:
rokerr



Цитата:
Суть проблемы в том, что когда cxGrid1DBTableView2.DataController.DataSource:= 2 в гриде при выборе определенного паспорта отображаются только 65 записей а должно быть 19303 (и хоть ты тресни до последней до ходит и перескакивает на первую вьюшку). Если ставлю cxGrid1DBTableView2.DataController.DataSource:= 2 (где условие именно этот паспорт) то отображается 19303 записи.


скорее всего проблема в том что ты не сортируешь вложенный уровень по PASPID
Автор: rokerrr
Дата сообщения: 24.12.2009 21:55
Нарыл на форуме девок, завтра попробую. Действительно, сортирую в выборке не по этому полю. Спасибо за помощь.
Автор: vladman
Дата сообщения: 24.12.2009 23:17
rokerr он же rokerrr
Вы хотя бы под одним логином сообщения пишите.
ЗЫ. СОГЛАШЕНИЕ ПО ИСПОЛЬЗОВАНИЮ ФОРУМА «RU-BOARD»
3.3.Помимо этого запрещается:
3.3.1.двойная регистрация, то есть регистрация под двумя и более никнеймами;
Автор: Cryogen2003
Дата сообщения: 25.12.2009 07:53
vladman
Думаю просто где-то что-то забыл. Сейчас просто часть кода dfm и select

[more=Читать dfm и select для гридов]
object dbgCardBanksoftHistory: TcxGrid
Left = 1
Top = 57
Width = 348
Height = 125
Align = alClient
Constraints.MinHeight = 70
TabOrder = 2
DragOpening = False
LevelTabs.Style = 7
LookAndFeel.Kind = lfFlat
RootLevelOptions.TabsForEmptyDetails = False
object dbgCardBanksoftHistoryDBTableView1: TcxGridDBTableView
OnKeyDown = dbgCardBanksoftHistoryDBTableView1KeyDown
NavigatorButtons.ConfirmDelete = False
NavigatorButtons.First.Hint = #1055#1077#1088#1074#1072#1103' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.PriorPage.Hint = #1055#1077#1088#1077#1081#1090#1080' '#1085#1072' '#1087#1088#1077#1076#1099#1076#1091#1097#1091#1102' '#1089#1090#1088#1072#1085#1080#1094#1091
NavigatorButtons.PriorPage.Visible = False
NavigatorButtons.Prior.Hint = #1055#1088#1077#1076#1099#1076#1091#1097#1072#1103' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.Next.Hint = #1057#1083#1077#1076#1091#1102#1097#1072#1103' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.NextPage.Hint = #1055#1077#1088#1077#1081#1090#1077' '#1085#1072' '#1089#1083#1077#1076#1091#1102#1097#1091#1102' '#1089#1090#1088#1072#1085#1080#1094#1091
NavigatorButtons.NextPage.Visible = False
NavigatorButtons.Last.Hint = #1055#1086#1089#1083#1077#1076#1085#1103#1103' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.Last.Visible = True
NavigatorButtons.Insert.Hint = #1044#1086#1073#1072#1074#1083#1077#1085#1080#1077' '#1079#1072#1087#1080#1089#1080
NavigatorButtons.Insert.Visible = False
NavigatorButtons.Append.Hint = #1044#1086#1073#1072#1074#1083#1077#1085#1080#1077' '#1079#1072#1087#1080#1089#1080' '#1074' '#1082#1086#1085#1077#1094
NavigatorButtons.Delete.Hint = #1059#1076#1072#1083#1080#1090#1100' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.Delete.Visible = False
NavigatorButtons.Edit.Hint = #1056#1077#1076#1072#1082#1090#1080#1088#1086#1074#1072#1085#1080#1077' '#1079#1072#1087#1080#1089#1080
NavigatorButtons.Edit.Visible = False
NavigatorButtons.Post.Hint = #1057#1086#1093#1088#1072#1085#1080#1090#1100' '#1080#1079#1084#1077#1085#1077#1085#1080#1103
NavigatorButtons.Post.Visible = False
NavigatorButtons.Cancel.Hint = #1054#1090#1084#1077#1085#1072' '#1080#1079#1084#1077#1085#1077#1085#1080#1081
NavigatorButtons.Cancel.Visible = False
NavigatorButtons.Refresh.Hint = #1054#1073#1085#1086#1074#1080#1090#1100
NavigatorButtons.Refresh.Visible = False
NavigatorButtons.SaveBookmark.Hint = #1057#1086#1093#1088#1072#1085#1080#1090#1100' '#1079#1072#1082#1083#1072#1076#1082#1091
NavigatorButtons.GotoBookmark.Hint = #1055#1077#1088#1077#1081#1090#1080' '#1082' '#1079#1072#1082#1083#1072#1076#1082#1077
NavigatorButtons.Filter.Hint = #1060#1080#1083#1100#1090#1088
NavigatorButtons.Filter.Visible = False
FilterBox.Position = fpTop
FilterBox.Visible = fvNever
DataController.DataModeController.SmartRefresh = True
DataController.DataSource = dsCardBanksoftHistory_B
DataController.Filter.Options = [fcoCaseInsensitive]
DataController.Filter.Active = True
DataController.Filter.TranslateBetween = True
DataController.Filter.TranslateIn = True
DataController.Filter.TranslateLike = True
DataController.Filter.SupportedLike = False
DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText]
DataController.Summary.DefaultGroupSummaryItems = <>
DataController.Summary.FooterSummaryItems = <>
DataController.Summary.SummaryGroups = <>
FilterRow.InfoText = #1053#1072#1078#1084#1080#1090#1077' '#1079#1076#1077#1089#1100', '#1095#1090#1086#1073#1099' '#1085#1072#1089#1090#1088#1086#1080#1090#1100' '#1092#1080#1083#1100#1090#1088
NewItemRow.InfoText = #1053#1072#1078#1084#1080#1090#1077' '#1089#1102#1076#1072', '#1095#1090#1086#1073#1099' '#1076#1086#1073#1072#1074#1080#1090#1100' '#1085#1086#1074#1091#1102' '#1089#1090#1088#1086#1082#1091
OptionsBehavior.CopyCaptionsToClipboard = False
OptionsBehavior.ImmediateEditor = False
OptionsBehavior.IncSearch = True
OptionsBehavior.NavigatorHints = True
OptionsBehavior.CopyPreviewToClipboard = False
OptionsBehavior.PullFocusing = True
OptionsCustomize.ColumnsQuickCustomization = True
OptionsCustomize.DataRowSizing = True
OptionsData.Deleting = False
OptionsData.Inserting = False
OptionsView.Navigator = True
OptionsView.NoDataToDisplayInfoText = #1054#1090#1089#1091#1090#1089#1090#1074#1091#1102#1090' '#1076#1072#1085#1085#1099#1077
OptionsView.GroupByBox = False
OptionsView.HeaderAutoHeight = True
OptionsView.Indicator = True
Styles.Content = dmdMain.stGridContentEven
Styles.ContentEven = dmdMain.stGridContentEven
Styles.ContentOdd = dmdMain.stGridContentOdd
Styles.Selection = dmdMain.stGridSelection
Styles.Header = dmdMain.stGridHeader
object dbgCardBanksoftHistoryDBTableView1Column1: TcxGridDBColumn
Caption = #1058#1080#1087' '#1087#1088#1086#1076#1091#1082#1090#1072
DataBinding.FieldName = 'agreeproduct'
HeaderAlignmentVert = vaCenter
Width = 211
end
object dbgCardBanksoftHistoryDBTableView1Column2: TcxGridDBColumn
Caption = #1053#1086#1084#1077#1088' '#1076#1086#1075#1086#1074#1086#1088#1072
DataBinding.FieldName = 'agreenum'
HeaderAlignmentVert = vaCenter
Width = 108
end
object dbgCardBanksoftHistoryDBTableView1Column3: TcxGridDBColumn
Caption = #1053#1086#1084#1077#1088' '#1082#1072#1088#1090#1099
DataBinding.FieldName = 'absagreeid'
HeaderAlignmentVert = vaCenter
Width = 150
end
object dbgCardBanksoftHistoryDBTableView1Column4: TcxGridDBColumn
DataBinding.FieldName = 'agreeid'
Visible = False
HeaderAlignmentVert = vaCenter
VisibleForCustomization = False
end
end
object dbgCardBanksoftHistoryDBTableView2: TcxGridDBTableView
OnKeyDown = dbgCardBanksoftHistoryDBTableView2KeyDown
NavigatorButtons.ConfirmDelete = False
NavigatorButtons.First.Hint = #1055#1077#1088#1074#1072#1103' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.PriorPage.Hint = #1055#1077#1088#1077#1081#1090#1080' '#1085#1072' '#1087#1088#1077#1076#1099#1076#1091#1097#1091#1102' '#1089#1090#1088#1072#1085#1080#1094#1091
NavigatorButtons.PriorPage.Visible = False
NavigatorButtons.Prior.Hint = #1055#1088#1077#1076#1099#1076#1091#1097#1072#1103' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.Next.Hint = #1057#1083#1077#1076#1091#1102#1097#1072#1103' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.NextPage.Hint = #1055#1077#1088#1077#1081#1090#1077' '#1085#1072' '#1089#1083#1077#1076#1091#1102#1097#1091#1102' '#1089#1090#1088#1072#1085#1080#1094#1091
NavigatorButtons.NextPage.Visible = False
NavigatorButtons.Last.Hint = #1055#1086#1089#1083#1077#1076#1085#1103#1103' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.Last.Visible = True
NavigatorButtons.Insert.Hint = #1044#1086#1073#1072#1074#1083#1077#1085#1080#1077' '#1079#1072#1087#1080#1089#1080
NavigatorButtons.Insert.Visible = False
NavigatorButtons.Append.Hint = #1044#1086#1073#1072#1074#1083#1077#1085#1080#1077' '#1079#1072#1087#1080#1089#1080' '#1074' '#1082#1086#1085#1077#1094
NavigatorButtons.Delete.Hint = #1059#1076#1072#1083#1080#1090#1100' '#1079#1072#1087#1080#1089#1100
NavigatorButtons.Delete.Visible = False
NavigatorButtons.Edit.Hint = #1056#1077#1076#1072#1082#1090#1080#1088#1086#1074#1072#1085#1080#1077' '#1079#1072#1087#1080#1089#1080
NavigatorButtons.Edit.Visible = False
NavigatorButtons.Post.Hint = #1057#1086#1093#1088#1072#1085#1080#1090#1100' '#1080#1079#1084#1077#1085#1077#1085#1080#1103
NavigatorButtons.Post.Visible = False
NavigatorButtons.Cancel.Hint = #1054#1090#1084#1077#1085#1072' '#1080#1079#1084#1077#1085#1077#1085#1080#1081
NavigatorButtons.Cancel.Visible = False
NavigatorButtons.Refresh.Hint = #1054#1073#1085#1086#1074#1080#1090#1100
NavigatorButtons.Refresh.Visible = False
NavigatorButtons.SaveBookmark.Hint = #1057#1086#1093#1088#1072#1085#1080#1090#1100' '#1079#1072#1082#1083#1072#1076#1082#1091
NavigatorButtons.GotoBookmark.Hint = #1055#1077#1088#1077#1081#1090#1080' '#1082' '#1079#1072#1082#1083#1072#1076#1082#1077
NavigatorButtons.Filter.Hint = #1060#1080#1083#1100#1090#1088
NavigatorButtons.Filter.Visible = False
FilterBox.Position = fpTop
FilterBox.Visible = fvNever
DataController.DataModeController.SmartRefresh = True
DataController.DataSource = dsCardBanksoftHistory
DataController.DetailKeyFieldNames = 'agreeid'
DataController.Filter.Options = [fcoCaseInsensitive]
DataController.Filter.Active = True
DataController.Filter.TranslateBetween = True
DataController.Filter.TranslateIn = True
DataController.Filter.TranslateLike = True
DataController.Filter.SupportedLike = False
DataController.KeyFieldNames = 'agreeid'
DataController.MasterKeyFieldNames = 'agreeid'
DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText]
DataController.Summary.DefaultGroupSummaryItems = <>
DataController.Summary.FooterSummaryItems = <>
DataController.Summary.SummaryGroups = <>
FilterRow.InfoText = #1053#1072#1078#1084#1080#1090#1077' '#1079#1076#1077#1089#1100', '#1095#1090#1086#1073#1099' '#1085#1072#1089#1090#1088#1086#1080#1090#1100' '#1092#1080#1083#1100#1090#1088
NewItemRow.InfoText = #1053#1072#1078#1084#1080#1090#1077' '#1089#1102#1076#1072', '#1095#1090#1086#1073#1099' '#1076#1086#1073#1072#1074#1080#1090#1100' '#1085#1086#1074#1091#1102' '#1089#1090#1088#1086#1082#1091
OptionsBehavior.CopyCaptionsToClipboard = False
OptionsBehavior.ImmediateEditor = False
OptionsBehavior.IncSearch = True
OptionsBehavior.NavigatorHints = True
OptionsBehavior.CopyPreviewToClipboard = False
OptionsBehavior.PullFocusing = True
OptionsCustomize.ColumnsQuickCustomization = True
OptionsCustomize.DataRowSizing = True
OptionsData.Deleting = False
OptionsData.Inserting = False
OptionsView.Navigator = True
OptionsView.NoDataToDisplayInfoText = #1054#1090#1089#1091#1090#1089#1090#1074#1091#1102#1090' '#1076#1072#1085#1085#1099#1077
OptionsView.GroupByBox = False
OptionsView.HeaderAutoHeight = True
OptionsView.Indicator = True
Styles.Content = dmdMain.stGridContentEven
Styles.ContentEven = dmdMain.stGridContentEven
Styles.ContentOdd = dmdMain.stGridContentOdd
Styles.Selection = dmdMain.stGridSelection
Styles.Header = dmdMain.stGridHeader
object dbgCardBanksoftHistoryDBTableView2Column1: TcxGridDBColumn
Caption = #1042#1072#1083#1102#1090#1072
DataBinding.FieldName = 'curc'
Width = 60
end
object dbgCardBanksoftHistoryDBTableView2Column2: TcxGridDBColumn
Caption = #1044#1072#1090#1072
DataBinding.FieldName = 'expdate'
Width = 110
end
object dbgCardBanksoftHistoryDBTableView2Column3: TcxGridDBColumn
Caption = #1055#1088#1086#1089#1088#1086#1095#1082#1072
DataBinding.FieldName = 'expno'
Width = 69
end
object dbgCardBanksoftHistoryDBTableView2Column4: TcxGridDBColumn
Caption = #1052#1080#1085#1080#1084#1072#1083#1100#1085#1099#1081' '#1087#1083#1072#1090#1077#1078
DataBinding.FieldName = 'minplat'
Width = 130
end
end
object dbgCardBanksoftHistoryLevel1: TcxGridLevel
GridView = dbgCardBanksoftHistoryDBTableView1
object dbgCardBanksoftHistoryLevel2: TcxGridLevel
GridView = dbgCardBanksoftHistoryDBTableView2
end
end
end

Первый уровень наполняется так:
SELECT DISTINCT agreeproduct, agreenum, absagreeid, agreeid
FROM (SELECT /*+ ordered */
a.agreeid,
TO_CHAR (a.absagreeid) AS absagreeid,
serv.getrefstr
(22,
a.agreeproductgroup
)
|| ' - '
|| serv.getrefstr (13, agreeproduct)
AS agreeproduct,
agreenum, bs.acccurc AS curc,
accrestdate AS expdate,
SUM
(CASE
WHEN accrest IS NULL
AND accrestdebit IS NULL
THEN NULL
WHEN accrest IS NULL
AND accrestdebit IS NOT NULL
THEN -accrestdebit
WHEN accrest IS NOT NULL
AND accrestdebit IS NULL
THEN accrest
ELSE NULL
END
) OVER (PARTITION BY a.absagreeid ORDER BY accrestdate)
AS expno,
cardimport.calcsaldoonminplat
(cardimport.calckeyforaccno
(cardaccno,
cardimport.getsyncaccnoone
(2)
),
accrestdate
) minplat
FROM agree a, banksoft_history bs
WHERE a.clientid = v_cli_id
AND bs.accnotype = 10001
AND a.agreetype = 2
AND bs.agreeid = a.agreeid
ORDER BY absagreeid, expdate DESC)
WHERE expno > 0

второй уровень так (примерно так же, чуть-чуть по другому):
SELECT *
FROM (SELECT /*+ ordered */
TO_CHAR (a.absagreeid) AS absagreeid,
serv.getrefstr
(22,
a.agreeproductgroup
)
|| ' - '
|| serv.getrefstr (13, agreeproduct)
AS agreeproduct,
agreenum, bs.acccurc AS curc,
accrestdate AS expdate,
SUM
(CASE
WHEN accrest IS NULL
AND accrestdebit IS NULL
THEN NULL
WHEN accrest IS NULL
AND accrestdebit IS NOT NULL
THEN -accrestdebit
WHEN accrest IS NOT NULL
AND accrestdebit IS NULL
THEN accrest
ELSE NULL
END
) OVER (PARTITION BY a.absagreeid ORDER BY accrestdate)
AS expno,
cardimport.calcsaldoonminplat
(cardimport.calckeyforaccno
(cardaccno,
cardimport.getsyncaccnoone
(2)
),
accrestdate
) minplat, a.agreeid
FROM agree a, banksoft_history bs
WHERE a.clientid = v_cli_id
AND bs.accnotype = 10001
AND a.agreetype = 2
AND bs.agreeid = a.agreeid
ORDER BY absagreeid, expdate DESC)
WHERE expno > 0
[/more]

Добавлено:
Жду ответа как полечить можно, а то пользователи съедят
Автор: f3ka
Дата сообщения: 25.12.2009 08:09
Cryogen2003
изучите пожалуйста тег MORE
Автор: Cryogen2003
Дата сообщения: 25.12.2009 08:23
f3ka
OFF:
Прошу прощения, исправил
Автор: f3ka
Дата сообщения: 25.12.2009 08:44
Cryogen2003
а вот меня немного смущает, а сортировка в запросах не должна ли быть после последнего WHERE?
и еще мне кажется что KeyFieldNames у первого грида должно быть...
Автор: Cryogen2003
Дата сообщения: 25.12.2009 08:52
f3ka
Сортировку можно и не делать потом, если она была сделана до этого. Oracle начитывает данные и сортирует так, что в какой-то степени получается виртуальный датасет, просто который в temp храниться.

А по поводу KeyFieldNames - я пойду почитаю значит в хелпе, вроде там не было про это ничего написано
Автор: f3ka
Дата сообщения: 25.12.2009 09:17
Cryogen2003
если основное поле agreeid то почему в сортировках используется поле absagreeid???
Автор: Cryogen2003
Дата сообщения: 25.12.2009 09:22
f3ka
А честно говоря фиг его знает, не помню для чего это написал absagreeid - у меня в проекте для карточных договоров обычно номер основной карты, а agreeid - ИД договора в системе (то есть никак не привязан к номеру договора или карты). В принципе относительно без разницы как тут сортировать. Как бы просто хотел, чтобы данные были отсортированны по номеру карты, а внутренний ИД все равно не показывается обычному пользователю.
Автор: f3ka
Дата сообщения: 25.12.2009 09:29
Cryogen2003
короче со скроллом вроде понятно стало, причина отсутствия скролла в том что для Detail установлены все KeyFieldNames, а необходимо только MasterKeyFieldNames и DetailKeyFieldNames...
Автор: Cryogen2003
Дата сообщения: 25.12.2009 09:31
f3ka
Елки-иголки, как любит выражаться мой сынишка, ведь знал, что что-то тут не так. Спасибо большое, с меня пиво.
Автор: f3ka
Дата сообщения: 25.12.2009 09:37
Cryogen2003
на самом деле после прочтения хелпа стало понятно, что самая большая проблема вроде заключается в том что поле KeyFieldNames = agreeid должно быть УНИКАЛЬНО в Detail для точной идентификации записи... то есть KeyFieldNames надо указать такое (такие) которые однозначно идентифицируют запись в Detail, иначе не будет возможности редактировать Detail из грида...
Автор: Cryogen2003
Дата сообщения: 25.12.2009 09:43
f3ka
agreeid у меня точно уникально, а вот absagreeid бывает и дублирует. К сожалению эти данные качаются из другого проекта (не я его писал), а там все через ж...
Автор: ivan76
Дата сообщения: 25.12.2009 12:58
Подскажите, возможно ли запретить копирование из cxGrid (CTRL + C)?
Автор: f3ka
Дата сообщения: 25.12.2009 13:10
ivan76
наверно можно написать какой нить обработчик на OnKeyDown/OnKeyUp и там не давать выполнять копирование...
Автор: vladman
Дата сообщения: 25.12.2009 13:13
ivan76

Цитата:
Подскажите, возможно ли запретить копирование из cxGrid (CTRL + C)?

Да, возможно.
procedure <YourForm>.<YourcxGridDBTableView>KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = $43) and (Shift = [ssCtrl]) then Key := 0;
end;
Автор: X11
Дата сообщения: 25.12.2009 13:30
А Ctrl+ Insert


Код:
//запрет копирования Ctrl+Insert
if (((ssCtrl in Shift)) and (not(ssAlt in Shift)) and (not(ssShift in Shift))) and ((key in [vk_Insert,67,99,209,241,215,247,88,120]))
then
if not CanExportData(True) then key := 0;
Автор: ivan76
Дата сообщения: 25.12.2009 13:37
f3ka
vladman
X11


Премного благодарен!
Автор: vladman
Дата сообщения: 25.12.2009 13:38
X11

Цитата:
А Ctrl+ Insert

Спрашивали только про "CTRL + C". Может "CTRL + Insert" как раз и нужен. Можно, конечно, добавить и проверку на "CTRL + Insert":
Код: if ((Key = $43) or (Key = VK_INSERT)) and (Shift = [ssCtrl]) then Key := 0;
Автор: crazypiggy
Дата сообщения: 26.12.2009 23:46
Добрый день У меня такой вопрос. Испоьзую cxGrid и FibDataset (FibPlus)/ Настроил FIBDataset на вставку изменение и удаление записей. Почему при переходе по ячейкамм в таблице сразу вхожу в режим редактирования. Раньше использовал Ehlib, там по ячейкам перемщался нормально и лишь при повторном щелчке на ячейку входил в режим редактирования. Очень неудобно получается. Можно ли от этого избавиться? И ещё вопрос как сделать так чтобы перемстившись на последнюю строку, нажав стрелку вниз, автоматически добавилась пустая строка? В Ehlib это опять таки есть, а в Dev нет или я не знаю как это сделать. Пользуюсь ими недавно. Немного сумбурный вопрос получился. Извините за слог. Заранее благодарен!!!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

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


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