全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1391
推到 Plurk!
推到 Facebook!

Memo的focus問題

尚未結案
effielee
一般會員


發表:2
回覆:6
積分:1
註冊:2004-03-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-08 17:58:37 IP:211.72.xxx.xxx 未訂閱
想請教一下 如何能讓Memo GetFocus之後,游標能停在第一行的位置呢? 謝謝~
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-08 18:30:24 IP:202.39.xxx.xxx 未訂閱
在 Memo.SetFocus; 後加一行 Memo.SelStart := 0; 試試.    --
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-08 18:42:50 IP:210.68.xxx.xxx 未訂閱
偷吃步,可用,試試吧!!    
var
  BB_DOWN: Boolean;    procedure TForm1.Button1Click(Sender: TObject);
begin
  BB_DOWN:= True;
  Memo1.Lines.Strings[0]:= Memo1.Lines.Strings[0];
  Memo1.SetFocus;
  SendMessage(Memo1.Handle, WM_KEYDOWN, 0, 0);
end;    procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if BB_DOWN then
  begin
    Shift:= [ssCtrl];
    Key:= 36;
    BB_DOWN:= False;
  end;
end;    
不過hagar大大的方法比較簡單,受教了!! 發表人 - jimmy_wei 於 2005/03/08 19:02:59
effielee
一般會員


發表:2
回覆:6
積分:1
註冊:2004-03-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-09 09:36:12 IP:211.72.xxx.xxx 未訂閱
謝謝兩位的指教,    但我試過這兩種方式後卻無法達到我的目的,因為第一行如輸入Enter後游標會停    在第二行第一個位置,我的memo是用來接收掃bar code機器所讀入的號碼,    bar code機讀入號碼後會自動傳Enter到memo1中,    memo1在接收到Eter鍵後會自動判斷號碼是否符合規則,    符合跳至memo2,不符會將memo1內容清空,memo1.setfocus使用者繼續輸入,    但我無法將memo1整個清空(包含Enter鍵),所以會造成回到memo1時游標是停在    第二行,所以我應該要問的是如何將memo的內容(包含Enter)完全清除才是,    真是抱歉了 
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-09 10:29:55 IP:218.167.xxx.xxx 未訂閱
引言: 但我無法將memo1整個清空(包含Enter鍵),所以會造成回到memo1時游標是停在 第二行,所以我應該要問的是如何將memo的內容(包含Enter)完全清除才是,
memo1.clear; //清除內容 memo1.SetFocuse; @瞭解越多.懂得越少@
effielee
一般會員


發表:2
回覆:6
積分:1
註冊:2004-03-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-09 11:00:13 IP:211.72.xxx.xxx 未訂閱
引言: memo1.clear; //清除內容 memo1.SetFocuse;
謝謝指教,不過 Enter還是在,回到memo1後游標還是停在第二行
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-09 11:32:03 IP:210.64.xxx.xxx 未訂閱
你好 我剛剛用chris_shieh的方法測試過是可以的耶!!那你試試看 memo1.lines.clear; //清除內容 memo1.SetFocuse 試試看吧!! Pillar Wang
------
Pillar Wang
effielee
一般會員


發表:2
回覆:6
積分:1
註冊:2004-03-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-09 12:09:18 IP:211.72.xxx.xxx 未訂閱
引言: 你好 我剛剛用chris_shieh的方法測試過是可以的耶!!那你試試看 memo1.lines.clear; //清除內容 memo1.SetFocuse 試試看吧!! Pillar Wang
你好, 因為我的判斷式必須寫在Memo1KeyPress事件中,所以經我測試是無效的 procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then begin Tmemo(Sender).Clear; Tmemo(Sender).SetFocus; end; end;
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-03-09 12:38:04 IP:202.62.xxx.xxx 未訂閱
您好﹗    在判斷式中再加一個key來控制﹐如下﹕
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    begin
      if Memo1.Text <> 'xinsheng' then
        begin
          Memo1.Clear;
          Key := #8;
        end
      else
        begin
          Memo2.SetFocus;
        end;
    end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-03-09 12:44:34 IP:210.64.xxx.xxx 未訂閱
請問你掃入的條碼長度固定嗎?如果固定的話,可以在memo的onChange事件裡面判斷喔!!不然的話可以加一行程式
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    begin
      if Memo1.Text <> 'xinsheng' then
        begin
          Memo1.Clear;
          Key := #8;
        end
      else
        begin
          Memo2.SetFocus;
        end;
    end;
   key := #0;
end;
Pillar Wang
------
Pillar Wang
effielee
一般會員


發表:2
回覆:6
積分:1
註冊:2004-03-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-03-09 13:13:46 IP:211.72.xxx.xxx 未訂閱
謝謝各位的幫忙, 問題解決了 ^^
系統時間:2024-06-02 1:47:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!