Şimdi Ara

c++ windows form application formlar arası veri aktarımı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
7
Cevap
0
Favori
889
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar bir program yazmaya çalışıyorum ama bir konuda takıldım.

    Diyelim ki 2 formumuz var ve Form2 , Form1 den oluşmuş olsun.

    Form1 de para diye bir int değer olduğunu düşünelim.

    Ben bu değeri Form2 ye göndermek istiyorum ve bu değerin Form2 de işlem gördükten sonra bu
    işlemin Form1 deki parayıda etkilemesini istiyorum.

    Bildiğimiz pointer işlemi yanı.

    Ancak bunu bir türlü c++ ile windows form app. oluştururken yapamadım.

    Form1 de önce nesne oluşturuyorum.

    Form2 fm2 = gcnew Form2(this);

    burdaki this ile Fom2 nin constructor na Form1 classının adresini gönderiyorum ve adress adlı bir değişkende tutuyorum. Böylece Form2 den Form1 e geri gelebiliyorum.

    adress->Show(); yazarak.


    Peki neden ben bu adres ile bu para değerine ulaşamıyorum yani.

    adress->para; şeklinde , kafam baya karıştı işin içinden çıkamıyorum.

    Görüşlerinizi paylaşırsanız çok yardımcı olursunuz.







  • Kullanılan derleyici nedir ? "C++ Builder" mı ? Onunla oluştural VCL kütüphanesindeki "Form"lardan mı bahsediliniyor ?
  • Buzz Lightyear B kullanıcısına yanıt
    visual c++ express (yani visual studio nun 2008 c++ express hali)
  • Public field kullanabilirsin (isimden emin degilim). Getter & Setter yazabilirsin (Form1'e veya Form2'ye) Veya Form2 constructorina degerleri parametre vasitasiyla atabilirsin. Form2'nin showundan once cagirabilecegin ve Form1'den ulasabilecegin bir metod yazabilirsin.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • welrocken W kullanıcısına yanıt
    Bu dediklerin form2 açıkken olmuyor . Yani önce form2 açıkken işlem yapıcam sonra form1 e geri döndüğümde işlemler gerçekleşmiş olacak. Kısacası bana pointer gibi bir kavram lazım form2 de bir değişkeni değiştirdiğimde form1 de de değişmeli çünkü adresini yollamış olucam.

    Hem senin dediklerini yapmam için form1 e ayrı bir buton falan eklemem gerekecek çünkü form2 ye geçtiğimde form1 gizli kalıyor ve zaten çalışmış. Form 2 de işlemler bitince bir butona basarım böylece get-set yada metotlarla çekerim form2 den veri. Ancak benim istediğim form2 deyken bunların gerçekleşmesi.
  • quote:

    Orijinalden alıntı: hellbas

    Bu dediklerin form2 açıkken olmuyor . Yani önce form2 açıkken işlem yapıcam sonra form1 e geri döndüğümde işlemler gerçekleşmiş olacak. Kısacası bana pointer gibi bir kavram lazım form2 de bir değişkeni değiştirdiğimde form1 de de değişmeli çünkü adresini yollamış olucam.

    Hem senin dediklerini yapmam için form1 e ayrı bir buton falan eklemem gerekecek çünkü form2 ye geçtiğimde form1 gizli kalıyor ve zaten çalışmış. Form 2 de işlemler bitince bir butona basarım böylece get-set yada metotlarla çekerim form2 den veri. Ancak benim istediğim form2 deyken bunların gerçekleşmesi.

    Dostum benim dediğim yöntemlerin neyin ne sırayla açık olduğuyla ilgisi yok. Form1'i dispose etmiyorsan (ediyorsan zaten geri dönemezsin) ve this->hide ile gizleyip sonra form2'nin close'unda form1'i tekrar show ediyorsan benim dediğim yöntemler işe yarar.

    Şu dediklerin üzerine aklıma gelen 2 yöntem oldu;
    1 - Form1'e setter yazarsın (istersen getter da). Form2'de istediğin değişiklikler olduğunda Form1'e pointerın olduğu için setterlarını çağırıp Form1'deki istediğin fieldları değiştirebilirsin.
    2 - Form2'ye yazacağın bir meyveli (? fruitful) metod sayesinde (return veya referans parametre ile), Form2'yi gösterir, kapatır ve Form1'den istediğin verilere ulaşırsın. Burda sıkıntı şu ki, bildiğim kadarıyla Show ShowDialog gibi çalışmıyor ve çağırıldıktan sonra geri dönmek için form'un kapanmasını beklemiyor dolayısıyla bir şekilde bekletmen gerekir bu yeni yazacağın metodu (ShowDialog varsa şu tarif ettiğini onla yapman zaten daha mantıklı)

    Örneğin;
    form1 tarafında form2'nin açılacağı yere;
    this->Hide();
    form2Obj.newMethod(&myVal1, &myVal2); // newMethod ShowDialog ile göstermeli form2'yi.
    this->Show();




  • Bir türlü yapamadım şunu ya yapabilen bir örnek paylaşırsa çok memnun olacağım .
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.