işin içinden Çıkamadım
kusura bakmayın Tekrar Yazıyorum
Ben Bu Global Sınıf olayını Çözemedim
şimdi Baştan Yazayım Cahilliğime verin
şimdi bir proje açtım
Global Sınıf Global Değişken (yani bir formdan diğer formda oluşturduğum sınıfın değişkenine bir değer atıyorum
sonra o formu kapatıyorum
deger atağıdım değişkeni çağırdığımda atadığım degerinde kapattığım formla birlikte yok olduğunu görüyorum işten ben burayı çözemedim)
mantığını ögrenmek için bir proje açtım
iki tane Form oluşturdum
biri ana form yani yani bu Formun headırından bir global değişkenleri tutmak için bir sınıf oluşturdum
formun Headerı
şöyle
Kod: Tümünü seç
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
class GlobalSinif
{
public:
String strGlobalDegisken1;
String DegiskenAL()
{
return strGlobalDegisken1;
}
void strGlobalDegiskenAta(String strDegisken)
{
strGlobalDegisken1= strDegisken ;
}
} ;
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
bu boş bir forum headırına
ben sadece
Kod: Tümünü seç
class GlobalSinif
{
public:
String strGlobalDegisken1;
String DegiskenAL()
{
return strGlobalDegisken1;
}
void strGlobalDegiskenAta(String strDegisken)
{
strGlobalDegisken1= strDegisken ;
}
} ;
bu sınıfı headera yazdım
bu form hiç kapanmaz yani ana form diyelim
hiç kapanmadığı içinde bu sınıfın değişkenlerine yazılan değerlerinde silinmemesi gerekiyor değilmi
Form1 iki tanede button ekledim
bir button ile form2 açacağım
ikinci button ile GlobalSinif daki strGlobalDegisken1 degerini ShowMessageBox içinde Göstermek için Kullanacağım
Form2 açmak için
ve GlobalSinifi Kullanabilmek için
Kod: Tümünü seç
#include "Unit2.h"
GlobalSinif *GlobalSinifimiz = new GlobalSinif;
Form2 unit.h include ettim
Button1 Onclick olayına
Kod: Tümünü seç
Application->CreateForm(__classid(TForm2), &Form2);
Form2->Show();
Button1 onclick olayına ise
Kod: Tümünü seç
ShowMessage(GlobalSinifimiz->DegiskenAL()) ;
geldik ikinci forma
boş formu açtım
bir edit
2 adet button koydum
bu formdan ana formda oluşturduğum global sınıfa erişmek için
Kod: Tümünü seç
#include "Unit1.h"
GlobalSinif *GlobalSinifimiz = new GlobalSinif;
form1 unit.h include ettim
button1 onclick olayına
Kod: Tümünü seç
GlobalSinifimiz->strGlobalDegiskenAta(Edit1->Text);
ShowMessage(Edit1->Text+" Global strGlobalDegisken1 Değişkenine Atandı");
GlobalSinifimiz->strGlobalDegiskenAta fonksiyonu ile
GlobalDegiskenler sınıfınfaki strGlobalDegisken1'e Edit1 deki Değeri Atadım
GlobalSinifimiz->strGlobalDegiskenAta fonksiyonu ile strGlobalDegisken1 degere atayıp atamadığımı kontrol etmek için
button2 onclick olayına
Kod: Tümünü seç
ShowMessage(GlobalSinifimiz->DegiskenAL()) ;
Projemi Çalıştırdım
Form1 (yani ana form geldi)
Form1 deki button1 bastım
Form2 açıldı
Form2 deki editde bişeyler yazıp button1 tıkladım
Kod: Tümünü seç
GlobalSinifimiz->strGlobalDegiskenAta(Edit1->Text);
ShowMessage(Edit1->Text+" Global strGlobalDegisken1 Değişkenine Atandı");
kod sorunsuzca çalıştı
test için button2 tıkladım
Kod: Tümünü seç
ShowMessage(GlobalSinifimiz->DegiskenAL()) ;
bu kod da sorunsuzca çalıştı
Edit yazdığım degerleri mesaj Penceresi içinde Çıktı
Buraya Kadar Herşey Normal
şimdi Form1 deki Button2 bastığımda ise ShowMessage Penceresi Boş Geldi
Tam bir hayal kırıklığı
yani
Form2 nin edit1 yazdığım değeri görmem gerekirken boş geldi
oysa
ben Form2 den
button1 onclick olayında
Kod: Tümünü seç
GlobalSinifimiz->strGlobalDegiskenAta(Edit1->Text);
Edit1.textine yazdığım degeri
GlobalSinifimiz->strGlobalDegiskenAta
fonksiyonu ile
GlobalSinifimiz sınıfındaki strGlobalDegisken1 atamıştım
ama neden Form2 den
Form1 deki GlobalSınıfa Attığım degeri
Form1 den Göremiyorum bir türlü anlamadım
neden Boş Geliyor
çıkamadım işin içinden
nasıl yapmam gerekiyor