1

Konu: Textbox degerini nasıl alırım?

Sevgili Arkadaşlar,
Şimdi size soracağım soru belki de çok basit gelecek ama ben beceremedim. Lütfen yardım ediniz.
Öğrenmek amacıyla içinde tek bir textbox olan bir form yaptım. Intine de aşağıdaki kodu yazdım. Amacım bu textbox tan bir değer alıp o değeri bir program içinde kullanmak. Ama ne yaptıysam form bu degeri almadan devam ediyor. Bense degeri aldıktan sonra devam etmesini istiyorum.

WITH thisform
If ! Empty(Thisform.text1.Value )
Thisform.text1.Value = Space(10)
        .text1.setfocus
        ENDIF
    .text1.setfocus
    m.butar = CTOD(Thisform.text1.Value)
    thisform.Visible = .f.
    THISFORM.Release
ENDWITH

Yardım edecek arkadaşlara şimdiden çok teşekkür ederim.
Sevgilerimle.
Erdal

2

Re: Textbox degerini nasıl alırım?

oncelikle bir oneri ;
foxpro kodlarini anlasilabilir kilmak icin mouse yada klavye ile komple isaretleyip VFP butonuna basarak syntax coloring ozelligini kullanarak anlasilirligini saglayabilir sin  , kodlar [] icinde code=visualfoxpro /code araliginda islenir.

simdi soruna gelince textbox yazdigin degeri formun tamaminda kullanabilecegin gibi uygulamanin tamaminda da kullanabilirsin

once kodlamayi duzenleyelim bir hatirlatma with..endwith  kullandi isen artik o blok ta forma ait bir isaretleme icin thisform.blabla gibi yazmana gerek yok

Visual Fox Pro
&& form init

With Thisform
    .AddProperty('cTextDeger',.text1.Value) && forma ctextDeger adinda bir property ekledik ve degerini text1 den aldirdik
    With _Screen
        .AddProperty('cTextDeger',.text1.Value)  && uygulamaya ctextDeger adinda bir property ekledik ve degerini text1 den aldirdik
    Endwith
Endwith

istedigimiz anda bir yere bu degeri yazdirmak istersek mesela thisform.label1.caption = thisform.cTextDeger
dedigimizde o degeri alip kullanmis oluruz ayni sekilde
formu kapatip baska bir forma gectik ordada lazim oldu bu sefer thisform.label1.caption = _screen.cTextDeger seklinde
kullanabiliriz.

diyelim form acilisinda orda bir deger yok
text1.lostfocus a

Visual Fox Pro
thisform.cTextDeger = this.value

ve

Visual Fox Pro
_screen.cTextDeger=this.value

diyerek yine istedigimizi elde etmis oluruz

3

Re: Textbox degerini nasıl alırım?

Sevgili Soykan,
Öncelikle ilgin ve zamanın için çok teşekkür ederim.
Ama yazdığın kodu aynen kopyalayıp formun initine yazdıgım zaman

Visual Fox Pro
 


With _Screen

        .AddProperty('cTextDeger',.text1.Value)  && uygulamaya ctextDeger adinda bir property ekledik ve degerini text1 den aldirdik

    Endwith


Yukarıdaki .AddProperty komutuna geldiği zaman
" Unknown Member TEXT1 " hatası veriyor. Bu satırı kaldırdığımda ise form gene değeri almadan kodu sürdürüyor. Yani text1 değeri boş kalıyor.
Sevgi ve teşekkürlerimle.
Erdal

4

Re: Textbox degerini nasıl alırım?

text1 forma koydugun textbox adi sende textbox1 ise o sekle donustur

5

Re: Textbox degerini nasıl alırım?

Erdal,
Isi bastan alsak. Anladigim sen herhangi bir yerden bir form cagirip, orada bir tarih yazmak ve o tarihi cagirdigin yerde kullanmak istiyorsun. Kabaca :

Bir form calistir ve o formda tarih al
ldTarih diye lokal bir degisken yarat
Aldigin tarih degerini ldTarih'e koy

Benim anladigim bu. Simdi gostermeye calisacagim teknik normalde VFP dokumanlarinin gosterdigi bir teknik degil ama cok daha efektif bence (neden dersen o formdan yalnizca bir degil istersen yuzlerce degeri almani sagliyor, hatta daha da ucuk davranip komple database bile alabilirsin).

1) Once bir form yarat. Yarattigin formlarda ve diger objelerde duzgun bir isim vermeyi adet edin. Formun name propertysine frmGetTarih yaz mesela.

2) Bir adet textbox ekle, adini txtTarih yap. Value propertysine {} koy (o zaman VFP otomatikman orada yalnizca tarih girilmesine izin verir).

3) Formun ControlBox'ini .F. olarak ayarla. (Min, Max vs'ye ihtiyacimiz yok)
WindowType: 1 - Modal   (bu formun beklemesini sagliyor)
ShowWindow: 1 - In top level (bunu yapmak zorunda degilsin ama yaparsan bu formun kullanim alani genisler)

4) Formu kapatmak icin bir buton ekle ( "Tamam" butonu ). Buton'un click kodunu su sekilde yaz:

Visual Fox Pro
thisform.Hide()

(Bu onemli ve bizim yaptigimiz numaranin kalbi - Release degil Hide - ya da thisform.Visible = .F.).

Bundan sonra baska seyler ile susleyebilirsin.

Bu form hazir. Sakla (TarihAl.scx oldugunu farzediyorum asagida).

Simdi test koduna gelelim (ki kod ister bir formun buton.click kodu olsun ister bir prg'nin parcasi, ayni):

Visual Fox Pro
local loTarihForm

do form TarihAl name loTarihForm
* Kod bu satir ve sonrakileri calistirmak icin formun goruntuden kalkmasini bekler - (modal form)
* Yani form Release ya da Hide veya Visible=.F. durumlarindan birisi gerceklestiginde buradan devam edecek
 
* Biz thisform.Hide() kullandigimizdan form hala hafizada ve biz onu yukarida name loTarihForm diye baslattigimizdan
* loTarihForm degiskeni o formun referansi.
 
local ldTarih
ldTarih = loTarihForm.txtTarih.Value && formda txtTarih'e girilen degeri al
 
* Formla isimiz bitti
loTarihForm.Release() && formu release et
release loTarihFOrm && degiskeni release et - sadece bunu kullansak da olabilirdi

Bu kadar. Bu teknige kendini alistirirsan, bir form ile mesela raporlama icin, baslangic, bitis tarihleri, secim kriterleri gibi seyleri rahatlikla alabilirsin.

6

Re: Textbox degerini nasıl alırım?

eğer kastettiğin çetin'in dediği şeyse benim daha basit bir önerim var. aynen çetin'in dediği gibi bir modal form oluşturacaksın.
priv m.ldtarih &&--- local olmaz
m.ldtarih=date() &&---- değişkene istediğin değeri vereceksin

do form mymodalform &&---- formdaki textbox un control source'sına m.ldtarih yazacaksın

* tarih değerini aldın. istediğin gibi kullan.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

7

Re: Textbox degerini nasıl alırım?

Sevgili Arkadaşlar,
Sorunumu Çetinin önerdiği yolla kısmen çözdüm. Ama kalan bir iki prüzü de kendi çabalarımla çözebileceğimi sanıyorum. Çözemediğim bir konu olursa gene sizlerin yardımlarına başvururum.
Sevgili Çetine bana konuyu adım adım anlatarak ve çözümü getirecek programı vererek ettiği yardım ve harcadığı zaman için minnettarım.
Sevgilerimle.
Erdal