0

ボタンをクリックして、テックスボックスからパラメーターを取得するデータベースへのクエリを作成したいと思います。そのようなクラス定義を持っています:

DEFINE CLASS myForm as Form
Height = 200
Width = 300
visible = .t.
ADD OBJECT insertBut AS COMMANDBUTTON;
WITH Caption = "insert", width = 70, height = 20, top = 165, left = 10

ADD OBJECT lbl1 as label WITH caption = 'Title', left = 10, top = 10
ADD OBJECT text1 AS TEXTBOX WITH left = 10, top = 25
ADD OBJECT lbl2 as label WITH caption = 'Amount', left = 10, top = 45
ADD OBJECT text2 as textbox WITH left = 10, top = 60
ADD OBJECT lbl3 as label WITH caption = 'Price', left = 10, top = 80
ADD OBJECT text3 as textbox WITH left = 10, top = 95
ADD OBJECT lbl4 as label WITH caption = 'Manufacturer id', left = 10, top = 115
ADD OBJECT text4 as textbox WITH left = 10, top = 130

ADD OBJECT lbl5 as label WITH caption = 'Id', left = 120, top = 10
ADD OBJECT text5 as textbox WITH left = 120, top = 25

PROCEDURE insertBut.click
    USE stock
    INSERT INTO stock (title, price, amount, man_id) values(text1.text, text3.text, text2.text, text4.text)
    browse
ENDPROC

ENDDEFINE

コマンドラインから呼び出す手順

PROCEDURE tform
t = CREATEOBJECT("myform")
t.show
READ events
return
ENDPROC

ボタンinsertButをクリックした後、「エイリアスTEXT1が見つかりません」というエラーが表示されました。私は何を間違っていますか?

4

1 に答える 1

3

insertBut.clickmyForm.insertButではなくmyForm、のコンテキストで実行されますtext1

フォームの他のオブジェクトへの呼び出しの前に を付ける必要がありますTHISFORM


ところで、より良い解決策は、テキスト ボックスをカーソルまたはデータ オブジェクトのいずれかにデータ バインドすることです。カスタム オブジェクトをクラスの説明に明示的に追加するか、カーソルを直接起動または作成することができます。

のメソッドでstockカーソルを開くか確認してから、作成時に各コントロールのプロパティを設定します。例えば:InitmyFormdataSource

ADD OBJECT text1 AS TEXTBOX WITH ;
  left = 10, ;
  top = 25, ;
  dataSource = 'stock.title'
于 2013-10-13T16:24:17.707 に答える