Sayfayı Yazdır | Pencereyi Kapat

iOS ImageChooser Sorunu

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=1520
Tarih: 12 Mayıs 2026 Saat 00:24
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: iOS ImageChooser Sorunu
Mesajı Yazan: clBerat
Konu: iOS ImageChooser Sorunu
Mesaj Tarihi: 11 Mayıs 2026 Saat 21:26
İlk Yaptığında Kamera Sorunsuz Açılıyor Ancak Uygulamadan Çıkmadan Tekrar Fotoğraf Çekmek İstediği Zaman Donuyor. (Eğer Orda Donmasa Ürünü Analiz Et Butonuna Basınca Donuyor, Her Türlü Donuyor. Android'de Sorun Olmadan Çalışıyor.)


var
  AnaSayfaForm : TCLForm;
  lblHosGeldin : TClProLabel;
  edtBarkodSonuc : TclProEdit;
  btnBarkodOkut, btnUrunBul : TClProButton;
  
  lblUrunFotoCerceve : TClProLabel;
  imgUrunFoto : TClImage; 
  
  lytBottomContainer, lytBottomBarBg, lytIconsLayer : TClLayout;
  lytNavLeft, lytNavMiddle, lytNavRight : TClLayout;
  lblBarBg, lblNavMiddleBg, lblNavLeftBg : TClProLabel;
  imgNavLeft, imgNavMiddle, imgNavRight : TClImage;
  
  lytLogoutOverlay, lytLogoutKasa, lytLogoutBtnKasa : TClLayout; 
  lblLogoutArkaplan, lblLogoutKasaBg, lblLogoutSoru : TClProLabel;
  btnLogoutEvet, btnLogoutIptal : TClProButton;

  lytHesapSilOverlay, lytHesapSilKasa, lytHesapSilBtnKasa : TClLayout; 
  lblHesapSilArkaplan, lblHesapSilKasaBg, lblHesapSilSoru : TClProLabel;
  btnHesapSilEvet, btnHesapSilIptal : TClProButton;

  tmrGemini, tmrKamera : TclTimer;
  OpenFoodFactsApi, GeminiApi, ProfilApi : TCLRest;
  btnAnaStil, btnAltStil, btnKirmiziStil, prefFile, edtStil, edtSoftStil : String;
  prefList : TclStringList;
  
  scrollAna : TclVertScrollBox; 
  lytScrollBosluk : TClLayout;  
  
  lytUstKasa, lytSonucKasa : TClLayout;
  lytKasaUrun, lytKasaColyak, lytKasaSporcu : TClLayout;
  lytIcerikUrun, lytIcerikColyak, lytIcerikSporcu : TClLayout;
  lblKasaUrunBg, lblKasaColyakBg, lblKasaSporcuBg : TClProLabel;
  lblUrunBaslik, lblColyakBaslik, lblSporcuBaslik : TClProLabel;
  memoUrunCevap, memoColyakCevap, memoSporcuCevap : TclMemo;
  
  lytProfilKasa : TClLayout;    
  scrollProfil : TclVertScrollBox;
  lytP_Tercihler, lytP_CheckList, lytP_Sifre, lytP_HesapSil, lytP_Bosluk : TClLayout; 
  lblP_AdSoyad, lblP_Email, lblP_TercihBaslik, lblP_SifreBaslik, lblP_TercihKasaBg, lblP_SifreKasaBg, lblP_SifreKurallari : TClProLabel;
  chkP_Colyak, chkP_Sporcu, chkP_Vegan, chkP_Vejetaryen, chkP_Saglikli, chkP_Diyabet, chkP_Laktoz : TclCheckBox;
  edtP_EskiSifre, edtP_Sifre, edtP_SifreTekrar : TclProEdit; 
  imgP_EskiSifre, imgP_Sifre, imgP_SifreTekrar : TClProImage; 
  btnP_TercihKaydet, btnP_SifreKaydet, btnP_HesapSil : TClProButton;
  
  IslemTipi, ArananDeger, KullaniciTercihleri, KullaniciEmail, apiUrl, apiKey : String; 


void OrtadakiButonTikladi;
var
  i : Integer;
{
  if (lblNavMiddleBg.Visible == True) { Exit; } 
  
  lytProfilKasa.Visible = False;
  scrollAna.Visible = True;
  
  lblNavLeftBg.Visible = False;
  lblNavMiddleBg.Visible = True;

  i = 1;
  while (i <= 6)
  {
    lytNavLeft.Margins.Top = lytNavLeft.Margins.Top + 5;
    lytNavLeft.Margins.Bottom = lytNavLeft.Margins.Bottom - 5;
    if (lytNavLeft.Margins.Top > 30) { lytNavLeft.Margins.Top = 30; }
    if (lytNavLeft.Margins.Bottom < 20) { lytNavLeft.Margins.Bottom = 20; }

    lytNavMiddle.Margins.Top = lytNavMiddle.Margins.Top - 5;
    lytNavMiddle.Margins.Bottom = lytNavMiddle.Margins.Bottom + 5;
    if (lytNavMiddle.Margins.Top < 0) { lytNavMiddle.Margins.Top = 0; }
    if (lytNavMiddle.Margins.Bottom > 30) { lytNavMiddle.Margins.Bottom = 30; }

    AnaSayfaForm.StartProcessMessages(15); 
    i = i + 1;
  }
}

void SoldakiButonTikladi;
var
  i : Integer;
{
  if (lblNavLeftBg.Visible == True) { Exit; }
  
  scrollAna.Visible = False;
  lytProfilKasa.Visible = True;
  
  lblNavMiddleBg.Visible = False;
  lblNavLeftBg.Visible = True;

  i = 1;
  while (i <= 6)
  {
    lytNavMiddle.Margins.Top = lytNavMiddle.Margins.Top + 5;
    lytNavMiddle.Margins.Bottom = lytNavMiddle.Margins.Bottom - 5;
    if (lytNavMiddle.Margins.Top > 30) { lytNavMiddle.Margins.Top = 30; }
    if (lytNavMiddle.Margins.Bottom < 20) { lytNavMiddle.Margins.Bottom = 20; }

    lytNavLeft.Margins.Top = lytNavLeft.Margins.Top - 5;
    lytNavLeft.Margins.Bottom = lytNavLeft.Margins.Bottom + 5;
    if (lytNavLeft.Margins.Top < 0) { lytNavLeft.Margins.Top = 0; }
    if (lytNavLeft.Margins.Bottom > 30) { lytNavLeft.Margins.Bottom = 30; }

    AnaSayfaForm.StartProcessMessages(15); 
    i = i + 1;
  }
}

void ChkP_VeganClick;
{
  if (chkP_Vegan.isChecked == False) { 
    chkP_Vejetaryen.isChecked = False; 
    chkP_Vejetaryen.Enabled = False;   
  } else {
    chkP_Vejetaryen.Enabled = True;    
  }
}

void P_SifreGizleGosterEski;
{
  if (edtP_EskiSifre.Password == True) {
    edtP_EskiSifre.Password = False;
    AnaSayfaForm.SetImage(imgP_EskiSifre, ' https://i.ibb.co/2311b9kv/acikgoz.png" rel="nofollow - https://i.ibb.co/2311b9kv/acikgoz.png ');
  } else {
    edtP_EskiSifre.Password = True;
    AnaSayfaForm.SetImage(imgP_EskiSifre, ' https://i.ibb.co/Z1V7rfXV/kapal-g-z.png" rel="nofollow - https://i.ibb.co/Z1V7rfXV/kapal-g-z.png ');
  }
}

void P_SifreGizleGosterYeni;
{
  if (edtP_Sifre.Password == True) {
    edtP_Sifre.Password = False;
    AnaSayfaForm.SetImage(imgP_Sifre, ' https://i.ibb.co/2311b9kv/acikgoz.png" rel="nofollow - https://i.ibb.co/2311b9kv/acikgoz.png ');
  } else {
    edtP_Sifre.Password = True;
    AnaSayfaForm.SetImage(imgP_Sifre, ' https://i.ibb.co/Z1V7rfXV/kapal-g-z.png" rel="nofollow - https://i.ibb.co/Z1V7rfXV/kapal-g-z.png ');
  }
}

void P_SifreGizleGosterTekrar;
{
  if (edtP_SifreTekrar.Password == True) {
    edtP_SifreTekrar.Password = False;
    AnaSayfaForm.SetImage(imgP_SifreTekrar, ' https://i.ibb.co/2311b9kv/acikgoz.png" rel="nofollow - https://i.ibb.co/2311b9kv/acikgoz.png ');
  } else {
    edtP_SifreTekrar.Password = True;
    AnaSayfaForm.SetImage(imgP_SifreTekrar, ' https://i.ibb.co/Z1V7rfXV/kapal-g-z.png" rel="nofollow - https://i.ibb.co/Z1V7rfXV/kapal-g-z.png ');
  }
}

void BtnP_TercihKaydetClick;
var
  secilenTercih, jsonBody : String;
{
  if (KullaniciEmail == '') { ShowMessage('Oturum zaman aşımına uğradı. Lütfen giriş yapın.'); Clomosy.RunUnit('uLogin'); Exit; }

  secilenTercih = '';
  if (chkP_Colyak.isChecked == True) { secilenTercih = 'Çölyak'; }
  if (chkP_Sporcu.isChecked == True) { if (secilenTercih == '') { secilenTercih = 'Sporcu'; } else { secilenTercih = secilenTercih + ', Sporcu'; } }
  if (chkP_Vegan.isChecked == True) { if (secilenTercih == '') { secilenTercih = 'Vegan'; } else { secilenTercih = secilenTercih + ', Vegan'; } }
  if ((chkP_Vejetaryen.isChecked == True) && (chkP_Vegan.isChecked == False)) { if (secilenTercih == '') { secilenTercih = 'Vejetaryen'; } else { secilenTercih = secilenTercih + ', Vejetaryen'; } }
  if (chkP_Saglikli.isChecked == True) { if (secilenTercih == '') { secilenTercih = 'Sağlıklı Beslenme'; } else { secilenTercih = secilenTercih + ', Sağlıklı Beslenme'; } }
  if (chkP_Diyabet.isChecked == True) { if (secilenTercih == '') { secilenTercih = 'Diyabet'; } else { secilenTercih = secilenTercih + ', Diyabet'; } }
  if (chkP_Laktoz.isChecked == True) { if (secilenTercih == '') { secilenTercih = 'Laktoz İntoleransı'; } else { secilenTercih = secilenTercih + ', Laktoz İntoleransı'; } }
  if (secilenTercih == '') { secilenTercih = 'Yok'; }

  jsonBody = '{"tercihler": "' + secilenTercih + '"}';
  
  ProfilApi.BaseURL = apiUrl + '/rest/v1/kullanicilar?email=eq.' + KullaniciEmail;
  ProfilApi.Method = rmPatch; 
  ProfilApi.AddHeader('apikey', apiKey);
  ProfilApi.AddHeader('Authorization', 'Bearer ' + apiKey);
  ProfilApi.AddHeader('Content-Type', 'application/json');
  ProfilApi.AddBody(jsonBody, 'application/json');
  
  try
    ProfilApi.Execute;
    prefList.Clear;
    prefList.Add(KullaniciEmail);
    prefList.Add(Clomosy.GlobalVariableString);
    prefList.Add(secilenTercih);
    prefList.SaveToFile(prefFile, 0);
    KullaniciTercihleri = secilenTercih;
    ShowMessage('Tercihleriniz başarıyla güncellendi!');
  except
    ShowMessage('Tercihler güncellenirken bir hata oluştu.');
  }
}

void BtnP_SifreKaydetClick;
var
  eskiSifre, sifre, karakter, lowerChars, upperChars, digitChars, jsonBody: String;
  i, len, hasLower, hasUpper, hasDigit, hasSpecial: Integer;
{
  if (KullaniciEmail == '') { ShowMessage('Oturum zaman aşımına uğradı. Lütfen giriş yapın.'); Clomosy.RunUnit('uLogin'); Exit; }

  eskiSifre = edtP_EskiSifre.Text;
  sifre = edtP_Sifre.Text;
  
  if ((eskiSifre == '') || (sifre == '') || (edtP_SifreTekrar.Text == '')) { ShowMessage('Lütfen tüm şifre alanlarını doldurun.'); Exit; }
  if (sifre <> edtP_SifreTekrar.Text) { ShowMessage('Yeni şifreler eşleşmiyor!'); Exit; }
  
  if (eskiSifre == sifre) { ShowMessage('Yeni şifreniz mevcut şifrenizle aynı olamaz!'); Exit; }
  
  ProfilApi.BaseURL = apiUrl + '/rest/v1/kullanicilar?email=eq.' + KullaniciEmail + '&sifre=eq.' + eskiSifre;
  ProfilApi.Method = rmGet; 
  ProfilApi.AddHeader('apikey', apiKey);
  ProfilApi.AddHeader('Authorization', 'Bearer ' + apiKey);
  ProfilApi.Execute;
  
  if ((ProfilApi.Response == '[]') || (ProfilApi.Response == '')) {
    ShowMessage('Mevcut (eski) şifrenizi yanlış girdiniz!');
    Exit;
  }
  
  len = Length(sifre);
  if ((len < 8) || (len > 50)) { ShowMessage('Şifre 8-50 karakter olmalıdır!'); Exit; }
  
  hasLower = 0; hasUpper = 0; hasDigit = 0; hasSpecial = 0;
  lowerChars = 'abcdefghijklmnopqrstuvwxyzçğıöşü'; 
  upperChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÇĞIÖŞÜ'; 
  digitChars = '0123456789'; 
  
  i = 1;
  while (i <= len) {
    karakter = Copy(sifre, i, 1);
    if (Pos(karakter, lowerChars) > 0) { hasLower = 1; } else if (Pos(karakter, upperChars) > 0) { hasUpper = 1; } else if (Pos(karakter, digitChars) > 0) { hasDigit = 1; } else { hasSpecial = 1; }
    i = i + 1;
  }

  if (hasUpper == 0) { ShowMessage('Şifre en az 1 büyük harf içermeli!'); Exit; }
  if (hasLower == 0) { ShowMessage('Şifre en az 1 küçük harf içermeli!'); Exit; }
  if (hasDigit == 0) { ShowMessage('Şifre en az 1 rakam içermeli!'); Exit; }
  if (hasSpecial == 0) { ShowMessage('Şifre en az 1 özel karakter içermeli!'); Exit; }

  jsonBody = '{"sifre": "' + sifre + '"}';
  ProfilApi.BaseURL = apiUrl + '/rest/v1/kullanicilar?email=eq.' + KullaniciEmail;
  ProfilApi.Method = rmPatch; 
  ProfilApi.AddHeader('Content-Type', 'application/json');
  ProfilApi.AddBody(jsonBody, 'application/json');
  
  try
    ProfilApi.Execute;
    ShowMessage('Şifreniz başarıyla değiştirildi! Güvenliğiniz için lütfen yeni şifrenizle tekrar giriş yapın.');
    
    prefList.Clear;
    prefList.SaveToFile(prefFile, 0); 
    Clomosy.GlobalVariableString = ''; 
    KullaniciEmail = ''; 
    Clomosy.RunUnit('uLogin');
  except
    ShowMessage('Şifre güncellenirken bir hata oluştu.');
  }
}

void BtnP_HesapSilSoru;
{
  if (KullaniciEmail == '') { ShowMessage('Oturum zaman aşımına uğradı. Lütfen giriş yapın.'); Clomosy.RunUnit('uLogin'); Exit; }
  lytHesapSilOverlay.Visible = True;
  lytHesapSilOverlay.BringToFront; 
}

void BtnP_HesapSilIptal;
{
  lytHesapSilOverlay.Visible = False;
}

void BtnP_HesapSilEvet;
{
  ProfilApi.BaseURL = apiUrl + '/rest/v1/kullanicilar?email=eq.' + KullaniciEmail;
  ProfilApi.Method = rmDelete; 
  ProfilApi.AddHeader('apikey', apiKey);
  ProfilApi.AddHeader('Authorization', 'Bearer ' + apiKey);
  
  try
    ProfilApi.Execute;
    prefList.Clear;
    prefList.SaveToFile(prefFile, 0); 
    Clomosy.GlobalVariableString = ''; 
    KullaniciEmail = '';
    ShowMessage('Hesabınız başarıyla silindi. Hoşça kalın!');
    Clomosy.RunUnit('uKarsilama');
  except
    ShowMessage('Hesap silinirken bir hata oluştu.');
    lytHesapSilOverlay.Visible = False;
  }
}

void BtnCikisSoru;
{
  lytLogoutOverlay.Visible = True;
  lytLogoutOverlay.BringToFront; 
}

void BtnCikisIptal;
{
  lytLogoutOverlay.Visible = False;
}

void BtnCikisEvet;
{
  prefList.Clear;
  prefList.SaveToFile(prefFile, 0); 
  Clomosy.GlobalVariableString = ''; 
  KullaniciEmail = '';
  Clomosy.RunUnit('uKarsilama');
}

void btnBarkodOkutClick;
{
  lblUrunFotoCerceve.Visible = False; 
  lytSonucKasa.Visible = False; 
  lytUstKasa.Height = 310; 
  btnUrunBul.Enabled = True;
  AnaSayfaForm.CallBarcodeReader(edtBarkodSonuc); 
}

void OnGeminiCompleted;
var
  jsonResp, tempStr, geminiSonuc : String;
  baslangic, bitis, pU, pC, pS, loopLimit : Integer;
  strU, strC, strS : String;
{
  try
    jsonResp = GeminiApi.Response;
    
    if (jsonResp == '') {
      ShowMessage('Bağlantı zaman aşımına uğradı veya internet koptu. Lütfen tekrar deneyin.');
      memoUrunCevap.Text = 'Yanıt Alınamadı.';
      memoColyakCevap.Text = 'Bağlantı Hatası.';
      memoSporcuCevap.Text = 'Bağlantı Hatası.';
      lytSonucKasa.Visible = True;
      btnUrunBul.Enabled = True;
      Exit;
    }

    if (Pos('"error"', jsonResp) > 0) {
      if (Pos('RESOURCE_EXHAUSTED', jsonResp) > 0) { 
        ShowMessage('Google API Kotası Doldu! Ücretsiz sürümde çok hızlı istek attığınız için geçici olarak engellendiniz. Lütfen 1 dakika bekleyin.'); 
        memoUrunCevap.Text = 'Lütfen 1 Dakika Bekleyiniz (API Sınırı)'; 
        memoColyakCevap.Text = 'API Kotası Doldu...'; 
        memoSporcuCevap.Text = 'API Kotası Doldu...'; 
      } 
      else { 
        ShowMessage('API Hatası Detayı: ' + jsonResp); 
        memoUrunCevap.Text = 'API Hatası!'; 
        memoColyakCevap.Text = 'Hata.'; 
        memoSporcuCevap.Text = 'Hata.'; 
      }
      lytSonucKasa.Visible = True;
    } else {
      loopLimit = 0; baslangic = Pos('\"', jsonResp);
      while ((baslangic > 0) && (loopLimit < 5000)) {
        jsonResp = Copy(jsonResp, 1, baslangic - 1) + '''' + Copy(jsonResp, baslangic + 2, Length(jsonResp));
        baslangic = Pos('\"', jsonResp);
        loopLimit = loopLimit + 1;
      }
    
      baslangic = Pos('"text": "', jsonResp);
      if (baslangic > 0) {
        tempStr = Copy(jsonResp, baslangic + 9, Length(jsonResp));
        bitis = Pos('"', tempStr) - 1; 
        geminiSonuc = Trim(Copy(tempStr, 1, bitis));
        
        loopLimit = 0; baslangic = Pos('\n', geminiSonuc); while ((baslangic > 0) && (loopLimit < 1000)) { geminiSonuc = Copy(geminiSonuc, 1, baslangic - 1) + #13#10 + Copy(geminiSonuc, baslangic + 2, Length(geminiSonuc)); baslangic = Pos('\n', geminiSonuc); loopLimit = loopLimit + 1; }
        loopLimit = 0; baslangic = Pos('*', geminiSonuc); while ((baslangic > 0) && (loopLimit < 1000)) { Delete(geminiSonuc, baslangic, 1); baslangic = Pos('*', geminiSonuc); loopLimit = loopLimit + 1; }
        loopLimit = 0; baslangic = Pos('\', geminiSonuc); while ((baslangic > 0) && (loopLimit < 1000)) { Delete(geminiSonuc, baslangic, 1); baslangic = Pos('\', geminiSonuc); loopLimit = loopLimit + 1; }
        
        pU = Pos('###URUN###', geminiSonuc); pC = Pos('###OZEL###', geminiSonuc); pS = Pos('###GENEL###', geminiSonuc);
        
        if (pU > 0) { if (pC > 0) { strU = Trim(Copy(geminiSonuc, pU + 10, pC - pU - 10)); } else { strU = Trim(Copy(geminiSonuc, pU + 10, Length(geminiSonuc) - pU + 1)); } } else { strU = 'Bulunamadı.'; }
        if (pC > 0) { if (pS > 0) { strC = Trim(Copy(geminiSonuc, pC + 10, pS - pC - 10)); } else { strC = Trim(Copy(geminiSonuc, pC + 10, Length(geminiSonuc) - pC + 1)); } } else { strC = 'Profilinize özel analiz çıkarılamadı.'; }
        if (pS > 0) { strS = Trim(Copy(geminiSonuc, pS + 11, Length(geminiSonuc) - pS + 1)); } else { strS = 'Genel bilgi bulunamadı.'; }
        if ((pU <= 0) && (pC <= 0) && (pS <= 0)) { strU = geminiSonuc; strC = 'Analiz edilemedi.'; strS = 'Analiz edilemedi.'; }
        
        memoUrunCevap.Text = strU; memoColyakCevap.Text = strC; memoSporcuCevap.Text = strS;
        lytSonucKasa.Visible = True; 
      } else { 
        memoUrunCevap.Text = 'Okunamadı.'; 
        memoColyakCevap.Text = 'İçerik çekilemedi.'; 
        memoSporcuCevap.Text = 'İçerik çekilemedi.'; 
        ShowMessage('Yapay Zeka cevabı tam olarak okuyamadı!'); 
      }
    }
  except
    ShowMessage('İşlem sırasında ufak bir hata oluştu. Lütfen tekrar deneyin.');
    memoUrunCevap.Text = 'Bağlantı kesildi.';
    memoColyakCevap.Text = 'Bağlantı kesildi.';
    memoSporcuCevap.Text = 'Bağlantı kesildi.';
    lytSonucKasa.Visible = True;
  }
  btnUrunBul.Enabled = True;
}

void TmrGeminiTick;
var
  jsonBody, base64Foto, OzelSartMetni : String;
  baslangic, loopLimit : Integer;
  MyStream : TclMemoryStream;
{
  tmrGemini.Enabled = False; 
  memoUrunCevap.Text = 'Yapay Zeka Sunucusuna Bağlanılıyor...'; 
  memoColyakCevap.Text = 'Bekleniyor...'; 
  memoSporcuCevap.Text = 'Bekleniyor...';
  
  if (GeminiApi <> nil) { GeminiApi.Free; }
  GeminiApi = TCLRest.Create;
  
  OzelSartMetni = '';
  if (Pos('Çölyak', KullaniciTercihleri) > 0) { OzelSartMetni = OzelSartMetni + 'Çölyak (Gluten yasak). '; }
  if (Pos('Sporcu', KullaniciTercihleri) > 0) { OzelSartMetni = OzelSartMetni + 'Sporcu (Protein/Temiz içerik). '; }
  if (Pos('Vegan', KullaniciTercihleri) > 0) { OzelSartMetni = OzelSartMetni + 'Vegan (Hayvansal yasak). '; }
  if (Pos('Vejetaryen', KullaniciTercihleri) > 0) { OzelSartMetni = OzelSartMetni + 'Vejetaryen (Et yasak). '; }
  if (Pos('Sağlıklı', KullaniciTercihleri) > 0) { OzelSartMetni = OzelSartMetni + 'Sağlıklı Beslenme (Katkı maddesi istemiyor). '; }
  if (Pos('Diyabet', KullaniciTercihleri) > 0) { OzelSartMetni = OzelSartMetni + 'Diyabet (İlave şeker yasak). '; }
  if (Pos('Laktoz', KullaniciTercihleri) > 0) { OzelSartMetni = OzelSartMetni + 'Laktoz İntoleransı (Süt ürünü yasak). '; }
  if (OzelSartMetni == '') { OzelSartMetni = 'Özel bir kısıtlama yok.'; }
  
  GeminiApi.BaseURL = ' https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=AIzaSyBiV75pbw3O3gnyTH5DgOyMQ6C1BLrYHcs" rel="nofollow - https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=AIzaSyBiV75pbw3O3gnyTH5DgOyMQ6C1BLrYHcs ';
  GeminiApi.Accept = 'application/json';
  GeminiApi.Method = rmPost;
  GeminiApi.AddHeader('Content-Type', 'application/json');
  
  if (IslemTipi == 'Gorsel') {
    imgUrunFoto.Bitmap.Resize(400, 400); 
    MyStream = TclMemoryStream.Create; 
    imgUrunFoto.Bitmap.SaveToStream(MyStream); 
    MyStream.Position = 0; 
    base64Foto = Clomosy.StreamToBase64(MyStream); 
    MyStream.Free; 
    
    loopLimit = 0; baslangic = Pos(Chr(13), base64Foto); while ((baslangic > 0) && (loopLimit < 25000)) { Delete(base64Foto, baslangic, 1); baslangic = Pos(Chr(13), base64Foto); loopLimit = loopLimit + 1; }
    loopLimit = 0; baslangic = Pos(Chr(10), base64Foto); while ((baslangic > 0) && (loopLimit < 25000)) { Delete(base64Foto, baslangic, 1); baslangic = Pos(Chr(10), base64Foto); loopLimit = loopLimit + 1; }
    
    jsonBody = '{"contents":[{"parts":[{"text":"Sen uzman bir gıda analistisin. Fotoğrafı analiz et. KULLANICI PROFİLİ: [' + OzelSartMetni + ']. KESİN KURAL: 1- Ürünün HANGİ MARKAYA ait olduğunu kesinlikle bul ve ''Marka - Ürün Adı'' formatında yaz (Örn: Tadım - Tadımca Yer Fıstıklı Bar). 2- SADECE profilde yazan durumu değerlendir. Profilde Çölyak, Diyabet gibi kelimeler YOKSA onlardan ASLA BAHSETME! 3- Ürünün genel kalitesini ve içeriğini özetle. FORMAT: ###URUN### [Marka - Adı] ###OZEL### [Profile uygunluk analizi] ###GENEL### [Kısa genel özet ve içindekiler]"},{"inline_data":{"mime_type":"image/jpeg","data":"' + base64Foto + '"}}]}]}';
  } else {
    jsonBody = '{"contents":[{"parts":[{"text":"Sen uzman bir gıda analistisin. Ürün: ' + ArananDeger + '. KULLANICI PROFİLİ: [' + OzelSartMetni + ']. KESİN KURAL: 1- Verilen ürünün HANGİ MARKAYA ait olduğunu kendi veritabanından kesinlikle bul ve ''Marka - Ürün Adı'' formatında yaz (Örn: Tadım - Tadımca Yer Fıstıklı Bar). 2- SADECE profilde yazan durumu değerlendir. Profilde Çölyak, Diyabet gibi kelimeler YOKSA onlardan ASLA BAHSETME! 3- Ürünün genel kalitesini ve içeriğini özetle. FORMAT: ###URUN### [Marka - Adı] ###OZEL### [Profile uygunluk analizi] ###GENEL### [Kısa genel özet ve içindekiler]"}]}]}';
  }
  
  GeminiApi.AddBody(jsonBody, 'application/json');
  GeminiApi.OnCompleted = 'OnGeminiCompleted';
  GeminiApi.ExecuteAsync;
}

void TmrKameraTick;
{
  tmrKamera.Enabled = False;
  Clomosy.ImageChooser(AnaSayfaForm, imgUrunFoto); 
  btnUrunBul.Enabled = True;
}

void btnUrunBulClick;
var
  arananBarkod, jsonResp, tempStr, urunAdi : String;
  baslangic, bitis, loopLimit: Integer;
{
  btnUrunBul.Enabled = False; edtBarkodSonuc.Enabled = False; edtBarkodSonuc.Enabled = True; AnaSayfaForm.clVKVisible = False; 

  if (lblUrunFotoCerceve.Visible == True) {
    if (imgUrunFoto.Bitmap == nil) { ShowMessage('Lütfen geçerli bir fotoğraf çekin!'); btnUrunBul.Enabled = True; Exit; }
    IslemTipi = 'Gorsel'; lytSonucKasa.Visible = True; memoUrunCevap.Text = 'Fotoğraf İşleniyor...'; memoColyakCevap.Text = 'Bekleniyor...'; memoSporcuCevap.Text = 'Bekleniyor...';
    tmrGemini.Enabled = True; 
  } else {
    arananBarkod = Trim(edtBarkodSonuc.Text);
    if (arananBarkod == '') { ShowMessage('Lütfen önce bir barkod okutun veya yazın!'); btnUrunBul.Enabled = True; Exit; }
    
    lytSonucKasa.Visible = True; memoUrunCevap.Text = 'Veritabanı Aranıyor...'; memoColyakCevap.Text = 'Bekleniyor...'; memoSporcuCevap.Text = 'Bekleniyor...'; 
    
    OpenFoodFactsApi.BaseURL = ' https://world.openfoodfacts.org/api/v0/product/" rel="nofollow - https://world.openfoodfacts.org/api/v0/product/ ' + arananBarkod + '.json'; OpenFoodFactsApi.Accept = 'application/json'; OpenFoodFactsApi.Method = rmGet;
    try OpenFoodFactsApi.Execute; jsonResp = OpenFoodFactsApi.Response; except ShowMessage('Sunucuya bağlanılamadı!'); memoUrunCevap.Text = 'Bağlantı Hatası.'; btnUrunBul.Enabled = True; Exit; }
    
    if (Pos('"status":1', jsonResp) > 0) { 
      baslangic = Pos('"product_name_tr":"', jsonResp); if (baslangic > 0) { tempStr = Copy(jsonResp, baslangic + 19, Length(jsonResp)); } else { baslangic = Pos('"product_name":"', jsonResp); if (baslangic > 0) { tempStr = Copy(jsonResp, baslangic + 16, Length(jsonResp)); } }
      if (baslangic > 0) { bitis = Pos('"', tempStr) - 1; if (bitis > 0) { urunAdi = Copy(tempStr, 1, bitis); } else { urunAdi = 'Bulunamadı'; } } else { urunAdi = 'Bulunamadı'; }
      
      baslangic = Pos('"brands":"', jsonResp); if ((baslangic > 0) && (urunAdi <> 'Bulunamadı')) { tempStr = Copy(jsonResp, baslangic + 10, Length(jsonResp)); bitis = Pos('"', tempStr) - 1; if (bitis > 0) { urunAdi = Copy(tempStr, 1, bitis) + ' - ' + urunAdi; } }
    } else { urunAdi = 'Bulunamadı'; }
    
    if ((urunAdi == 'Bulunamadı') || (urunAdi == '')) { 
      lytSonucKasa.Visible = False; 
      lblUrunFotoCerceve.Visible = True; 
      lytUstKasa.Height = 520; 
      ShowMessage('Ürün bulunamadı! Kamerayı açmak için Tamam''a basın.'); 
      tmrKamera.Enabled = True; 
    } else {
      loopLimit = 0; baslangic = Pos('"', urunAdi); while ((baslangic > 0) && (loopLimit < 500)) { Delete(urunAdi, baslangic, 1); baslangic = Pos('"', urunAdi); loopLimit = loopLimit + 1; }
      loopLimit = 0; baslangic = Pos('\', urunAdi); while ((baslangic > 0) && (loopLimit < 500)) { Delete(urunAdi, baslangic, 1); baslangic = Pos('\', urunAdi); loopLimit = loopLimit + 1; }
      loopLimit = 0; baslangic = Pos(Chr(13), urunAdi); while ((baslangic > 0) && (loopLimit < 500)) { Delete(urunAdi, baslangic, 1); baslangic = Pos(Chr(13), urunAdi); loopLimit = loopLimit + 1; }
      loopLimit = 0; baslangic = Pos(Chr(10), urunAdi); while ((baslangic > 0) && (loopLimit < 500)) { Delete(urunAdi, baslangic, 1); baslangic = Pos(Chr(10), urunAdi); loopLimit = loopLimit + 1; }

      IslemTipi = 'Metin'; ArananDeger = urunAdi; memoUrunCevap.Text = 'Bulundu! AI Analiz Ediyor...'; tmrGemini.Enabled = True; 
    }
  }
}

{
  AnaSayfaForm = TclForm.Create(Self);
  AnaSayfaForm.SetFormColor('#f1f2f6', '#f1f2f6', clGVertical);

  apiUrl = ' https://brsrrtwbhyrxlyetebas.supabase.co" rel="nofollow - https://brsrrtwbhyrxlyetebas.supabase.co '; 
  apiKey = 'sb_publishable_T6KRGIkL-av7M9C-aqdrag_dJteJPcR';
  
  OpenFoodFactsApi = TCLRest.Create;
  GeminiApi = TCLRest.Create;
  ProfilApi = TCLRest.Create;
  
  prefFile = clPathCombine('userpref.txt', Clomosy.AppFilesPath);
  prefList = Clomosy.StringListNew;
  
  KullaniciEmail = '';
  if (clFileExists(prefFile, '')) { 
    prefList.LoadFromFile(prefFile, 0); 
    if (prefList.Count > 0) { KullaniciEmail = Clomosy.StringListItemString(prefList, 0); }
    if (prefList.Count > 2) { KullaniciTercihleri = Clomosy.StringListItemString(prefList, 2); } else { KullaniciTercihleri = 'Özel Bir Durumu Yok'; } 
  } else { KullaniciTercihleri = 'Özel Bir Durumu Yok'; }

  btnAnaStil = '{"Align":"Top","MarginTop":15,"MarginLeft":25,"MarginRight":25,"Height":55,"RoundHeight":15,"RoundWidth":15,"BackgroundColor":"#00b894","TextColor":"#ffffff","TextSize":16,"TextBold":"yes"}';
  
  edtStil = '{"Align":"Top","MarginTop":10,"MarginLeft":25,"MarginRight":25,"Height":55,"RoundHeight":12,"RoundWidth":12,"BorderColor":"#b2bec3","BorderWidth":1.5,"BackgroundColor":"#ffffff","TextColor":"#2d3436","TextSize":15,"TextBold":"yes"}';
  edtSoftStil = '{"Align":"Top","MarginTop":10,"MarginLeft":20,"MarginRight":20,"Height":45,"RoundHeight":10,"RoundWidth":10,"BorderColor":"#dfe6e9","BorderWidth":1.5,"BackgroundColor":"#f8f9fa","TextColor":"#2d3436","TextSize":14}';

  tmrGemini = AnaSayfaForm.AddNewTimer(AnaSayfaForm, 'tmrGemini', 200);
  tmrGemini.Enabled = False;
  AnaSayfaForm.AddNewEvent(tmrGemini, tbeOnTimer, 'TmrGeminiTick');
  
  tmrKamera = AnaSayfaForm.AddNewTimer(AnaSayfaForm, 'tmrKamera', 1000); 
  tmrKamera.Enabled = False;
  AnaSayfaForm.AddNewEvent(tmrKamera, tbeOnTimer, 'TmrKameraTick');

  scrollAna = AnaSayfaForm.AddNewVertScrollBox(AnaSayfaForm, 'scrollAna');
  scrollAna.Align = alContents; 
  scrollAna.Margins.Bottom = 0; 

  lytUstKasa = AnaSayfaForm.AddNewLayout(scrollAna, 'lytUstKasa');
  lytUstKasa.Align = alTop; 
  lytUstKasa.Height = 310; 

  lblHosGeldin = AnaSayfaForm.AddNewProLabel(lytUstKasa, 'lblHosGeldin', 'Hoş Geldin,' + #13#10 + Clomosy.GlobalVariableString);
  clComponent.SetupComponent(lblHosGeldin, '{"Align":"Top","MarginTop":30,"MarginBottom":15,"Height":60,"TextColor":"#2d3436","TextSize":22,"TextBold":"yes","TextHorizontalAlign":"center"}');

  edtBarkodSonuc = AnaSayfaForm.AddNewProEdit(lytUstKasa, 'edtBarkodSonuc','Barkod Numarası Girin');
  clComponent.SetupComponent(edtBarkodSonuc, edtStil);
  
  btnBarkodOkut = AnaSayfaForm.AddNewProButton(lytUstKasa, 'btnBarkodOkut', 'BARKOD OKUT VEYA YAZ');
  clComponent.SetupComponent(btnBarkodOkut, btnAnaStil);
  AnaSayfaForm.AddNewEvent(btnBarkodOkut, tbeOnClick, 'btnBarkodOkutClick');

  lblUrunFotoCerceve = AnaSayfaForm.AddNewProLabel(lytUstKasa, 'lblUrunFotoCerceve', '');
  clComponent.SetupComponent(lblUrunFotoCerceve, '{"Align":"Top","MarginTop":15,"MarginLeft":25,"MarginRight":25,"Height":180,"RoundHeight":15,"RoundWidth":15,"BorderColor":"#dfe6e9","BorderWidth":1,"BackgroundColor":"#ffffff"}');
  lblUrunFotoCerceve.Visible = False; 
  
  imgUrunFoto = AnaSayfaForm.AddNewImage(lblUrunFotoCerceve, 'imgUrunFoto');
  imgUrunFoto.Align = alClient; imgUrunFoto.Margins.Left = 5; imgUrunFoto.Margins.Right = 5; imgUrunFoto.Margins.Top = 5; imgUrunFoto.Margins.Bottom = 5;

  btnUrunBul = AnaSayfaForm.AddNewProButton(lytUstKasa, 'btnUrunBul', 'ÜRÜNÜ ANALİZ ET');
  clComponent.SetupComponent(btnUrunBul, btnAnaStil);
  AnaSayfaForm.AddNewEvent(btnUrunBul, tbeOnClick, 'btnUrunBulClick');

  lytSonucKasa = AnaSayfaForm.AddNewLayout(scrollAna, 'lytSonucKasa');
  lytSonucKasa.Align = alTop; lytSonucKasa.Height = 720; lytSonucKasa.Visible = False;

  lytKasaSporcu = AnaSayfaForm.AddNewLayout(lytSonucKasa, 'lytKasaSporcu');
  lytKasaSporcu.Align = alTop; lytKasaSporcu.Height = 250; lytKasaSporcu.Margins.Top = 15; lytKasaSporcu.Margins.Left = 20; lytKasaSporcu.Margins.Right = 20;
  lblKasaSporcuBg = AnaSayfaForm.AddNewProLabel(lytKasaSporcu, 'lblKasaSporcuBg', '');
  clComponent.SetupComponent(lblKasaSporcuBg, '{"Align":"Client","BackgroundColor":"#ffffff","BorderColor":"#ff7675","BorderWidth":2,"RoundHeight":15,"RoundWidth":15}');
  lytIcerikSporcu = AnaSayfaForm.AddNewLayout(lblKasaSporcuBg, 'lytIcerikSporcu');
  lytIcerikSporcu.Align = alClient;
  lblSporcuBaslik = AnaSayfaForm.AddNewProLabel(lytIcerikSporcu, 'lblSporcuBaslik', 'Genel Değerlendirme');
  clComponent.SetupComponent(lblSporcuBaslik, '{"Align":"Top","MarginTop":10,"MarginLeft":15,"Height":25,"TextColor":"#d63031","TextSize":16,"TextBold":"yes"}');
  memoSporcuCevap = AnaSayfaForm.AddNewMemo(lytIcerikSporcu, 'memoSporcuCevap', '');
  memoSporcuCevap.Align = alClient; memoSporcuCevap.Margins.Left = 10; memoSporcuCevap.Margins.Right = 10; memoSporcuCevap.Margins.Bottom = 10; memoSporcuCevap.ReadOnly = True; memoSporcuCevap.WordWrap = True;

  lytKasaColyak = AnaSayfaForm.AddNewLayout(lytSonucKasa, 'lytKasaColyak');
  lytKasaColyak.Align = alTop; lytKasaColyak.Height = 250; lytKasaColyak.Margins.Top = 15; lytKasaColyak.Margins.Left = 20; lytKasaColyak.Margins.Right = 20;
  lblKasaColyakBg = AnaSayfaForm.AddNewProLabel(lytKasaColyak, 'lblKasaColyakBg', '');
  clComponent.SetupComponent(lblKasaColyakBg, '{"Align":"Client","BackgroundColor":"#ffffff","BorderColor":"#74b9ff","BorderWidth":2,"RoundHeight":15,"RoundWidth":15}');
  lytIcerikColyak = AnaSayfaForm.AddNewLayout(lblKasaColyakBg, 'lytIcerikColyak');
  lytIcerikColyak.Align = alClient;
  lblColyakBaslik = AnaSayfaForm.AddNewProLabel(lytIcerikColyak, 'lblColyakBaslik', 'Size Özel Analiz');
  clComponent.SetupComponent(lblColyakBaslik, '{"Align":"Top","MarginTop":10,"MarginLeft":15,"Height":25,"TextColor":"#0984e3","TextSize":16,"TextBold":"yes"}');
  memoColyakCevap = AnaSayfaForm.AddNewMemo(lytIcerikColyak, 'memoColyakCevap', '');
  memoColyakCevap.Align = alClient; memoColyakCevap.Margins.Left = 10; memoColyakCevap.Margins.Right = 10; memoColyakCevap.Margins.Bottom = 10; memoColyakCevap.ReadOnly = True; memoColyakCevap.WordWrap = True;

  lytKasaUrun = AnaSayfaForm.AddNewLayout(lytSonucKasa, 'lytKasaUrun');
  lytKasaUrun.Align = alTop; lytKasaUrun.Height = 150; lytKasaUrun.Margins.Top = 15; lytKasaUrun.Margins.Left = 20; lytKasaUrun.Margins.Right = 20;
  lblKasaUrunBg = AnaSayfaForm.AddNewProLabel(lytKasaUrun, 'lblKasaUrunBg', '');
  clComponent.SetupComponent(lblKasaUrunBg, '{"Align":"Client","BackgroundColor":"#ffffff","BorderColor":"#fdcb6e","BorderWidth":2,"RoundHeight":15,"RoundWidth":15}');
  lytIcerikUrun = AnaSayfaForm.AddNewLayout(lblKasaUrunBg, 'lytIcerikUrun');
  lytIcerikUrun.Align = alClient;
  lblUrunBaslik = AnaSayfaForm.AddNewProLabel(lytIcerikUrun, 'lblUrunBaslik', 'Ürün Bilgisi');
  clComponent.SetupComponent(lblUrunBaslik, '{"Align":"Top","MarginTop":10,"MarginLeft":15,"Height":25,"TextColor":"#e17055","TextSize":16,"TextBold":"yes"}');
  memoUrunCevap = AnaSayfaForm.AddNewMemo(lytIcerikUrun, 'memoUrunCevap', '');
  memoUrunCevap.Align = alClient; memoUrunCevap.Margins.Left = 10; memoUrunCevap.Margins.Right = 10; memoUrunCevap.Margins.Bottom = 10; memoUrunCevap.ReadOnly = True; memoUrunCevap.WordWrap = True;

  lytScrollBosluk = AnaSayfaForm.AddNewLayout(scrollAna, 'lytScrollBosluk');
  lytScrollBosluk.Align = alTop; 
  lytScrollBosluk.Height = 110;

  lytProfilKasa = AnaSayfaForm.AddNewLayout(AnaSayfaForm, 'lytProfilKasa');
  lytProfilKasa.Align = alContents;
  lytProfilKasa.Visible = False; 

  scrollProfil = AnaSayfaForm.AddNewVertScrollBox(lytProfilKasa, 'scrollProfil');
  scrollProfil.Align = alClient;
  
  lblP_AdSoyad = AnaSayfaForm.AddNewProLabel(scrollProfil, 'lblP_AdSoyad', Clomosy.GlobalVariableString);
  clComponent.SetupComponent(lblP_AdSoyad, '{"Align":"Top","MarginTop":30,"Height":35,"TextColor":"#2d3436","TextSize":22,"TextBold":"yes","TextHorizontalAlign":"center"}');
  
  lblP_Email = AnaSayfaForm.AddNewProLabel(scrollProfil, 'lblP_Email', KullaniciEmail);
  clComponent.SetupComponent(lblP_Email, '{"Align":"Top","MarginTop":0,"Height":25,"TextColor":"#636e72","TextSize":14,"TextBold":"no","TextHorizontalAlign":"center"}');

  lytP_Tercihler = AnaSayfaForm.AddNewLayout(scrollProfil, 'lytP_Tercihler');
  lytP_Tercihler.Align = alTop; lytP_Tercihler.Height = 360; lytP_Tercihler.Margins.Top = 20; lytP_Tercihler.Margins.Left = 20; lytP_Tercihler.Margins.Right = 20;

  lblP_TercihKasaBg = AnaSayfaForm.AddNewProLabel(lytP_Tercihler, 'lblP_TercihKasaBg', '');
  clComponent.SetupComponent(lblP_TercihKasaBg, '{"Align":"Client","RoundHeight":15,"RoundWidth":15,"BackgroundColor":"#ffffff"}');

  lblP_TercihBaslik = AnaSayfaForm.AddNewProLabel(lblP_TercihKasaBg, 'lblP_TercihBaslik', 'Beslenme Tercihleriniz');
  clComponent.SetupComponent(lblP_TercihBaslik, '{"Align":"Top","MarginTop":15,"MarginBottom":10,"Height":25,"TextColor":"#2d3436","TextSize":16,"TextBold":"yes","TextHorizontalAlign":"center"}');

  lytP_CheckList = AnaSayfaForm.AddNewLayout(lblP_TercihKasaBg, 'lytP_CheckList');
  lytP_CheckList.Align = alClient;

  chkP_Laktoz = AnaSayfaForm.AddNewCheckBox(lytP_CheckList, 'chkP_Laktoz', ' Laktoz İntoleransı'); chkP_Laktoz.Align = alTop; chkP_Laktoz.Height = 30; chkP_Laktoz.Margins.Left = 20;
  chkP_Diyabet = AnaSayfaForm.AddNewCheckBox(lytP_CheckList, 'chkP_Diyabet', ' Diyabet (Şeker Hastalığı)'); chkP_Diyabet.Align = alTop; chkP_Diyabet.Height = 30; chkP_Diyabet.Margins.Left = 20;
  chkP_Saglikli = AnaSayfaForm.AddNewCheckBox(lytP_CheckList, 'chkP_Saglikli', ' Sağlıklı Beslenme'); chkP_Saglikli.Align = alTop; chkP_Saglikli.Height = 30; chkP_Saglikli.Margins.Left = 20;
  chkP_Vejetaryen = AnaSayfaForm.AddNewCheckBox(lytP_CheckList, 'chkP_Vejetaryen', ' Vejetaryen'); chkP_Vejetaryen.Align = alTop; chkP_Vejetaryen.Height = 30; chkP_Vejetaryen.Margins.Left = 20;
  chkP_Vegan = AnaSayfaForm.AddNewCheckBox(lytP_CheckList, 'chkP_Vegan', ' Vegan'); chkP_Vegan.Align = alTop; chkP_Vegan.Height = 30; chkP_Vegan.Margins.Left = 20;
  AnaSayfaForm.AddNewEvent(chkP_Vegan, tbeOnClick, 'ChkP_VeganClick'); 
  chkP_Sporcu = AnaSayfaForm.AddNewCheckBox(lytP_CheckList, 'chkP_Sporcu', ' Sporcuyum'); chkP_Sporcu.Align = alTop; chkP_Sporcu.Height = 30; chkP_Sporcu.Margins.Left = 20;
  chkP_Colyak = AnaSayfaForm.AddNewCheckBox(lytP_CheckList, 'chkP_Colyak', ' Çölyak Hastasıyım'); chkP_Colyak.Align = alTop; chkP_Colyak.Height = 30; chkP_Colyak.Margins.Left = 20;
  
  if (Pos('Laktoz', KullaniciTercihleri) > 0) { chkP_Laktoz.isChecked = True; }
  if (Pos('Diyabet', KullaniciTercihleri) > 0) { chkP_Diyabet.isChecked = True; }
  if (Pos('Sağlıklı', KullaniciTercihleri) > 0) { chkP_Saglikli.isChecked = True; }
  if (Pos('Vejetaryen', KullaniciTercihleri) > 0) { chkP_Vejetaryen.isChecked = True; }
  if (Pos('Vegan', KullaniciTercihleri) > 0) { chkP_Vegan.isChecked = True; chkP_Vejetaryen.Enabled = False; }
  if (Pos('Sporcu', KullaniciTercihleri) > 0) { chkP_Sporcu.isChecked = True; }
  if (Pos('Çölyak', KullaniciTercihleri) > 0) { chkP_Colyak.isChecked = True; }

  btnP_TercihKaydet = AnaSayfaForm.AddNewProButton(lblP_TercihKasaBg, 'btnP_TercihKaydet', 'GÜNCELLE');
  clComponent.SetupComponent(btnP_TercihKaydet, '{"Align":"Bottom","MarginBottom":15,"MarginLeft":20,"MarginRight":20,"Height":45,"RoundHeight":10,"RoundWidth":10,"BackgroundColor":"#00b894","TextColor":"#ffffff","TextSize":14,"TextBold":"yes"}');
  AnaSayfaForm.AddNewEvent(btnP_TercihKaydet, tbeOnClick, 'BtnP_TercihKaydetClick');

  lytP_Sifre = AnaSayfaForm.AddNewLayout(scrollProfil, 'lytP_Sifre');
  lytP_Sifre.Align = alTop; lytP_Sifre.Height = 300; lytP_Sifre.Margins.Top = 20; lytP_Sifre.Margins.Left = 20; lytP_Sifre.Margins.Right = 20;

  lblP_SifreKasaBg = AnaSayfaForm.AddNewProLabel(lytP_Sifre, 'lblP_SifreKasaBg', '');
  clComponent.SetupComponent(lblP_SifreKasaBg, '{"Align":"Client","RoundHeight":15,"RoundWidth":15,"BackgroundColor":"#ffffff"}');

  lblP_SifreBaslik = AnaSayfaForm.AddNewProLabel(lblP_SifreKasaBg, 'lblP_SifreBaslik', 'Şifre İşlemleri');
  clComponent.SetupComponent(lblP_SifreBaslik, '{"Align":"Top","MarginTop":15,"Height":30,"TextColor":"#2d3436","TextSize":16,"TextBold":"yes","TextHorizontalAlign":"center"}');

  edtP_EskiSifre = AnaSayfaForm.AddNewProEdit(lblP_SifreKasaBg, 'edtP_EskiSifre', 'Mevcut Şifreniz'); edtP_EskiSifre.Password = True;
  clComponent.SetupComponent(edtP_EskiSifre, edtSoftStil);
  imgP_EskiSifre = AnaSayfaForm.AddNewProImage(edtP_EskiSifre, 'imgP_EskiSifre');
  clComponent.SetupComponent(imgP_EskiSifre, '{"Align":"Right","Width":25,"MarginRight":10,"MarginTop":10,"MarginBottom":10}');
  AnaSayfaForm.SetImage(imgP_EskiSifre, ' https://i.ibb.co/Z1V7rfXV/kapal-g-z.png" rel="nofollow - https://i.ibb.co/Z1V7rfXV/kapal-g-z.png ');
  AnaSayfaForm.AddNewEvent(imgP_EskiSifre, tbeOnClick, 'P_SifreGizleGosterEski');
  
  edtP_Sifre = AnaSayfaForm.AddNewProEdit(lblP_SifreKasaBg, 'edtP_Sifre', 'Yeni Şifre'); edtP_Sifre.Password = True;
  clComponent.SetupComponent(edtP_Sifre, edtSoftStil);
  imgP_Sifre = AnaSayfaForm.AddNewProImage(edtP_Sifre, 'imgP_Sifre');
  clComponent.SetupComponent(imgP_Sifre, '{"Align":"Right","Width":25,"MarginRight":10,"MarginTop":10,"MarginBottom":10}');
  AnaSayfaForm.SetImage(imgP_Sifre, ' https://i.ibb.co/Z1V7rfXV/kapal-g-z.png" rel="nofollow - https://i.ibb.co/Z1V7rfXV/kapal-g-z.png ');
  AnaSayfaForm.AddNewEvent(imgP_Sifre, tbeOnClick, 'P_SifreGizleGosterYeni');
  
  edtP_SifreTekrar = AnaSayfaForm.AddNewProEdit(lblP_SifreKasaBg, 'edtP_SifreTekrar', 'Yeni Şifre (Tekrar)'); edtP_SifreTekrar.Password = True;
  clComponent.SetupComponent(edtP_SifreTekrar, edtSoftStil);
  imgP_SifreTekrar = AnaSayfaForm.AddNewProImage(edtP_SifreTekrar, 'imgP_SifreTekrar');
  clComponent.SetupComponent(imgP_SifreTekrar, '{"Align":"Right","Width":25,"MarginRight":10,"MarginTop":10,"MarginBottom":10}');
  AnaSayfaForm.SetImage(imgP_SifreTekrar, ' https://i.ibb.co/Z1V7rfXV/kapal-g-z.png" rel="nofollow - https://i.ibb.co/Z1V7rfXV/kapal-g-z.png ');
  AnaSayfaForm.AddNewEvent(imgP_SifreTekrar, tbeOnClick, 'P_SifreGizleGosterTekrar');

  lblP_SifreKurallari = AnaSayfaForm.AddNewProLabel(lblP_SifreKasaBg, 'lblP_SifreKurallari', 'Şifre: 8-50 karakter, 1 büyük, 1 küçük, 1 rakam, 1 özel krk.');
  clComponent.SetupComponent(lblP_SifreKurallari, '{"Align":"Top","MarginTop":5,"MarginLeft":25,"MarginRight":25,"Height":20,"TextColor":"#7f8c8d","TextSize":11,"TextBold":"no"}');

  btnP_SifreKaydet = AnaSayfaForm.AddNewProButton(lblP_SifreKasaBg, 'btnP_SifreKaydet', 'ŞİFREYİ DEĞİŞTİR');
  clComponent.SetupComponent(btnP_SifreKaydet, '{"Align":"Bottom","MarginBottom":15,"MarginLeft":20,"MarginRight":20,"Height":45,"RoundHeight":10,"RoundWidth":10,"BackgroundColor":"#ffffff","BorderColor":"#00b894","BorderWidth":2,"TextColor":"#00b894","TextSize":14,"TextBold":"yes"}');
  AnaSayfaForm.AddNewEvent(btnP_SifreKaydet, tbeOnClick, 'BtnP_SifreKaydetClick');

  lytP_HesapSil = AnaSayfaForm.AddNewLayout(scrollProfil, 'lytP_HesapSil');
  lytP_HesapSil.Align = alTop; lytP_HesapSil.Height = 55; lytP_HesapSil.Margins.Top = 20; lytP_HesapSil.Margins.Left = 20; lytP_HesapSil.Margins.Right = 20;
  
  btnP_HesapSil = AnaSayfaForm.AddNewProButton(lytP_HesapSil, 'btnP_HesapSil', 'Hesabımı Kalıcı Olarak Sil');
  clComponent.SetupComponent(btnP_HesapSil, '{"Align":"Client","RoundHeight":15,"RoundWidth":15,"BackgroundColor":"#ffe0e0","TextColor":"#d63031","TextSize":14,"TextBold":"yes"}');
  AnaSayfaForm.AddNewEvent(btnP_HesapSil, tbeOnClick, 'BtnP_HesapSilSoru');

  lytP_Bosluk = AnaSayfaForm.AddNewLayout(scrollProfil, 'lytP_Bosluk');
  lytP_Bosluk.Align = alTop; 
  lytP_Bosluk.Height = 150;

  lytBottomContainer = AnaSayfaForm.AddNewLayout(AnaSayfaForm, 'lytBottomContainer');
  lytBottomContainer.Align = alBottom; 
  lytBottomContainer.Height = 100; 

  lytBottomBarBg = AnaSayfaForm.AddNewLayout(lytBottomContainer, 'lytBottomBarBg');
  lytBottomBarBg.Align = alClient; 
  
  lblBarBg = AnaSayfaForm.AddNewProLabel(lytBottomBarBg, 'lblBarBg', '');
  clComponent.SetupComponent(lblBarBg, '{"Align":"Client","BackgroundColor":"#ffffff","BorderColor":"#e0e0e0","BorderWidth":1.5,"RoundHeight":30,"RoundWidth":30,"MarginLeft":15,"MarginRight":15,"MarginBottom":10,"MarginTop":30}');

  lytIconsLayer = AnaSayfaForm.AddNewLayout(lytBottomContainer, 'lytIconsLayer');
  lytIconsLayer.Align = alClient; 

  lytNavLeft = AnaSayfaForm.AddNewLayout(lytIconsLayer, 'lytNavLeft');
  lytNavLeft.Align = alLeft; 
  lytNavLeft.Width = 80;
  lytNavLeft.Margins.Left = 50; 
  lytNavLeft.Margins.Top = 30; 
  lytNavLeft.Margins.Bottom = 20;
  
  lblNavLeftBg = AnaSayfaForm.AddNewProLabel(lytNavLeft, 'lblNavLeftBg', '');
  clComponent.SetupComponent(lblNavLeftBg, '{"Align":"Center","Width":70,"Height":70,"BackgroundColor":"#00b894","BorderColor":"#ffffff","BorderWidth":5,"RoundHeight":35,"RoundWidth":35}');
  lblNavLeftBg.Visible = False; 

  imgNavLeft = AnaSayfaForm.AddNewImage(lytNavLeft, 'imgNavLeft');
  imgNavLeft.Align = alCenter;
  imgNavLeft.Width = 40; imgNavLeft.Height = 40; 
  AnaSayfaForm.SetImage(imgNavLeft, ' https://i.ibb.co/XZstP4XY/profil-T.png" rel="nofollow - https://i.ibb.co/XZstP4XY/profil-T.png ');
  AnaSayfaForm.AddNewEvent(imgNavLeft, tbeOnClick, 'SoldakiButonTikladi');
  AnaSayfaForm.AddNewEvent(lblNavLeftBg, tbeOnClick, 'SoldakiButonTikladi');
  imgNavLeft.BringToFront; 

  lytNavMiddle = AnaSayfaForm.AddNewLayout(lytIconsLayer, 'lytNavMiddle');
  lytNavMiddle.Align = alCenter; 
  lytNavMiddle.Width = 80; 
  lytNavMiddle.Margins.Top = 0; 
  lytNavMiddle.Margins.Bottom = 30; 

  lblNavMiddleBg = AnaSayfaForm.AddNewProLabel(lytNavMiddle, 'lblNavMiddleBg', '');
  clComponent.SetupComponent(lblNavMiddleBg, '{"Align":"Center","Width":70,"Height":70,"BackgroundColor":"#00b894","BorderColor":"#ffffff","BorderWidth":5,"RoundHeight":35,"RoundWidth":35}');
  lblNavMiddleBg.Visible = True; 
  
  imgNavMiddle = AnaSayfaForm.AddNewImage(lytNavMiddle, 'imgNavMiddle');
  imgNavMiddle.Align = alCenter;
  imgNavMiddle.Width = 40; imgNavMiddle.Height = 40; 
  AnaSayfaForm.SetImage(imgNavMiddle, ' https://i.ibb.co/wF4GMPzm/home-T.png" rel="nofollow - https://i.ibb.co/wF4GMPzm/home-T.png '); 
  AnaSayfaForm.AddNewEvent(imgNavMiddle, tbeOnClick, 'OrtadakiButonTikladi'); 
  AnaSayfaForm.AddNewEvent(lblNavMiddleBg, tbeOnClick, 'OrtadakiButonTikladi'); 
  imgNavMiddle.BringToFront;

  lytNavRight = AnaSayfaForm.AddNewLayout(lytIconsLayer, 'lytNavRight');
  lytNavRight.Align = alRight; 
  lytNavRight.Width = 80;
  lytNavRight.Margins.Right = 50; 
  lytNavRight.Margins.Top = 30; 
  lytNavRight.Margins.Bottom = 20;

  imgNavRight = AnaSayfaForm.AddNewImage(lytNavRight, 'imgNavRight');
  imgNavRight.Align = alCenter;
  imgNavRight.Width = 40; imgNavRight.Height = 40;
  AnaSayfaForm.SetImage(imgNavRight, ' https://i.ibb.co/LzrRzZ3t/cikis-T.png" rel="nofollow - https://i.ibb.co/LzrRzZ3t/cikis-T.png '); 
  AnaSayfaForm.AddNewEvent(imgNavRight, tbeOnClick, 'BtnCikisSoru');

  lytLogoutOverlay = AnaSayfaForm.AddNewLayout(AnaSayfaForm, 'lytLogoutOverlay');
  lytLogoutOverlay.Align = alContents; 
  lytLogoutOverlay.Visible = False;

  lblLogoutArkaplan = AnaSayfaForm.AddNewProLabel(lytLogoutOverlay, 'lblLogoutArkaplan', '');
  clComponent.SetupComponent(lblLogoutArkaplan, '{"Align":"Client","BackgroundColor":"#000000"}'); 
  lblLogoutArkaplan.Opacity = 0.6; 
  AnaSayfaForm.AddNewEvent(lblLogoutArkaplan, tbeOnClick, 'BtnCikisIptal');

  lytLogoutKasa = AnaSayfaForm.AddNewLayout(lytLogoutOverlay, 'lytLogoutKasa');
  lytLogoutKasa.Align = alCenter;
  lytLogoutKasa.Width = 320; lytLogoutKasa.Height = 160;

  lblLogoutKasaBg = AnaSayfaForm.AddNewProLabel(lytLogoutKasa, 'lblLogoutKasaBg', '');
  clComponent.SetupComponent(lblLogoutKasaBg, '{"Align":"Client","BackgroundColor":"#ffffff","RoundHeight":20,"RoundWidth":20}');

  lblLogoutSoru = AnaSayfaForm.AddNewProLabel(lblLogoutKasaBg, 'lblLogoutSoru', 'Çıkış yapmak istediğinize' + #13#10 + 'emin misiniz?');
  clComponent.SetupComponent(lblLogoutSoru, '{"Align":"Top","MarginTop":25,"MarginLeft":10,"MarginRight":10,"Height":50,"TextColor":"#2d3436","TextSize":16,"TextBold":"yes","TextHorizontalAlign":"center"}');

  lytLogoutBtnKasa = AnaSayfaForm.AddNewLayout(lblLogoutKasaBg, 'lytLogoutBtnKasa');
  lytLogoutBtnKasa.Align = alBottom; lytLogoutBtnKasa.Height = 50; lytLogoutBtnKasa.Margins.Bottom = 20; lytLogoutBtnKasa.Margins.Left = 20; lytLogoutBtnKasa.Margins.Right = 20;

  btnLogoutIptal = AnaSayfaForm.AddNewProButton(lytLogoutBtnKasa, 'btnLogoutIptal', 'İptal');
  clComponent.SetupComponent(btnLogoutIptal, '{"Align":"Left","Width":130,"Height":45,"BackgroundColor":"#f1f2f6","TextColor":"#2d3436","TextSize":14,"TextBold":"yes","RoundHeight":10,"RoundWidth":10}');
  AnaSayfaForm.AddNewEvent(btnLogoutIptal, tbeOnClick, 'BtnCikisIptal');

  btnLogoutEvet = AnaSayfaForm.AddNewProButton(lytLogoutBtnKasa, 'btnLogoutEvet', 'Çıkış Yap');
  clComponent.SetupComponent(btnLogoutEvet, '{"Align":"Right","Width":130,"Height":45,"BackgroundColor":"#00b894","TextColor":"#ffffff","TextSize":14,"TextBold":"yes","RoundHeight":10,"RoundWidth":10}');
  AnaSayfaForm.AddNewEvent(btnLogoutEvet, tbeOnClick, 'BtnCikisEvet');

  lytHesapSilOverlay = AnaSayfaForm.AddNewLayout(AnaSayfaForm, 'lytHesapSilOverlay');
  lytHesapSilOverlay.Align = alContents; 
  lytHesapSilOverlay.Visible = False;

  lblHesapSilArkaplan = AnaSayfaForm.AddNewProLabel(lytHesapSilOverlay, 'lblHesapSilArkaplan', '');
  clComponent.SetupComponent(lblHesapSilArkaplan, '{"Align":"Client","BackgroundColor":"#000000"}'); 
  lblHesapSilArkaplan.Opacity = 0.8; 
  AnaSayfaForm.AddNewEvent(lblHesapSilArkaplan, tbeOnClick, 'BtnP_HesapSilIptal');

  lytHesapSilKasa = AnaSayfaForm.AddNewLayout(lytHesapSilOverlay, 'lytHesapSilKasa');
  lytHesapSilKasa.Align = alCenter;
  lytHesapSilKasa.Width = 320; lytHesapSilKasa.Height = 180;

  lblHesapSilKasaBg = AnaSayfaForm.AddNewProLabel(lytHesapSilKasa, 'lblHesapSilKasaBg', '');
  clComponent.SetupComponent(lblHesapSilKasaBg, '{"Align":"Client","BackgroundColor":"#ffffff","RoundHeight":25,"RoundWidth":25}');

  lblHesapSilSoru = AnaSayfaForm.AddNewProLabel(lblHesapSilKasaBg, 'lblHesapSilSoru', 'Hesabınızı kalıcı olarak' + #13#10 + 'silmek istediğinize emin misiniz?');
  clComponent.SetupComponent(lblHesapSilSoru, '{"Align":"Top","MarginTop":25,"MarginLeft":10,"MarginRight":10,"Height":50,"TextColor":"#d63031","TextSize":15,"TextBold":"yes","TextHorizontalAlign":"center"}');

  lytHesapSilBtnKasa = AnaSayfaForm.AddNewLayout(lblHesapSilKasaBg, 'lytHesapSilBtnKasa');
  lytHesapSilBtnKasa.Align = alBottom; lytHesapSilBtnKasa.Height = 50; lytHesapSilBtnKasa.Margins.Bottom = 20; lytHesapSilBtnKasa.Margins.Left = 20; lytHesapSilBtnKasa.Margins.Right = 20;

  btnHesapSilIptal = AnaSayfaForm.AddNewProButton(lytHesapSilBtnKasa, 'btnHesapSilIptal', 'İptal');
  clComponent.SetupComponent(btnHesapSilIptal, '{"Align":"Left","Width":130,"Height":45,"BackgroundColor":"#f1f2f6","TextColor":"#2d3436","TextSize":14,"TextBold":"yes","RoundHeight":10,"RoundWidth":10}');
  AnaSayfaForm.AddNewEvent(btnHesapSilIptal, tbeOnClick, 'BtnP_HesapSilIptal');

  btnHesapSilEvet = AnaSayfaForm.AddNewProButton(lytHesapSilBtnKasa, 'btnHesapSilEvet', 'Evet, Sil');
  clComponent.SetupComponent(btnHesapSilEvet, '{"Align":"Right","Width":130,"Height":45,"BackgroundColor":"#ff7675","TextColor":"#ffffff","TextSize":14,"TextBold":"yes","RoundHeight":10,"RoundWidth":10}');
  AnaSayfaForm.AddNewEvent(btnHesapSilEvet, tbeOnClick, 'BtnP_HesapSilEvet');

  AnaSayfaForm.Run;
}
https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 11 Mayıs 2026 Saat 21:33
Merhaba Berat,

Bu durum senden kaynaklı değil proje geliştirmeye android devam eder misin IOS ile ilgili olan durumu ben teknik ekibe ileteceğim.  https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">




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