자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey 폼을 생성할때 ItemIndex를 설정하면 combobox1change 이벤트발생. 오류인듯 -_-
2018.08.29 11:06
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
아래와 같이 코드를 작성했습니다.
그런데 VCL에선 문제가 없던것이 FMX에서는 발생합니다. 이것 때문에 구글링을 했는데
속시원한 방법이 없습니다.
현상 : itemindex 를 프로그램에서 설정하면 onChange 이벤트가 발생합니다.
VCL에서 사용자가 선택했을 때만 onChange 이벤트 실행됩니다.
FMX에서는 itemindex 를 프로그램에서 설정해도 onChange 이벤트 실행됩니다.
이 현상은 FMX의 오류인가요? VCL처럼 하려면 어떤 해결책이 있는지요?
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
showmessage('teat');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with FDQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select sido from tbl_bjcode group by sido order by sido');
Open ;
ComboBox1.Clear;
combobox1.Items.Add('시도선택');
while not Eof do
begin
ComboBox1.Items.Add(FieldByName('sido').AsString);
next ;
end;
end;
ComboBox1.ItemIndex := 0; <- 이 부분에서 ComboBox1Change 이벤트 발생
end;
댓글 2
Firemonkey 폼을 생성할때 ItemIndex를 설정하면 combobox1change 이벤트발생. 오류인듯 -_-
2018.08.29 11:06
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
아래와 같이 코드를 작성했습니다.
그런데 VCL에선 문제가 없던것이 FMX에서는 발생합니다. 이것 때문에 구글링을 했는데
속시원한 방법이 없습니다.
현상 : itemindex 를 프로그램에서 설정하면 onChange 이벤트가 발생합니다.
VCL에서 사용자가 선택했을 때만 onChange 이벤트 실행됩니다.
FMX에서는 itemindex 를 프로그램에서 설정해도 onChange 이벤트 실행됩니다.
이 현상은 FMX의 오류인가요? VCL처럼 하려면 어떤 해결책이 있는지요?
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
showmessage('teat');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with FDQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select sido from tbl_bjcode group by sido order by sido');
Open ;
ComboBox1.Clear;
combobox1.Items.Add('시도선택');
while not Eof do
begin
ComboBox1.Items.Add(FieldByName('sido').AsString);
next ;
end;
end;
ComboBox1.ItemIndex := 0; <- 이 부분에서 ComboBox1Change 이벤트 발생
end;
VCL과 FMX의 TComboBox는 클래스 이름은 갖지만, 완전히 다른 컴포넌트 입니다.
즉, 동작에 차이가 많을 수 있습니다.
아시다 시피, 델파이는 내부 라이브러리(VCL, FMX, RTL) 소스코드를 제공합니다.
해당 부분의 소스코드를 참고하셔서 기능을 맞춰가시기 바랍니다.
제가 살펴보니, FMX에서 ComboBox1.ItemIndex를 설정하면 무조건 OnChange 이벤트가 발생하는 것으로 확인했습니다.
임시적으로, 초기화 여부를 판단하는 변수등을 사용해 초기화 시 로직이 진행되지 않도록 우회하는 것이 좋을 것 같습니다.
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)