Sayfayı Yazdır | Pencereyi Kapat

Formun Sıfırlanması

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1206
Tarih: 29 Kasım 2025 Saat 18:23
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Formun Sıfırlanması
Mesajı Yazan: kaanl0
Konu: Formun Sıfırlanması
Mesaj Tarihi: 09 Ekim 2025 Saat 14:51
Unitimin içinde 1 edit 1de label var editin içindekini labele yazdırıyorum ama farklı bir unite gidip  geldiğimde form yeniden oluşturulduğu için label sıfırlanıyor bunu önlemenin bir yolu var mı



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 09 Ekim 2025 Saat 15:01
Kaan forumu kapatmak yerine gizlemeyi dener misin?
MyForm.ClHide ile 
https://www.docs.clomosy.com/index.php?title=TclUnit" rel="nofollow - https://www.docs.clomosy.com/index.php?title=TclUnit


Mesajı Yazan: kaanl0
Mesaj Tarihi: 09 Ekim 2025 Saat 17:37
Deneme amaçlı dün döngüler için kullandığım kodlara 2 label 1 adet edit ekliyorum ekle butonuna basınca edit e yazdığın kelime ekranda gözükecek . Her unit geçişi içinde clhide ekledim. Burda yapmak istediğim unit değiştirince ekrana yazdırdığım kelimelerin kaybolmaması


------------anakod------------------- 

uses homepage;

var
  currentPlayerIndex: Integer; 

{
  try 
    currentPlayerIndex = 0; 
    Clomosy.rununit('homepage');
   except 
    ShowMessage('General Error '+'Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
  }
}




------------------homepage-----------



var
  MainForm: TclForm;
  listpnl: TclProPanel;
  pname1, pname2, pname3, pname4: TClProLabel;
  startbtn: TClProButton;
  currentPlayerIndex: Integer;



void listpnlV {
  {
    listpnl = mainform.AddNewPropanel(mainform, 'listpnl');
    listpnl.Align = alClient;
    listpnl.Margins.Bottom = 390;
    listpnl.Margins.Top = 20;
    listpnl.Margins.Right = 30;
    listpnl.Margins.Left = 23;
    listpnl.clProSettings.ColCount = 1;
    listpnl.clProSettings.ItemHeight = 100;
    listpnl.clProSettings.ItemSpace = 10;
    listpnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#FFFCFF');
    listpnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#524c4c');
    listpnl.clProSettings.BorderWidth = 5;
    listpnl.clProSettings.RoundHeight = 5;
    listpnl.clProSettings.RoundWidth = 3;
    listpnl.SetclProSettings(listpnl.clProSettings);
    
    pname1 = mainform.AddNewProLabel(listpnl, 'pname1', 'Kaan');
    pname1.Align = alMostTop;
    pname1.Width = 300;
    pname1.Height = 55;
    pname1.Margins.Left = 150;
    pname1.margins.top = 20;
    pname1.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    pname1.clProSettings.FontSize = 28;
    pname1.clProSettings.TextSettings.Font.Style = [fsItalic];
    pname1.SetclProSettings(pname1.clProSettings);
    
    pname2 = mainform.AddNewProLabel(listpnl, 'pname2', 'Eren');
    pname2.Align = alTop;
    pname2.Width = 300;
    pname2.Height = 55;
    pname2.Margins.Left = 150;
    pname2.margins.top = 30;
    pname2.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    pname2.clProSettings.FontSize = 28;
    pname2.clProSettings.TextSettings.Font.Style = [fsItalic];
    pname2.SetclProSettings(pname2.clProSettings);
    
    pname3 = mainform.AddNewProLabel(listpnl, 'pname3', 'Sülo');
    pname3.Align = alTop;
    pname3.Width = 300;
    pname3.Height = 55;
    pname3.Margins.Left = 150;
    pname3.margins.top = 30;
    pname3.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    pname3.clProSettings.FontSize = 28;
    pname3.clProSettings.TextSettings.Font.Style = [fsItalic];
    pname3.SetclProSettings(pname3.clProSettings);
    
    pname4 = mainform.AddNewProLabel(listpnl, 'pname4', 'Samet');
    pname4.Align = alTop;
    pname4.Width = 300;
    pname4.Height = 55;
    pname4.Margins.Left = 150;
    pname4.margins.top = 30;
    pname4.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    pname4.clProSettings.FontSize = 28;
    pname4.clProSettings.TextSettings.Font.Style = [fsItalic];
    pname4.SetclProSettings(pname4.clProSettings);
  }
}

void startbtnV {
  {
    startbtn = mainform.AddNewProButton(mainform, 'startbtn', 'Oyunu Başlat');
    startbtn.Align = alCenter;
    startbtn.Width = 250;
    startbtn.Height = 100;
    startbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
    startbtn.clProSettings.FontSize = 24;
    startbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#000000');
    startbtn.clProSettings.BorderWidth = 2;
    startbtn.clProSettings.RoundWidth = 50;
    startbtn.clProSettings.RoundHeight = 50;
    startbtn.Margins.top = 350;
    startbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#081368');
    startbtn.clProSettings.TextSettings.Font.Style = [fsBold];
    startbtn.SetclProSettings(startbtn.clProSettings);
    mainform.AddNewEvent(startbtn, tbeOnClick, 'startgameV');
  }
}

void startgameV {
  {
  //ShowMessage(IntToStr(currentPlayerIndex));
    currentPlayerIndex = 0; // İlk oyuncu için sıfırla
    Clomosy.RunUnit('uPlayer');
    mainform.clhide;
  }
}

{
  mainform = TclForm.Create(Self);
  listpnlV;
  startbtnV;
  mainform.FormWaiting.Visible = False;
  mainform.BtnFormMenu.Visible = False;
  mainform.BtnGoBack.Visible = False;
  mainform.Run;
}


-------------------Uplayer-------------------


uses homepage;
var
  mainform2: TclForm;
  lb1, nameplayer: TClProLabel;
  okbtn: TClProButton;
  tempstring: String;

void lb1V {
  {
    lb1 = mainform2.AddNewProLabel(mainform2, 'lb1', 'Oyuncu Sırası: ');
    lb1.Width = 440;
    lb1.Height = 50;
    lb1.margins.bottom = 600;
    lb1.margins.left = 200;
    lb1.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFD700');
    lb1.clProSettings.FontSize = 38;
    lb1.clProSettings.TextSettings.Font.Style = [fsBold, fsItalic];
    lb1.SetclProSettings(lb1.clProSettings);
  }
}

void nameplayerV {
  {
    nameplayer = mainform2.AddNewProLabel(mainform2, 'nameplayer', '');
    nameplayer.Align = alCenter;
    nameplayer.Width = Length(pname1.text) * 25;
    nameplayer.Height = 50;
    nameplayer.margins.bottom = 400;
    nameplayer.clProSettings.FontColor = clAlphaColor.clHexToColor('#35b673');
    nameplayer.clProSettings.FontSize = 38;
    nameplayer.clProSettings.TextSettings.Font.Style = [fsBold, fsItalic];
    nameplayer.SetclProSettings(nameplayer.clProSettings);
  }
}

void okbtnV {
  {
    okbtn = mainform2.AddNewProButton(mainform2, 'okbtn', 'Tamam');
    okbtn.Align = alCenter;
    okbtn.margins.bottom = 210;
    okbtn.Width = 200;
    okbtn.Height = 70;
    okbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFD700');
    okbtn.clProSettings.FontSize = 30;
    okbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#DAA520');
    okbtn.clProSettings.BorderWidth = 5;
    okbtn.clProSettings.RoundWidth = 15;
    okbtn.clProSettings.RoundHeight = 15;
    okbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2C7E7E');
    mainform2.AddNewEvent(okbtn, tbeOnClick, 'WordButtonV');
    okbtn.clProSettings.TextSettings.Font.Style = [fsBold, fsItalic];
    okbtn.SetclProSettings(okbtn.clProSettings);
  }
}

void playerturn0V {
  {
    // Sıradaki oyuncuya geç
    currentPlayerIndex = currentPlayerIndex + 1;
    
    // 4 oyuncu döngüsü
    if (currentPlayerIndex > 4) {
      currentPlayerIndex = 1;
    }
    
    // Oyuncu ismini al
    case currentPlayerIndex of {
      1: tempstring = homepage.pname1.Text;
      2: tempstring = homepage.pname2.Text;
      3: tempstring = homepage.pname3.Text;
      4: tempstring = homepage.pname4.Text;
    }
    
    nameplayer.Text = tempstring;
  }
}

void WordButtonV {
  {
    Clomosy.RunUnit('uYourWord');
    mainform2.clhide;
  }
}

{
  mainform2 = TclForm.Create(Self);
  lb1V;
  nameplayerV;
  okbtnV;
  playerturn0V; // Her seferinde sıradaki oyuncuyu göster
  mainform2.run;
}
 

------------------uYourWord--------------------


uses uPlayer;
var
  mainform3: TclForm;
  addwordbtn, okbtn, guessbtn: TClProButton;
  wordedit:TclProEdit;
  lb1,lb2:TClProLabel;


void addwordsV
    {

    if wordedit.Text==''{
    ShowMessage('Lütfen Bir İsim Giriniz');
    }
    else if lb1.Text==''{
    lb1.Text = AnsiUpperCase(wordedit.Text);
    }
    else if lb2.Text==''{
    lb2.Text = AnsiUpperCase(wordedit.Text);
    }
    else 
    {
    ShowMessage('Maksimum 2 kelime');
    }
    wordedit.Text = '';
}



void word1V 
  {
    lb1 = mainform3.AddNewProLabel(mainform3, 'lb1', '');
    lb1.Width = 250;
    lb1.Height = 50;
    //lb1.margins.bottom = 600;
    //lb1.margins.left = 200;
    lb1.Align=alCenter;
    lb1.margins.bottom=200;
    lb1.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    lb1.clProSettings.FontSize = 38;
    lb1.clProSettings.TextSettings.Font.Style = [fsBold, fsItalic];
    //lb1.clProSettings.BorderWidth = 2;
    lb1.SetclProSettings(lb1.clProSettings);
  }


void word2V 
  {
    lb2 = mainform3.AddNewProLabel(mainform3, 'lb2', '');
    lb2.Width = 250;
    lb2.Height = 50;
    //lb1.margins.bottom = 600;
    //lb1.margins.left = 200;
    lb2.Align=alCenter;
    lb2.margins.bottom=100
    lb2.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    lb2.clProSettings.FontSize = 38;
    lb2.clProSettings.TextSettings.Font.Style = [fsBold, fsItalic];
    //lb2.clProSettings.BorderWidth = 2;
    lb2.SetclProSettings(lb2.clProSettings);
}

void editV
  {
  wordedit= mainform3.AddNewProEdit(mainform3, 'wordedit', 'Kelime Giriniz');
  wordedit.Align = altop;
  wordedit.Width = 175;
  wordedit.Height = 60;
  wordedit.margins.top=25;
  wordedit.margins.left=30;
  wordedit.margins.right=30;
  wordedit.clProSettings.BorderColor = clAlphaColor.clHexToColor('#312626');
  wordedit.clProSettings.RoundHeight = 15;
  wordedit.clProSettings.RoundWidth = 15;
  wordedit.clProSettings.BorderWidth = 1;
  wordedit.maxlength= 8;
  //wordedit.clProSettings.IsFill = True; 
  //wordedit.clProSettings.IsRound = True;
  wordedit.SetclProSettings(wordedit.clProSettings);
  
}

void okbtnV {
  {
  
    Clomosy.RunUnit('uPlayer');
    mainform3.clhide;
  }
}

void addwordbtnV {
  {
    okbtn = mainform3.AddNewProButton(mainform3, 'okbtn', 'Geri Dön');
    okbtn.Align = alCenter;
    okbtn.Width = 175;
    okbtn.Height = 60;
    okbtn.margins.top = 25;
    okbtn.margins.left = 30;
    okbtn.margins.right = 30;
    okbtn.clProSettings.FontSize = 21;
    okbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#099ea4');
    okbtn.clProSettings.TextSettings.Font.Style = [fsBold];
    okbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#312626');
    okbtn.clProSettings.RoundHeight = 15;
    okbtn.clProSettings.RoundWidth = 15;
    okbtn.clProSettings.BorderWidth = 2;
    okbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#e6efef');
    mainform3.AddNewEvent(okbtn, tbeOnClick, 'okbtnV');
    okbtn.SetclProSettings(okbtn.clProSettings);
    
    addwordbtn= mainform3.AddNewProButton(mainform3, 'addwordbtn', 'EKLE');
    addwordbtn.Align = altop;
    addwordbtn.Width = 175;
    addwordbtn.Height = 60;
    addwordbtn.margins.top=25;
    addwordbtn.margins.left=30;
    addwordbtn.margins.right=30;
    addwordbtn.clProSettings.FontSize = 21;
    addwordbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#099ea4');
    addwordbtn.clProSettings.TextSettings.Font.Style = [fsBold];
    addwordbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#312626');
    addwordbtn.clProSettings.RoundHeight = 15;
    addwordbtn.clProSettings.RoundWidth = 15;
    addwordbtn.clProSettings.BorderWidth = 2;
    addwordbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#e6efef');
    mainform3.AddNewEvent(addwordbtn,tbeOnClick,'addwordsV');
    addwordbtn.SetclProSettings(addwordbtn.clProSettings); 
  }
}

{
  mainform3 = TclForm.Create(Self);
  addwordbtnV;
  word1V;
  word2V;
  editV;
  mainform3.run;
}


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 09 Ekim 2025 Saat 17:51
Kodlara paylaştığına göre sanırım sorun tam çözülmedi. Hata devam ediyor


Mesajı Yazan: kaanl0
Mesaj Tarihi: 09 Ekim 2025 Saat 18:14
evet nasıl çözebiliriz ?


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 10 Ekim 2025 Saat 14:56
Merhaba Kaan, 
Bir kaç çözüm denedim, 
GlobalVariableString ile yaptım, aşağıda kodu bırakıyorum, 

----------------Anakod-----------------
var
  Form1: TCLForm;
  BtnAnaKod: TclButton;
  LblAnaKod: TclLabel;
  uMutfak: TclUnit;

void BirimeGit {
  {
    uMutfak.UnitName = 'uLogin';
    uMutfak.CallerForm = Form1;
    uMutfak.Run;
  }
}

{
  Form1 = TCLForm.Create(Self);
  Form1.clSetCaption('Ana Kod');
  uMutfak = TclUnit.Create;
  
  LblAnaKod = Form1.AddNewLabel(Form1, 'LblAnaKod', 'Ana Kod');
  LblAnaKod.Align = alTop;
  LblAnaKod.Height = 70;
  LblAnaKod.StyledSettings = ssFamily;
  LblAnaKod.TextSettings.Font.Size = 20;
  
  BtnAnaKod = Form1.AddNewButton(Form1, 'btnAnaKod', 'Birime git!');
  BtnAnaKod.Width = 100;
  Form1.AddNewEvent(BtnAnaKod, tbeOnClick, 'BirimeGit');
  
  Form1.Run;
}

--------------------uLogin------------------------

var
  Form2: TCLForm;
  Button2: TclButton;
  Edit1: TclEdit;
  LblBirim: TclLabel;

void AnaKodaGit {
  {
    // Edit içeriğini global değişkene kaydet
    Clomosy.GlobalVariableString = Edit1.Text;
    
    Form2.clHide;
    CallerForm.clShow;
  }
}

void EditIceriginiYazdir {
  {
    // Edit içeriğini label'a yazdır
    LblBirim.Text = 'Edit içeriği: ' + Edit1.Text;
  }
}

{
  Form2 = TCLForm.Create(Self);
  Form2.clSetCaption('Birim');
  
  // Label oluştur
  LblBirim = Form2.AddNewLabel(Form2, 'LblBirim', 'Edit içeriği burada görünecek');
  LblBirim.Align = alTop;
  LblBirim.Height = 50;
  LblBirim.StyledSettings = ssFamily;
  LblBirim.TextSettings.Font.Size = 16;
  LblBirim.TextSettings.Font.Style = [fsBold];
  
  // Edit oluştur
  Edit1 = Form2.AddNewEdit(Form2, 'Edit1', 'Buraya yazın...');
  Edit1.Align = alTop;
  Edit1.Height = 40;
  Edit1.Margins.Top = 10;
  Edit1.Margins.Left = 20;
  Edit1.Margins.Right = 20;
  Form2.AddNewEvent(Edit1, tbeOnChange, 'EditIceriginiYazdir');
  
  // Global değişkenden edit içeriğini yükle
  if (Clomosy.GlobalVariableString <> '') {
    Edit1.Text = Clomosy.GlobalVariableString;
    LblBirim.Text = 'Edit içeriği: ' + Edit1.Text;
  }
  
  // Buton oluştur
  Button2 = Form2.AddNewButton(Form2, 'Button2', 'Ana Koda Dön');
  Button2.Align = alTop;
  Button2.Height = 50;
  Button2.Margins.Top = 20;
  Button2.Margins.Left = 20;
  Button2.Margins.Right = 20;
  Form2.AddNewEvent(Button2, tbeOnClick, 'AnaKodaGit');
  
  Form2.Run;
}


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 10 Ekim 2025 Saat 17:32
Bir diğer çözüm de, 
Üye verilerini tutmak için bir lib oluşturup sonra da formu standart unit ile değil de 
kullanıcı özelinde ister parametrik ister kendi isteğiyle uses olarak kullanıldı. 
Form kapanırken de veriyi lib de ki değişkene atıldı. 
Daha farklı yapılarla da yapılabilir. 

--anakod--
uses
  uMemberLib,uLogin;

var
  Form1: TCLForm;
  BtnAnaKod: TclButton;
  LblAnaKod: TclLabel;
  uMutfak: TclUnit;
  
  LoginForm:TCLForm;

void BtnAnaKodOnClick(Sender){
  LoginForm = uLogin.Create;
  uLogin.Edit1.Text = uMemberLib.UserName;
  LoginForm.Show;
}

{
  Form1 = TCLForm.Create(Self);
  Form1.clSetCaption('Ana Kod');
  uMemberLib.Init;
  
  LblAnaKod = Form1.AddNewLabel(Form1, 'LblAnaKod', 'Ana Kod');
  LblAnaKod.Align = alTop;
  LblAnaKod.Height = 70;
  LblAnaKod.StyledSettings = ssFamily;
  LblAnaKod.TextSettings.Font.Size = 20;
  
  BtnAnaKod = Form1.AddNewButton(Form1, 'btnAnaKod', 'Birime git!');
  BtnAnaKod.Width = 100;
  BtnAnaKod.OnClick = 'BtnAnaKodOnClick'
  
  Form1.Run;
}
--------uLogin-------------
var
  Form2: TCLForm;
  Button2: TclButton;
  Edit1: TclEdit;
  LblBirim: TclLabel;
  
void Form2OnCloseQuery{
  uMemberLib.UserName = Edit1.Text;
}

function Create:TCLForm;
{
  Form2 = TCLForm.Create(Self);
  Form2.AddNewEvent(Form2,tbeOnFormCloseQuery,'Form2OnCloseQuery');
  Form2.clSetCaption('Birim');
  
  // Label oluştur
  LblBirim = Form2.AddNewLabel(Form2, 'LblBirim', 'Edit içeriği burada görünecek');
  LblBirim.Align = alTop;
  LblBirim.Height = 50;
  LblBirim.StyledSettings = ssFamily;
  LblBirim.TextSettings.Font.Size = 16;
  LblBirim.TextSettings.Font.Style = [fsBold];
  
  // Edit oluştur
  Edit1 = Form2.AddNewEdit(Form2, 'Edit1', 'Buraya yazın...');
  Edit1.Align = alTop;
  Edit1.Height = 40;
  Edit1.Margins.Top = 10;
  Edit1.Margins.Left = 20;
  Edit1.Margins.Right = 20;
  
  
  // Buton oluştur
  Button2 = Form2.AddNewButton(Form2, 'Button2', 'Ana Koda Dön');
  Button2.Align = alTop;
  Button2.Height = 50;
  Button2.Margins.Top = 20;
  Button2.Margins.Left = 20;
  Button2.Margins.Right = 20;
  
  Result = Form2;
  
}

void Show{
  Form2.Run;
}

void Hide{
  Form2.ClHide;
}

----------uMemberlib------------ (Birim dili = TRLibrary)
var
  UserName,
  Password:string;
  
void init;
{
  UserName = '';
  Password = '';
}





Mesajı Yazan: kaanl0
Mesaj Tarihi: 13 Ekim 2025 Saat 09:15
2. yöntemdeki kodu tam çalıştıramadığım için nasıl olduğunu anlayamadım


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 13 Ekim 2025 Saat 10:40
Nereden hata geldi Kaan 


Mesajı Yazan: kaanl0
Mesaj Tarihi: 13 Ekim 2025 Saat 11:37
Anakoda dön butonu çalışmıyor ve editi labele yazdıramıyorum sanırım eventler eksik ya da hatalı. Tam anlayamadım


Mesajı Yazan: kaanl0
Mesaj Tarihi: 13 Ekim 2025 Saat 18:28
Editteki kelimeyi labele ekleyip geri geldiğimizde form yeniden başlatıldığı için yazdırdığımız kelime kayboluyordu bu yüzden yazdırdığımız kelimeyi  sadece 1 kere çalışan bir homepage isimli unite farklı bir isimde kaydedip tekrar yazdırınca sorun çözüldü


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 14 Ekim 2025 Saat 08:58
Merhaba Kaan, 
Başka bir hata alırsan tekrar foruma sorabilirsin. 
İyi çalışmalar.



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net