線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2588
推到 Plurk!
推到 Facebook!

ShowMessage和SetFocus問題請教

尚未結案
cashxin2002
版主


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-25 00:18:55 IP:63.84.xxx.xxx 未訂閱
各位前輩 如下程式碼﹕ procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text = '' then ShowMessage('無內容') else Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('Select * From 學生.db Where 姓名=:NAME'); Query1.Params[0].Value := Edit1.Text; Query1.Open; end; 小弟想在其中加入如果查詢不到資料時(即目前資料表中無相同Edit1中的內容)﹐出現ShowMessage('無相符合資料')﹐該如何寫程式碼﹖ 另外﹐如果查詢不到資料或者Edit1中沒有資料時﹐在以上的程式碼處理完成后﹐該如果在ShowMessgae之后將焦點回到Edit1上﹖ 謝謝﹗ 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/06/25 00:24:09
------
忻晟
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-25 00:43:48 IP:203.204.xxx.xxx 未訂閱
cashxin2002, 您好 (1)如果查詢不到資料時(即目前資料表中無相同Edit1中的內容)﹐出現ShowMessage('無相符合資料'),code如下寫在Query1.Open之後 if Query1.RecordCount = 0 then ShowMessage('無相符合資料') (2)如果查詢不到資料或者Edit1中沒有資料時﹐在以上的程式碼處理完成后﹐該如果在ShowMessgae之后將焦點回到Edit1上? code如下寫在ShowMessage('無相符合資料')之後 Edit1.SetFocus    希望這部分Delphi與BCB相同 ================================= <>涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 <>是非終日有,不聽自然無 <>天下本無事,庸人自擾之
cashxin2002
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-25 01:02:23 IP:63.84.xxx.xxx 未訂閱
謝謝前輩的指點﹒ 1﹒將ShowMessage的程式碼寫在Query1的Open之后﹐那樣﹐在Edit1沒有輸入內容而進行查詢動作時﹐也會出現此ShowMessage(判斷Edit1是否有輸入內容的ShowMessage會先出現)﹐這樣的話﹐証明以下程式碼﹕ if Edit1.Text = '' then ShowMessage('無內容') else 也具有Query1.Open的功能﹐但這里并沒有加入此類的程式碼﹐是何原因﹖ 2﹒ShowMessage程式之后再加入Edit1.SetFocus﹐程式會不進行執行﹐應該是跟ShowMessage的出現有沖突﹐因為視窗還停留在ShowMessage中﹐并未回到Form1﹒ 謝謝﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-25 01:29:50 IP:203.204.xxx.xxx 未訂閱
cashxin2002, 您好 (1)您的意思是要Edit1.Text沒有輸入的話就不繼續下面的動作嗎?如果是在ShowMessage('無內容')之後增加exit;或是Edit1.SetFocus (2)按下ShowMessage的Button之後,焦點應該就會回到Edit1上了。    試試看。我是以BCB的寫法與觀念,或許會與Delphi有所不同,如果真的不行的話,就得請 > ================================= <>涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 <>是非終日有,不聽自然無 <>天下本無事,庸人自擾之
cashxin2002
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-25 01:36:58 IP:63.84.xxx.xxx 未訂閱
1﹒在ShowMessage('無內容')之後增加exit;或是Edit1.SetFocus; 出現如下錯誤﹕[Error] Unit1.pas(35): 'END' expected but 'ELSE' found 2﹒按下ShowMessage的Button后﹐焦點就回到procedure TForm1.Button1Click(Sender: TObject);中的Button1了﹒ 請教前輩﹗謝謝﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
cashxin2002
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-25 02:08:07 IP:63.84.xxx.xxx 未訂閱
謝謝tech_state前輩的指點﹒ 小弟測試出該在程式碼中加入begin..end的語法﹐可以終止其中一些的動作而達到目前﹐程式碼如下﹕ procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text = '' then begin ShowMessage('無內容'); Edit1.SetFocus; end else begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('Select * From 學生.db Where 姓名=:NAME'); Query1.Params[0].Value := Edit1.Text; Query1.Open; if Query1.RecordCount = 0 then ShowMessage('無相符合資料'); Edit1.SetFocus; end; end; 送上一份晚到的恭賀﹕ 恭賀tech_state前輩榮登五星﹗(實在不好意思﹐去上海十几天﹐剛剛才發現﹐希望不要介意) 努力,相信會獲得美麗! 忻晟
------
忻晟
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-25 02:56:02 IP:61.216.xxx.xxx 未訂閱
改為這樣...
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Edit1.Text = '' then
    begin
      ShowMessage('無內容');
      Edit1.SetFocus;
      Exit;
    end
  else
    begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('Select * From 學生.db Where 姓名=:NAME');
      Query1.Params[0].Value := Edit1.Text;
      Query1.Open;
        if Query1.isEmpty then
        begin
        ShowMessage('無相符合資料');
        Edit1.SetFocus;
        end;
        Query1.Close;//要記的把Query1 Clsoe掉  
    end;
end;
TRY TRY SEE
發表人 - chih 於 2003/06/25 02:58:56
系統時間:2024-06-26 23:41:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!