delphi的edit只有一個onchange事件,沒有專門區分interactivechange與programmaticchange,使用中如何區分是操作修改還是程式中賦值修改,試過modified屬性,對dephi自己的tedit控制元件,好像沒問題,但用第三方控ehlib的tdbnumerediteh,與tms的tadvedit區分不了,有什么辦法區分兩類事件?
uj5u.com熱心網友回復:
這個沒有區分的吧如果是手工賦值,一般都得自己設定一個狀態變數
uj5u.com熱心網友回復:
樓主一定要區別的話,在TEdit.Onchange事件時,找到是否有鍵盤錄入。通過鍵盤錄入,我想能能夠區別的。uj5u.com熱心網友回復:
一般情況,為了程式的一致性,不管是誰導致了值變化,都要做相應處理。但是如果樓主一定要區分,就只好增加一個標志欄位,程式設定前,置一下位, onchange事件里檢查這個標志, 設定完了取消標志位。
uj5u.com熱心網友回復:
右鍵粘貼,就不算,是吧。哎
支持3樓
uj5u.com熱心網友回復:
頂,設定一個變數,在onChange中判斷下!
uj5u.com熱心網友回復:
ifvar flag:Integer;
procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
begin
flag:=1;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
if (not edt1.Text='') and flag=1 then
begin
ShowMessage('人為賦值');
end;
end;
應該是這個意思吧, flag變數為 標志
uj5u.com熱心網友回復:
沒有編譯,意思是 edit中有內容,且在 在edit中按下鍵盤, (內容為字符型,不能是backspace之類的) 就是 用戶人為的動作
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/66170.html
標籤:VCL組件開發及應用
