반응형
퀀텀그리드(DevExpress QuantumGrid)에서 데이터에서 문자 검색 기능
FindRecordIndexByText 메서드 대해서는 문자열 지원 합니다.
FindRecordIndexByText 메서드 설명
해당 레코드를 DeleteRecord 삭제 기능에서 사용되는 예시 입니다.
procedure TForm1.Button1Click(Sender: TObject);
Var
iRow : Integer;
begin
iRow := cxGrid1DBTableView1.DataController.FindRecordIndexByText(0 , 0 ,'Rushmac' ,False ,True ,True);
if iRow >-1 then
cxGrid1DBTableView1.DataController.DeleteRecord(iRow); // 찾은 레코드 삭제
// **FindRecordIndexByText 메서스 설명 **
// FindRecordIndexByText(찾을시작위치,
// Index 위치,
// 찾을문자값,
// [True(일부 찾기),False(문자열이 완전히 동일)],
// [True(시작위치 부터 아래로 찾다가 없으면 다시 처음부터 검색),False(아래 또는 위로 찾다가 자기 자신을 리턴),
// [True(아래로 찾는다), False(위로 찾는다))
//
end;
FindRecordIndexByText 단점 중 중간 문자열 검색 안되는 현상
의문점이 생기는 부분 대해서는 "ABC1234" 문자열에서 "BC1" 또는 "123"와 같은 부분 문자열 지원 하지 않는 문제가 생길 수 있습니다.
"ABC1234"의 "ABC"와 같은 시작 부분 문자열만 FindRecordIndexByText 메서드만 검색하기 때문에 이런 경우에는 레코드를 반복으로 검색할 수 있습니다.
procedure TForm1.Button1Click(Sender: TObject);
var
I, ARecordIndex: Integer;
begin
for I := 0 to cxGrid1DBTableView1.DataController.FilteredRecordCount - 1 do
begin
ARecordIndex := cxGrid1DBTableView1.DataController.FilteredRecordIndex[I];
if (Pos('Rushmac', cxGrid1DBTableView1.DataController.Values[ARecordIndex, cxGrid1DBTableView1Name.Index]) <> 0) then
cxGrid1DBTableView1.DataController.FocusedRecordIndex := ARecordIndex;
end;
cxGrid1.SetFocus;
end;
마무리
FindRecordIndexByText 메서스 통해 원하는 레코드 위치를 찾을 수 있지만, 단점 처럼 중간 문자열 찾을 경우에는 할 수없이 For문으로 반복 작업이지만, 레코드가 적당한 크기 일 경우에는 큰 문제 없을 것라고 생각 합니다.
반응형
'Developers > Delphi[델파이]' 카테고리의 다른 글
[Delphi] 월말,전월(익월)1일 등등 Date 날짜 구하는 방법 (0) | 2020.08.05 |
---|---|
[Delphi ] idSMTP eMail 발송 기능 (0) | 2020.08.05 |
[Delphi] 숫자 관련함수 (0) | 2020.08.04 |