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

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

Автор: rdenk1
Дата сообщения: 30.08.2010 07:55
vladman

Цитата:
У cxgrid свойства  Options View нет. Вы скорее всего имели ввиду какой-то View. Какой? Какие свойства у вас установлены в свойстве OptionsSelection вашего View? В общем, давайте пример, так будет быстрее помочь с вашей проблемой.

cxGrid1DBTableView1. OptionsSelection такие:
CellMultiSelect true
CellSelect true
HideFocusRectOnExit true
HideSelection true
InvertSelect false
MultiSelect true
UnselectFocusedRecordOnExit true

P.S. Ctrl-Delete пользователи не привыкли использовать. Я с Ehlib пытаюсь перейти, а там по del удалялось. Сейчас их сложно будет переучить.
Автор: marser
Дата сообщения: 30.08.2010 08:30
X11

Цитата:
а так вообще было бы интересно установить 1-2 своих кнопок


Код: ......
private
FButton1, FButton2: TSpeedButton;
FPopupWindow: TcxCustomEditPopupWindow;
procedure PopupWindowResize(Sender: TObject);
procedure PopupWindowShow(Sender: TObject);
procedure CalculatePosition;
......

procedure TForm1.<OurColumn>PropertiesInitPopup(Sender: TObject);
var
AEdit: TcxPopupEdit;
begin
AEdit := TcxPopupEdit(Sender).PopupWindow;
APopupWindow := AEdit.PopupWindow;
FPopupWindow.OnResize := PopupWindowResize;
FPopupWindow.OnShow := PopupWindowShow;
end;

procedure TForm1.PopupWindowResize(Sender: TObject);
begin
CalculatePosition;
end;

procedure TForm1.PopupWindowShow(Sender: TObject);
begin
FButton1.Parent := FPopupWindow;
FButton2.Parent := FPopupWindow;
CalculatePosition;
end;

procedure TForm1.CalculatePosition;
begin
// Используйте FPopupWindow.ClientWidth, FPopupWindow.ClientHeight,
// FPopupWindow.ViewInfo.SysPanelHeight, FPopupWindow.ViewInfo.CloseButtonRect
case FPopupWindow.ViewInfo.SizeGripCorner of
ecoTopLeft: .....;
ecoTopRight: .....;
ecoBottomLeft: .....;
ecoBottomRight: .....;
end;
end;
Автор: vladman
Дата сообщения: 30.08.2010 09:56
rdenk1

Цитата:
выделяю несколько строк с пом. индикатора. Фокус при этом остается на одной из ячеек строки, которая была выделена последней

А разве у вас не выделяется вся строка/строки? Давайте скриншот, а лучше набросайте простой пример, иллюстрирующий проблему.
Автор: X11
Дата сообщения: 30.08.2010 10:27
marser, спасибо

ещё вопрос


Цитата:
procedure TForm1.CalculatePosition;
begin
// Используйте FPopupWindow.ClientWidth, FPopupWindow.ClientHeight,
// FPopupWindow.ViewInfo.SysPanelHeight, FPopupWindow.ViewInfo.CloseButtonRect

case FPopupWindow.ViewInfo.SizeGripCorner of
ecoTopLeft: .....;
ecoTopRight: .....;
ecoBottomLeft: .....;
ecoBottomRight: .....;
end;
end;

А можно об этом подробнее? Что здесь сочинить, я не могу понять

Добавлено:
другой вопрос
cxLookupCombobox.ImmediateDropDown := true

когда фокус попадает на cxLookupCombobox, то список не выпадает, это нормально?


Цитата:
procedure TfmApartAdd.FormKeyPress(Sender: TObject; var Key: Char);
begin
//Enter as Tab
if (Key = #13) and (bEnterAsTab) then
begin

if GetKeyState(VK_Shift) and $8000 <> 0 then
PostMessage(Handle, WM_NEXTDLGCTL, 1, 0)
else
PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);

Key := #0;
end;//if
end;


Приходится дописывать в OnEnter код
(sender as TcxLookupComboBox).DroppedDown := true;
Автор: marser
Дата сообщения: 30.08.2010 10:56
X11

Цитата:
А можно об этом подробнее? Что здесь сочинить, я не могу понять

Нужно вычислить месторасположение кнопок FButton1, FButton2 в зависимоти от
расположения SysPanel. FPopupWindow.ViewInfo.SizeGripCorner - расположение уголка для изменения размера popup окна.

Пример (только в нем TreeList 4, и не cxPopupEdit, а cхLookupComboBox):
[more]
unit uZhpLookupTree;

interface

uses Windows, Classes, cxTL, cxDBTL, cxDBLookupComboBox, cxInplaceContainer,
cxGraphics, cxGridCustomTableView, cxDropDownEdit, ImgList, cxEdit, Controls,
cxCustomData, Messages, uZhpConsts;

type
TZhpLookupTreeList = class(TcxDBTreeList)
private
FCanSelectParents: Boolean;
FColumnKey: TcxDBTreeListColumn;
FColumnNumRec: TcxDBTreeListColumn;
FColumnParentKey: TcxDBTreeListColumn;
FColumnShortName: TcxDBTreeListColumn;
FDropDownHeight: Integer;
FDropDownWidth: Integer;
FEdit: TcxCustomLookupComboBox;
FImageIndex: Integer;
FImageIndexCollapse: Integer;
FImageIndexExpand: Integer;
FParentControl: TWinControl;
FPopupWindow: TcxCustomEditPopupWindow;
FHandlerLCBPropertiesChange: TNotifyEvent;
procedure ButtonClick(Sender: TObject);
procedure CalculatePosition;
procedure AfterSorting(Sender: TObject);
procedure CustomDrawCell(Sender: TObject; ACanvas: TcxCanvas; AViewInfo:
TcxTreeListEditCellViewInfo; var ADone: Boolean);
procedure GetNodeImageIndex(Sender: TObject; ANode: TcxTreeListNode;
AIndexType: TcxTreeListImageIndexType; var AIndex: TImageIndex);
procedure LocateByKey(AKeyValue: Variant);
procedure LCBFilterRecord(ADataController: TcxCustomDataController;
ARecordIndex: Integer; var Accept: Boolean);
procedure LCBPropertiesChange(Sender: TObject);
procedure PopupWindowResize(Sender: TObject);
procedure PopupWindowShow(Sender: TObject);
procedure WMAfterSorting(var Message: TMessage); message WM_AfterSorting;
protected
procedure CalculateColumsWidth;
procedure Click; override;
procedure DblClick; override;
function DoEditing(AItem: TcxCustomInplaceEditContainer): Boolean; override;
procedure DoOnColumnSizeChanged(AColumn: TcxTreeListColumn); override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure RecordEnter;
procedure Resize; override;
public
constructor Create(AOwner: TComponent); override;
procedure HandlerCloseUp(AEdit: TcxCustomLookupComboBox);
procedure HandlerInitPopup(AEdit: TcxCustomLookupComboBox);
property CanSelectParents: Boolean read FCanSelectParents write
FCanSelectParents;
property ColumnNumRec: TcxDBTreeListColumn read FColumnNumRec;
property ColumnShortName: TcxDBTreeListColumn read FColumnShortName;
property DropDownHeight: Integer read FDropDownHeight;
property DropDownWidth: Integer read FDropDownWidth;
property ImageIndex: Integer read FImageIndex write FImageIndex;
property ImageIndexCollapse: Integer read FImageIndexCollapse write
FImageIndexCollapse;
property ImageIndexExpand: Integer read FImageIndexExpand write
FImageIndexExpand;
property ParentControl: TWinControl read FParentControl write
FParentControl;
property PopupWindow: TcxCustomEditPopupWindow read FPopupWindow;
end;

implementation

uses SysUtils, StdCtrls, Graphics, cxControls, Dialogs, cxButtons, cxLookAndFeels;

{$R ZhpButtons.res}

var
FButtonCollapse: TcxButton;
FButtonExpand: TcxButton;
FOldHeight: Integer = 0;
FOldWidth: Integer = 0;

const
Office11BtnColorsNormal = $F5BE9E;
Office11BtnColorsHot = $D3F8FF;
Office11BtnColorsPressed = $98DDFF;

type
TcxCustomLookupComboBoxAccess = class(TcxCustomLookupComboBox);

constructor TZhpLookupTreeList.Create(AOwner: TComponent);
var
ABand: TcxTreeListBand;
begin
inherited Create(AOwner);
FCanSelectParents := True;
FImageIndex := -1;
FImageIndexCollapse := -1;
FImageIndexExpand := -1;
DataController.KeyField := 'Id';
DataController.ParentField := 'Parent_Id';
BorderStyle := cxcbsNone;
OptionsBehavior.ExpandOnIncSearch := True;
OptionsBehavior.IncSearch := True;
OptionsSelection.InvertSelect := False;
OptionsView.ColumnAutoWidth := True;
OptionsView.GridLines := tlglBoth;
OptionsView.ScrollBars := ssVertical;
// OptionsView.ScrollBars := ssBoth;
OptionsView.Headers := True;

if Bands.Count = 0 then
ABand := Bands.Add
else
ABand := Bands[0];

FColumnKey := TcxDBTreeListColumn(CreateColumn(ABand));
FColumnKey.DataBinding.FieldName := 'Id';
FColumnKey.Visible := False;

FColumnParentKey := TcxDBTreeListColumn(CreateColumn(ABand));
FColumnParentKey.DataBinding.FieldName := 'Id';
FColumnParentKey.Visible := False;

FColumnShortName := TcxDBTreeListColumn(CreateColumn(ABand));
FColumnShortName.Caption.Text := 'Наименование';
FColumnShortName.DataBinding.FieldName := 'ShortName';
FColumnShortName.Visible := True;
OptionsBehavior.IncSearchItem := FColumnShortName;

FColumnNumRec := TcxDBTreeListColumn(CreateColumn(ABand));
FColumnNumRec.Caption.Text := '№';
FColumnNumRec.DataBinding.FieldName := 'NumRec';
FColumnNumRec.Width := 35;
FColumnNumRec.Visible := False;

OnCustomDrawCell := CustomDrawCell;
OnGetNodeImageIndex := GetNodeImageIndex;
OnAfterSorting := AfterSorting;

if FButtonCollapse = nil then
begin
FButtonCollapse := TcxButton.Create(AOwner);
with FButtonCollapse do
begin
LookAndFeel.Kind := lfUltraFlat;
Colors.Normal := Office11BtnColorsNormal;
Colors.Hot := Office11BtnColorsHot;
Colors.Pressed := Office11BtnColorsPressed;
Caption := '';
CanBeFocused := False;
Height := 21;
Width := 21;
Glyph.LoadFromResourceName(HInstance, 'ZH_COLLAPSE');
Hint := 'Свернуть подуровни';
ShowHint := True;
Tag := 1;
end;
end;

if FButtonExpand = nil then
begin
FButtonExpand := TcxButton.Create(AOwner);
with FButtonExpand do
begin
LookAndFeel.Kind := lfUltraFlat;
Colors.Normal := Office11BtnColorsNormal;
Colors.Hot := Office11BtnColorsHot;
Colors.Pressed := Office11BtnColorsPressed;
Caption := '';
CanBeFocused := False;
Height := 21;
Width := 21;
Glyph.LoadFromResourceName(HInstance, 'ZH_EXPAND');
Hint := 'Раскрыть подуровни';
ShowHint := True;
Tag := 2;
end;
end;
end;

procedure TZhpLookupTreeList.AfterSorting(Sender: TObject);
begin
if HandleAllocated and (FColumnShortName.SortOrder = soNone) and
(FColumnNumRec.SortOrder = soNone) then
PostMessage(Handle, WM_AfterSorting, 0, 0);
end;

procedure TZhpLookupTreeList.ButtonClick(Sender: TObject);
var
AKeyValue: Variant;
begin
AKeyValue := DataController.GetKeyFieldsValues;
case TcxButton(Sender).Tag of
1: FullCollapse;
2: FullExpand;
end;
LocateByKey(AKeyValue);
end;

procedure TZhpLookupTreeList.CalculateColumsWidth;
begin
FColumnShortName.Width := ViewInfo.ClientRect.Right -
ViewInfo.ClientRect.Left - FColumnNumRec.Width;
end;

procedure TZhpLookupTreeList.CalculatePosition;
var
R: TRect;
DH, DW: Integer;
const
D = 10;
D1 = 2;
begin
SetBounds(1, 1, FPopupWindow.ClientWidth - 2, FPopupWindow.ClientHeight -
FPopupWindow.ViewInfo.SysPanelHeight - 3);
FDropDownWidth := FPopupWindow.ClientWidth - 2;
FDropDownHeight := FPopupWindow.ClientHeight -
FPopupWindow.ViewInfo.SysPanelHeight - 3;
R := FPopupWindow.ViewInfo.CloseButtonRect;
DH := FPopupWindow.ClientHeight - FOldHeight;
DW := FPopupWindow.ClientWidth - FOldWidth;

case FPopupWindow.ViewInfo.SizeGripCorner of
ecoTopLeft:
begin
with FButtonExpand do
SetBounds(R.Left + DW - D - Width, R.Top, Width, Height);
with FButtonCollapse do
SetBounds(FButtonExpand.Left - Width - D1, FButtonExpand.Top, Width,
Height);
end;
ecoTopRight:
begin
with FButtonCollapse do
SetBounds(R.Right + D, R.Top, Width, Height);
with FButtonExpand do
SetBounds(FButtonCollapse.Left + FButtonCollapse.Width + D1,
FButtonCollapse.Top, Width, Height);
end;
ecoBottomLeft:
begin
with FButtonExpand do
SetBounds(R.Left + DW - D - Width, R.Top + DH, Width, Height);
with FButtonCollapse do
SetBounds(FButtonExpand.Left - Width - D1, FButtonExpand.Top, Width,
Height);
end;
ecoBottomRight:
begin
with FButtonCollapse do
SetBounds(R.Right + D, R.Top + DH, Width, Height);
with FButtonExpand do
SetBounds(FButtonCollapse.Left + FButtonCollapse.Width + D1,
FButtonCollapse.Top, Width, Height);
end;
end;

FOldHeight := FPopupWindow.ClientHeight;
FOldWidth := FPopupWindow.ClientWidth;
end;

procedure TZhpLookupTreeList.Click;
begin
inherited Click;
if HitTest.HitAtNode then
begin
if HitTest.HitAtImages then
begin
if HitTest.HitNode.HasChildren then
HitTest.HitNode.Expanded := not HitTest.HitNode.Expanded;
end
else if not HitTest.HitAtButton then
begin
if FCanSelectParents then
RecordEnter
else
begin
if not HitTest.HitNode.HasChildren then
RecordEnter
else
HitTest.HitNode.Expanded := not HitTest.HitNode.Expanded;
end;
end;
end;
end;

procedure TZhpLookupTreeList.CustomDrawCell(Sender: TObject; ACanvas: TcxCanvas;
AViewInfo: TcxTreeListEditCellViewInfo; var ADone: Boolean);
begin
if AViewInfo.Node = nil then
Exit;
if AViewInfo.Node.Selected then
begin
ACanvas.Brush.Color := clHighlight;
ACanvas.Font.Color := clHighlightText;
end;
end;

procedure TZhpLookupTreeList.DblClick;
begin
inherited DblClick;
end;

function TZhpLookupTreeList.DoEditing(AItem: TcxCustomInplaceEditContainer):
Boolean;
begin
Result := False;
end;

procedure TZhpLookupTreeList.DoOnColumnSizeChanged(AColumn: TcxTreeListColumn);
begin
inherited DoOnColumnSizeChanged(AColumn);
CalculateColumsWidth;
end;

procedure TZhpLookupTreeList.GetNodeImageIndex(Sender: TObject;
ANode: TcxTreeListNode; AIndexType: TcxTreeListImageIndexType;
var AIndex: TImageIndex);
begin
if ANode.HasChildren then
begin
if ANode.Expanded then
AIndex := FImageIndexExpand
else
AIndex := FImageIndexCollapse;
end
else
AIndex := FImageIndex;
end;

procedure TZhpLookupTreeList.HandlerCloseUp(AEdit: TcxCustomLookupComboBox);
begin
FEdit := AEdit;
FPopupWindow.OnResize := nil;
FPopupWindow.OnShow := nil;
Parent := FParentControl;
FEdit.ActiveProperties.DataController.OnFilterRecord := nil;
FEdit.ActiveProperties.OnChange := FHandlerLCBPropertiesChange;
FButtonCollapse.Parent := FParentControl;
FButtonExpand.Parent := FParentControl;
if (FEdit <> nil) and not FEdit.ActiveProperties.Grid.Visible then
FEdit.Properties.Grid.Visible := True;
end;

procedure TZhpLookupTreeList.HandlerInitPopup(AEdit: TcxCustomLookupComboBox);
begin
FEdit := AEdit;
if (FEdit <> nil) and (FEdit.PopupWindow <> nil) then
begin
if not FCanSelectParents and not Assigned(FEdit.ActiveProperties.DataController.OnFilterRecord) then
FEdit.ActiveProperties.DataController.OnFilterRecord := LCBFilterRecord;
if FEdit.ActiveProperties.Grid.Visible then
FEdit.ActiveProperties.Grid.Visible := False;
FHandlerLCBPropertiesChange := FEdit.ActiveProperties.OnChange;
FEdit.ActiveProperties.OnChange := LCBPropertiesChange;
// AfterSorting(nil);
FEdit.ActiveProperties.IncrementalFiltering := False;
FPopupWindow := FEdit.PopupWindow;
FPopupWindow.OnResize := PopupWindowResize;
FPopupWindow.OnShow := PopupWindowShow;
Parent := FPopupWindow;
FullCollapse;
LocateByKey(FEdit.EditingValue);
end;
end;

procedure TZhpLookupTreeList.KeyDown(var Key: Word; Shift: TShiftState);
begin
inherited KeyDown(Key, Shift);
if Key = VK_RETURN then
RecordEnter;
end;

procedure TZhpLookupTreeList.LocateByKey(AKeyValue: Variant);
var
ANode: TcxTreeListNode;
begin
ANode := FindNodeByKeyValue(AKeyValue, FColumnKey);
if ANode <> nil then
begin
if not ANode.IsVisible then
ANode.MakeVisible;
ANode.Focused := True;
TopVisibleNode := ANode;
end;
end;

procedure TZhpLookupTreeList.LCBFilterRecord(ADataController:
TcxCustomDataController; ARecordIndex: Integer; var Accept: Boolean);
var
ANode: TcxTreeListNode;
begin
ANode := FindNodeByKeyValue(ADataController.GetValue(ARecordIndex, 2), FColumnKey);
if ANode <> nil then
Accept := not ANode.HasChildren;
end;

procedure TZhpLookupTreeList.LCBPropertiesChange(Sender: TObject);
begin
LocateByKey(FEdit.EditingValue);
if Assigned(FHandlerLCBPropertiesChange) then
FHandlerLCBPropertiesChange(FEdit);
end;

procedure TZhpLookupTreeList.PopupWindowResize(Sender: TObject);
begin
if FPopupWindow.Visible then
CalculatePosition;
end;

procedure TZhpLookupTreeList.PopupWindowShow(Sender: TObject);
begin
FButtonCollapse.Parent := FPopupWindow;
FButtonCollapse.OnClick := ButtonClick;
FButtonExpand.Parent := FPopupWindow;
FButtonExpand.OnClick := ButtonClick;
FOldHeight := FPopupWindow.ClientHeight;
FOldWidth := FPopupWindow.ClientWidth;
CalculatePosition;
end;

procedure TZhpLookupTreeList.RecordEnter;
begin
FEdit.EditValue := FColumnKey.Value;
FEdit.PostEditValue;
FPopupWindow.CloseUp;
end;

procedure TZhpLookupTreeList.Resize;
begin
inherited Resize;
CalculateColumsWidth;
end;

procedure TZhpLookupTreeList.WMAfterSorting(var Message: TMessage);
begin
FColumnNumRec.SortOrder := soAscending;
end;

end.
[/more]
Автор: rdenk1
Дата сообщения: 30.08.2010 11:05

Цитата:
А разве у вас не выделяется вся строка/строки? Давайте скриншот, а лучше набросайте простой пример, иллюстрирующий проблему.

Строки выделены, а по del удаляется не строки, а просто ячейка.

В этом примере удалится только число 66 при нажатии del.
Автор: marser
Дата сообщения: 30.08.2010 11:15
X11

Цитата:
cxLookupCombobox.ImmediateDropDown := true
когда фокус попадает на cxLookupCombobox, то список не выпадает, это нормально?

Нормально. Сразу выпадает при cxLookupCombobox.DropDownListStyle := lsFixedList, и то, если мышкой щелкнешь.
Автор: salexn1
Дата сообщения: 30.08.2010 11:15
rdenk1
Так нужно либо самому обрабатывать, либо включить RowSelect true И выключить Editor...
Автор: X11
Дата сообщения: 30.08.2010 11:25

Цитата:
Нормально. Сразу выпадает при cxLookupCombobox.DropDownListStyle := lsFixedList, и то, если мышкой щелкнешь.

так я ж о том, чтобы не мышкой, а при любом способе получения фокуса


у меня
cxLookupCombobox.DropDownListStyle := lsFixedList

и без дополнительной строки
TcxLookupComboBox(sender).DroppedDown := true;
не выпадает
Автор: DarkDaver
Дата сообщения: 30.08.2010 11:34
Ещё раз задам вопрос. Он весьма меня интересует, так что простите за флуд.

Как мне провести группировку в гриде(XtraGrid). но так что бы не все элементы(строки) попали в группы, а только те которых в группе окажется больше 1 элемента.
То есть если в группе один элемент, то нужно выводит не группу а сам элемент.
Автор: rdenk1
Дата сообщения: 30.08.2010 13:43
Попытался сам обработать cxGrid1DBTableView1KeyDown
GetKeyboardState(State);
if ((State[vk_Control] and 128)=0)and(key=VK_DELETE) then
//проверить, что выделены строки
if cxgrid1dbtableview1.Controller.SelectedRowCount>0 then begin
key:=0;
//послать сообщение Ctrl+Del
SendMessage(cxgrid1.Handle, WM_KEYDOWN,Ord('ctrl'+'delete'),0);
SendMessage(cxgrid1.Handle, WM_CHAR,Ord('ctrl'+'delete'),0);
SendMessage(cxgrid1.Handle, WM_KEYUP,Ord('ctrl'+'delete'), 0 );
end;
в отладчике смотрю - этому код не выполняется совсем. Как надо правильно обрабатывать?
Автор: marser
Дата сообщения: 30.08.2010 13:49
rdenk1
Если ячейка находится в состоянии редактирования, то срабатывает событие OnEditKeyDown
Автор: rdenk1
Дата сообщения: 30.08.2010 14:17
Спасибо, получилось
Автор: vladman
Дата сообщения: 30.08.2010 14:44
rdenk1

Цитата:
В этом примере удалится только число 66 при нажатии del.

У вас установлено OptionsBehavior.AlwaysShowEditor в True. Это и есть причина такого поведения. Вы так и задумывали?
Автор: rdenk1
Дата сообщения: 30.08.2010 15:16
Про alwaysshoweditor не подумал. Да, теперь все нормально.
Автор: AvGSoft
Дата сообщения: 31.08.2010 08:34
Есть cxGrid следующей структуры
cxGrid
cxGridLevel1 - cxGridDBTableView1
cxGridLevel2 - cxGridDBTableView2
cxGridLivel3 - cxGridDBTableView3
каким образом можно определить какой view(level) сейчас находиться в фокусе.
Пробывал FocusedView, ActiveLevel, ActiveView правильно работает только с 1 и 2. Если 3 в фокусе все равно говорит что 2.
Автор: X11
Дата сообщения: 31.08.2010 09:07

Цитата:
Если 3 в фокусе все равно говорит что 2.

Что за три, что за два?
Код можешь показать?
Автор: AvGSoft
Дата сообщения: 31.08.2010 09:40
X11

1,2,3 - это номера view'ов

Код:
    if (cxGrid->FocusedView == cxGridDBTableView2)
    {
     <действия>
    }
    else if (cxGrid->FocusedView == cxGridDBTableView3)
    {
<действия>
    }
Автор: vladman
Дата сообщения: 31.08.2010 09:56
AvGSoft

Цитата:
cxGrid->FocusedView == cxGridDBTableView3

Обратите внимание на раздел справки *Pattern and Clone Views*.
ms-help://borland.bds5/ExpressQuantumGrid6.BDS5/ExpressQuantumGrid6/IDH_Fundamentals_PatternCloneViews.htm

Код: cxGrid->FocusedView->PatternGridView == cxGridDBTableView3
Автор: AvGSoft
Дата сообщения: 31.08.2010 09:58
vladman
Будем копать, большое спасибо.
Автор: AvGSoft
Дата сообщения: 31.08.2010 16:28
Еще столкнулся с проблемой есть на ribbon'e TcxBarEditItem(Properties->ComboBox) в который грузиться список, как можно программно выбрать из списка значение.
В обычном cxComboBox можно через ItemIndex, а как здесь ума не приложу.
Пытаюсь так ((TcxComboBoxProperties*)cxBarEditItem1->Properties) - но пока не нашел нужного свойства как выкрутить.
Автор: vladman
Дата сообщения: 31.08.2010 18:04
AvGSoft

Цитата:
TcxBarEditItem(Properties->ComboBox) в который грузиться список, как можно программно выбрать из списка значение.

Установить необходимое значение в свойство EditValue.

Добавлено:
Например, так

Код: <Your>cxBarEditItem.EditValue := TcxComboBoxProperties(<Your>cxBarEditItem.Properties).Items[4];
Автор: X11
Дата сообщения: 01.09.2010 11:00
Вопрос по сохранению высоты строк в cxGrid. Её что, отдельно сохранять или она по идее тоже должна сохранятся стандартным методом StoreToIniFile?
Автор: GRES
Дата сообщения: 01.09.2010 18:04
в cxGrid сортирую данные , как отсортировать также связанный с ним DataSource?
Синхронизация включина. Для фильтрации синхронизация работает.
Как быть при сортировке?
Автор: salexn1
Дата сообщения: 01.09.2010 18:21
GRES
Никак... DataSource вообще не сортируется, а DataSet, который связан с ним, в общем случае не сортируется.
Если юзается TClientDataSet или TMemoryDataSet то еще можно и то не для всех типов полей. Например, cxGrid корректно сортирует Lookup поля, но TClientDataSet так не отсортит...
Автор: GRES
Дата сообщения: 01.09.2010 18:47
salexn1
конечно имел ввиду
DataSet - в моем случае FIBDataSet
Спасибо за ответ.
Автор: vladman
Дата сообщения: 02.09.2010 00:46
X11

Цитата:
Вопрос по сохранению высоты строк в cxGrid. Её что, отдельно сохранять или она по идее тоже должна сохранятся стандартным методом StoreToIniFile?

Проверить самому - ну правда быстрее чем печатать 146 символов ).
GRES

Цитата:
Синхронизация включина. Для фильтрации синхронизация работает.

Интересно как это? Что в FIBDataSet строится WHERE Clause на основании фильтра вашего TableView? Или что там у вас?
Автор: X11
Дата сообщения: 02.09.2010 08:55

Цитата:
в cxGrid сортирую данные , как отсортировать также связанный с ним DataSource?

определяй порядок после сортировки и добавляй в запрос order by, потом переоткрывай запрос

EhLib умеет сортировать SQL направленные датасеты.

Добавлено:

Цитата:
Проверить самому - ну правда быстрее чем печатать 146 символов ).

Не сохраняется - это однозначно, почему и спросил. Меня волнует можно ли это включить в список сохранения/восстановления или просто самом писать. Ведь компоненты-то сами по себе очень мощные, чего там только нет, вагон и маленькая тележка методов и свойств... вот и спросил, может можно средствами грида как-то заставить сохранять/восстанавливать высоту строк?
Может строки и сохраняются/восстанавливаются, _НО_ при установке определённых свойств в нужные значения. Ведь для высоты строк там несколько свойств.
Автор: vladman
Дата сообщения: 02.09.2010 09:20
X11

Цитата:
Не сохраняется - это однозначно, почему и спросил

Уже есть сэжешн по этому поводу _http://beta.devexpress.com/Support/Center/p/Q261526.aspx, посмотрите. Также обратите внимание на предложенный механизм и ссылку на пример решения проблемы.
Автор: Andryshok
Дата сообщения: 02.09.2010 11:52
Подскажите такую штуку
есть cxGrid с настроенным стилем

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

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


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