2013-03-27 1 views
1

TComboBox을 변경하여 텍스트를 입력하거나 Text 속성을 수동으로 설정하면 OnChange 이벤트가 트리거됩니다.Delphi - TComboBox의 OnChange 변경

지금도 ComboBox.Text := 'blah'을 수행하면 OnChange 이벤트가 트리거되지 않으며 입력란에도 입력되지 않습니다.

자손을 만들려고했는데 올바른 방법이라고 생각하지만 실제로 이벤트를 트리거하는 방법을 변경하는 방법을 잘 모르겠습니다.

답변

6

내가 아는 한 최선을 다해 콤보 상자에 입력하면 OnChange 이벤트가 발생합니다. 그러나 텍스트 속성을 수정하는 것은 사실이 아닙니다.

OnChange을 콤보 상자에서 실행하는 방법은 CM_TEXTCHANGED 메시지를 처리하는 것입니다. 이 처리기는 Change 메서드를 호출해야합니다.이 메서드는 OnChange (할당 된 경우)을 호출합니다. 이것이 가장 좋은 방법입니다 이럴,

type 
    TComboBox = class(StdCtrls.TComboBox) 
    protected 
    procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; 
    end; 

procedure TComboBox.CMTextChanged(var Message: TMessage); 
begin 
    inherited; 
    Change; 
end; 
+0

+1 개재 된 클래스를 사용 :

간단한 예를 들어, 여기에 인터 포저 클래스 구현입니다. – jachguate

+0

중간에 클래스가 무엇인지 잘 모르겠습니다 만, 자손 클래스에서이 작업을 수행했습니다. 감사! –

관련 문제