본문 바로가기

언어/delphi

퀀텀그리드

출처: http://eaglesoft.tistory.com/206

퀀텀그리드에서 컬럼을 클릭할때 나오는 Filter되는 내용만 뽑는방법.
컬럼을 클릭해보면 아시겠지만 엑셀의 Filter처럼 나온다.

var
  AValueList: TcxGridFilterValueList;
  I: Integer;
begin
  AValueList := cxGrid1TableView1.ViewData.CreateFilterValueList;
  try
    cxGrid1TableView1Column1.DataBinding.GetFilterValues( AValueList  , True, False, True);
    with ListBox1.Items do
    begin
      BeginUpdate;
      try
        for I := 0 to AValueList.Count - 1 do
          Add(AValueList[I].Value);
      finally
        EndUpdate;
      end;
    end;
  finally
    AValueList.Free;
  end;
  



출처: http://eaglesoft.tistory.com/204


cxGrid의 내용을 필터를 걸때 사용하는 방법입니다.

일반적인 방법과 다중 조건을 거는 방법 2개를 올립니다.

 

단일 조건의 경우

OR 조건을 이용하여 필터를 거는 방법입니다.

 

컬럼1 like '%는값%' ) or 컬럼2 like '%찾는값%' )

위와 같은 경우 아래와 같이 코딩합니다.

 

그리드TV.DataController.Filter.Clear;
그리드TV.DataController.Filter.Root.BoolOperatorKind := fboOr;
그리드TV.DataController.Filter.Root.AddItem(첫번째 그리드 컬foLike, '%' + 찾을값 + '%'필터내용을 화면에표시할내용 );
그리드TV.DataController.Filter.Root.AddItem(두번째 그리드 컬foLike, '%' + 찾을값 + '%'필터내용을 화면에표시할내용 );
그리드TV.DataController.Filter.Active := true;

 

다중 조건을 거는 방법

상위는 And이고 하위는 OR 조건을 이용하여 필터를 거는 방법입니다.

 

( ( 컬럼1 = '는값' ) or 컬럼2 = '찾는값' ) )

AND

컬럼3 = '찾는값' ) or 컬럼4 = '찾는값' ) )

 

위와 같은 경우 아래와 같이 코딩합니다.

 

  그리드TV.DataController.Filter.BeginUpdate;
  그리드TV.DataController.Filter.Active := False;
  그리드TV.DataController.Filter.Clear;
  그리드TV.DataController.Filter.Root.BoolOperatorKind := fboAnd;


 첫번째Filter := 그리드_증상tv.DataController.Filter.Root.AddItemListfboOr );
 첫번째Filter.AddItem첫번째 그리드 컬foEqual '찾을값', 필터내용을 화면에표시할내용 );
 첫번째Filter.AddItem두번째 그리드 컬foEqual '찾을값', 필터내용을 화면에표시할내용 );

 두번째Filter:= 그리드_증상tv.DataController.Filter.Root.AddItemListfboOr );
 두번째Filter.AddItem세번째 그리드 컬foEqual '찾을값', 필터내용을 화면에표시할내용 );
 두번째Filter.AddItem네번째 그리드 컬foEqual '찾을값', 필터내용을 화면에표시할내용 );

  그리드TV.DataController.Filter.Active := True;
  그리드TV.DataController.Filter.EndUpdate;



출처: http://eaglesoft.tistory.com/201

cxComboBox의 내용을 Code로 조회할때 사용하는 법


cxComboBox의 내용을 조회할때 값외에 코드나 기타 사항을 저장하기 위해 작업하는 내용입니다. 
보여지는 값과 가져와야할 코드의 값을 따로 가져와야 할경우 유용하게 사용할듯 합니다.

type
  포인트레코드 = ^레코드;
  레코드 = record
    Code : String;
    name : String;
    data : Integer;
  end;
 
procedure TForm1.버튼넣기Click(Sender: TObject);
var
  p : 포인트레코드;
  I: Integer;
begin
 
  cxCheckComboBox1.Properties.Items.Clear;
 
  for I := 0 to 10 do
  begin
    New( p );
    p^.Code := IntToStr(i);
    p^.name := '김말동 - ' + IntToStr(i);
    p^.data := i;
 
    with cxCheckComboBox1.Properties.Items.Add do
    begin
      Description := p^.name;
      Tag := Integer( p );
    end;
 
  end;
 
 
end;
 
procedure TForm1.버튼_찾기Click(Sender: TObject);
var
  p : 포인트레코드;
  I: Integer;
begin
 
  ListBox1.Items.Clear;
  for I := 0 to cxCheckComboBox1.Properties.Items.Count - 1 do
  begin
    if cxCheckComboBox1.States[i] = cbsChecked then
    begin
      p := Pointer( cxCheckComboBox1.Properties.Items[i].Tag );
      ListBox1.Items.Add( P^.name );
    end;
  end;
 
end;
 
procedure TForm1.버튼_지우기Click(Sender: TObject);
var
  p : 포인트레코드;
  I: Integer;
begin
 
  for I := 10 downto 0 do
  begin
    p := Pointer( cxCheckComboBox1.Properties.Items[i].Tag );
    Dispose( p );
  end;
 
  cxCheckComboBox1.Properties.Items.Clear;
 
end;


'언어 > delphi' 카테고리의 다른 글

Package의 폼을 메인 폼으로  (0) 2018.04.22
TPaingBox Canvas to Bitmap  (0) 2018.03.30
ZXing.Delphi (Reading QRCode)  (0) 2018.03.30
Delphi QR Code Generator(zxing)  (0) 2018.03.28
계량관리 Eng  (0) 2017.01.25