PUBLIC obasic_form1 obasic_form1=CREATEOBJECT("basic_form1") obasic_form1.Show local ctext ctext = obasic_form1.returntext && a custom property the form has RELEASE obasic_form1 && I just hid the modal form instead of releasing it, so I could get at the property that has my search string. IF !ISNULL(ctext) && I return .NULL. if the user cancels =messagebox( "I want to search for " + ctext) && just to confirm :-) ELSE =Messagebox("no search today, thanks!") ENDIF RETURN * The following are the class. You could also make your forms visually, of course. ************************************************** *-- Form: basic_form1 (d:\jobs\motorola\temp.scx) *-- ParentClass: form *-- BaseClass: form * DEFINE CLASS basic_form1 AS form Height = 106 Width = 104 DoCreate = .T. Caption = "Form1" WindowType = 1 returntext = "''" Name = "Basic_form1" ADD OBJECT text1 AS textbox WITH ; Alignment = 3, ; Value = .NULL., ; ControlSource = "thisform.returntext", ; Height = 23, ; Left = 0, ; Top = 18, ; Width = 100, ; Name = "Text1" ADD OBJECT label1 AS label WITH ; Caption = "Enter your text:", ; Height = 17, ; Left = 0, ; Top = 0, ; Width = 100, ; Name = "Label1" ADD OBJECT command1 AS commandbutton WITH ; Top = 45, ; Left = 0, ; Height = 27, ; Width = 100, ; Caption = "Okay, go ahead...", ; Name = "Command1" ADD OBJECT command2 AS commandbutton WITH ; Top = 78, ; Left = 0, ; Height = 27, ; Width = 100, ; Caption = "Forget It!", ; Name = "Command2" PROCEDURE Unload this.hide RETURN this.returntext ENDPROC PROCEDURE command1.Click thisform.unload ENDPROC PROCEDURE command2.Click thisform.text1.value = .null. thisform.unload ENDPROC ENDDEFINE * *-- EndDefine: basic_form1 **************************************************>Hi