Form과 Grid에 OnMouseWheel에 동일한 스크롤 이벤트를 주고
  
var 
  AControl: TControl; 
  AGridSite: TcxGridSite; 
begin 
  AControl := nil; 
  AGridSite := nil; 

  AControl := FindVCLWindow(MousePos); 
  if AControl is TcxGridSite then 
  begin 
    AGridSite := AControl as TcxGridSite; 
    if (AGridSite.GridView.ClassType = TcxGridDBTableView) or 
      (AGridSite.GridView.ClassType = TcxGridTableView) then 
    begin 
      if WheelDelta > 0 then 
        AGridSite.GridView.Site.ScrollContent(dirUp) 
      else 
        AGridSite.GridView.Site.ScrollContent(dirDown); 

      Handled := true; 
    end; 
  end;
을 하게 되면 Mouse cursor 밑의 Control을 기준으로 Scroll하게 된다.
Posted by Revers Tuna
,
  
uses
  cxDrawUtils;
type
  TcxViewInfoAcess = class(TcxGridTableDataCellViewInfo);
  TcxPainterAccess = class(TcxGridTableDataCellPainter);

var
  APainter: TcxPainterAccess;
begin
  APainter := TcxPainterAccess(TcxViewInfoAcess(AViewInfo).GetPainterClass.Create(ACanvas, AViewInfo));

  try
    with TcxCustomTextEditViewInfo(AViewInfo.EditViewInfo) do
    begin
      TextRect.Left := TextRect.Left + 1;
      DrawTextFlags := CXTO_CENTER_VERTICALLY or CXTO_WORDBREAK;
    end;

    APainter.DrawContent;
  finally
    APainter.Free;
  end;
end;
Posted by Revers Tuna
,
cxRadioGroupItem Eabled/Disabled
  
type
TcxRadioGroupItemAccess = class(TcxRadioGroupItem);
  
begin
  TcxRadioGroupItemAccess(cxRadioGroup1.Properties.Items[0]).Enabled := False;
end;
Posted by Revers Tuna
,
[Original]
  
procedure DrawHeader(ACanvas: TcxCanvas; const ABounds, ATextAreaBounds: TRect;
  ANeighbors: TcxNeighbors; ABorders: TcxBorders; AState: TcxButtonState;
  AAlignmentHorz: TAlignment; AAlignmentVert: TcxAlignmentVert; AMultiLine, AShowEndEllipsis: Boolean;
  const AText: string; AFont: TFont; ATextColor, ABkColor: TColor;
  AOnDrawBackground: TcxDrawBackgroundEvent = nil; AIsLast: Boolean = False;
  AIsGroup: Boolean = False); virtual;
[Code]
  
var
  ACanvas: TcxCanvas;
begin
    ACanvas := TcxCanvas.Create(StrGrdResult2.Canvas);

    RootLookAndFeel.SkinPainter.DrawHeader(ACanvas, DrawRect, DrawTextRect, [], cxBordersAll, cxbsNormal,
      taCenter, vaCenter, False, False, AText, ACanvas.Font,
      RootLookAndFeel.SkinPainter.DefaultHeaderTextColor, RootLookAndFeel.SkinPainter.DefaultHeaderColor);
// Comment 
DrawRect : Draw Header Rect to Apply Control 
DrawTextRect : Draw Header Text Rect to Apply Control 
AText : Header Caption


'DevExpress' 카테고리의 다른 글

TcxImageCombo text wordwrap in TcxGrid  (0) 2019.01.24
cxRadioGroup Item Enable/Disable  (0) 2018.09.06
TcxButton등에 png이미지 적용하기  (0) 2018.08.31
DevExpress Quantom Grid Scroll  (0) 2018.08.30
퀀텀 그리드 색칠 하기  (0) 2015.12.03
Posted by Revers Tuna
,
Using png image file into DevExpress pack (ex. TcxButton, .... etc)
  
uses dxGDIPlusClasses;

var
  p: TdxPNGImage;
begin
  p := TdxPNGImage.Create;

  try
    p.LoadFromFile('image.png');
    cxButton1.Glyph := p.GetAsBitmap;
    //(same. cxButton1.OptionsImage.Glyph := p.GetAsBitmap;)
  finally
    p.Free;
  end;
end;

Posted by Revers Tuna
,

코딩으로 GridView를 스크롤 할때...

GridView.Controller.Scroll(AScrollBarKind: TScrollBarKind; AScrollCode: TScrollCode; var AScrollPos: Integer);


ex) 

var

  ScrollPos: Integer;


GridView.Cotroller.Scroll(vsVertical, scPageUp, ScrollPos);


<Vcl.Forms>


TScrollBarKind = (sbHorizontal, sbVertical);


<Vcl.StdCtrls>


const

  scLineUp = System.UITypes.TScrollCode.scLineUp;

  scLineDown = System.UITypes.TScrollCode.scLineDown;

  scPageUp = System.UITypes.TScrollCode.scPageUp;

  scPageDown = System.UITypes.TScrollCode.scPageDown;

  scPosition = System.UITypes.TScrollCode.scPosition;

  scTrack = System.UITypes.TScrollCode.scTrack;

  scTop = System.UITypes.TScrollCode.scTop;

  scBottom = System.UITypes.TScrollCode.scBottom;

  scEndScroll = System.UITypes.TScrollCode.scEndScroll;


type

  TScrollCode = System.UITypes.TScrollCode;



Posted by Revers Tuna
,

퀀텀 그리드를 사용하면서 그리드에 색을 입히는 방법은 여러가지가 있다.

대표적으로 OnCustomDrawCell 이벤트를 이용하는 방법과 StyleRepository를 이용하는 방법이 있지만 OnCustomDrawCell 이벤트를 사용하는 방법이 무난하다.

OnCustomDrawCell이벤트는 GridView와 GridVeiw.Column 즉, 각 컬럼에 따로 따로 있지만 GridView에 있는 것이 좀더 포괄적을 사용이 된다.


GridView.OnCustomDrawCell에서는 인자로 AViewInfo: TcxGridTableDataCellViewInfo가 넘겨지게 되는데 이 색을 입힐때는 AViewInfo를 조건으로 이용하면 좋다.

AViewInfo는 현재 Draw되는 Cell의 정보를 가지게 된다.


ex)

if AViewInfo.Index = "색을 칠하려는 컬럼 Index" then

  if AViewInfo.GridRecord.Values["조건 컬럼 Index"] = "조건" then 

  begin

    ACanvas.Brush.Color := "원하는 색상"

    ACanvas.Font.Color := "원하는 Font 색상"

  end;

end;


if AViewInfo.GridRecord.Focused then

begin

  ACanvas.Brush.Color := clHighLight;

  ACanvas.Font.Color := clHighLightText;

end;


위 명령어 에서

 - if AViewInfo.Index = "색을 칠하려는 컬럼 Index" then 는 특정 컬럼에만 색을 칠할때 이용하면 된다. 이 조건이 없을 경우 Record 전체가 되상이 된다.

 - if AViewInfo.GridRecord.Values["조건 컬럼 Index"] = "조건" then 는 색을 칠하는 조건이 되는데 "조건 컬럼 Index"는 자신이 될수도 있고 그렇지 않을수도 있다. 즉, 동일 Record의 다른 Cell의 값을 참조 할 수 있다.

 - if AViewInfo.GridRecord.Focused then 는 해당 그리드를 선택 하였을 때 즉, Recod에 포커스가 있을때만 동작 한다.


Posted by Revers Tuna
,

cxGrid.Controller.EditingController.ShowEdit(cxGrid.Controller.FocusedItem);

'DevExpress' 카테고리의 다른 글

DevExpress Quantom Grid Scroll  (0) 2018.08.30
퀀텀 그리드 색칠 하기  (0) 2015.12.03
사용자 SKIN 적용  (0) 2015.08.05
[퀀텀그리드] 코딩으로 Filter 적용  (0) 2015.05.15
[퀀텀그리드] 현재 Record의 Expand값  (0) 2015.05.06
Posted by Revers Tuna
,

사용자 SKIN 적용

DevExpress 2015. 8. 5. 09:55

cxGrid의 스킨을 Application안에 포함할 경우 프로그램의 크기가 엄청나게 증가하는것을 알수 있다.

그렇기 때문에 DevExpress에서는 SkinRes라는 각 Skin파일을 별도로 제공하고 있다.

전체 Skin을 대상으로 사용하려면 AllSkins.skinres를 사용하고 전체 스킨이 필요하지 않을 경우 필요한 각 "스킨.skinres"를 사용하면 된다.


uses

  dxSkinsDefaultPainters


var

  vSkinFile: string;

begin

  vSkinFile := "Skin Files Path";


  if FileExists(vSkinFile) then

  begin

    dxSkinsUserSkinLoadFromFile(vSkinFile);

   

    dxSkinController1.NativeStyle := False;
    dxSkinController1.SkinName    := 'UserSkin';
    dxSkinController1.UseSkins    := True;
  end;
end;


Posted by Revers Tuna
,

AGridView.DataController.Filter.AddItem(AParent: TcxFilterCriteriaItemList; AItemLink: TObject; AOperatorKind: TcxFilterOperatorKind; const AValue: Variant; const ADisplayValue: string):

ex.) 
with AGridView.DataController.Filter do
 begin
   Clear;
   AddItem(nil, FilterColumn, foEqual, ACondition, '');
   Active := True;
 end;


'DevExpress' 카테고리의 다른 글

DevExpress Quantom Grid Scroll  (0) 2018.08.30
퀀텀 그리드 색칠 하기  (0) 2015.12.03
퀀텀그리드 셀 선택 상태로 만들기  (0) 2015.09.24
사용자 SKIN 적용  (0) 2015.08.05
[퀀텀그리드] 현재 Record의 Expand값  (0) 2015.05.06
Posted by Revers Tuna
,