Sayfayı Yazdır | Pencereyi Kapat

Görsellerin Sürüklenmesi

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=1109
Tarih: 22 Temmuz 2025 Saat 20:47
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Görsellerin Sürüklenmesi
Mesajı Yazan: Raziye Nur
Konu: Görsellerin Sürüklenmesi
Mesaj Tarihi: 21 Temmuz 2025 Saat 14:33
Merhaba devremdeki boş yere görselleri sürükleyip kontrol et butonuna bastıktan sonra ampul yandı ya da yanmadı şeklinde uyarı vermesini istiyorum ama görsellerin hepsi aynı yere yukarı doğru sürükleniyor ve butona bastığımda doğru yerde olmamasına rağmen ampul yandı olarak gözüküyor sürüklemeyi doğru yapmama yardımcı olabilir misiniz?
var
  MyForm: TclForm;
  DevrePanel: TCLProPanel;
  ImgBakirTel, DevreGorsel, ImgTahta, ImgCivi, ImgLastik: TCLImage;
  SecilenMalzeme: String; // Seçilen malzeme adını tutacak
  BtnKontrol: TCLProButton;

// Hareket fonksiyonları
void HareketEttirBakirTel;
{
  ImgBakirTel.Position.X = MyForm.clSenderMousePosX - 25;
  ImgBakirTel.Position.Y = MyForm.clSenderMousePosY - 25;
  SecilenMalzeme = 'BakirTel';
}

void HareketEttirTahta;
{
  ImgTahta.Position.X = MyForm.clSenderMousePosX - 25;
  ImgTahta.Position.Y = MyForm.clSenderMousePosY - 25;
  SecilenMalzeme = 'Tahta';
}

void HareketEttirCivi;
{
  ImgCivi.Position.X = MyForm.clSenderMousePosX - 25;
  ImgCivi.Position.Y = MyForm.clSenderMousePosY - 25;
  SecilenMalzeme = 'Civi';
}

void HareketEttirLastik;
{
  ImgLastik.Position.X = MyForm.clSenderMousePosX - 25;
  ImgLastik.Position.Y = MyForm.clSenderMousePosY - 25;
  SecilenMalzeme = 'Lastik';
}

// Kontrol butonu fonksiyonu
void KontrolEt;
{
  if (SecilenMalzeme == '')
  {
    ShowMessage('Önce bir malzeme sürükleyip devreye koymalısın.');
  }
  else if (SecilenMalzeme == 'BakirTel')
   {
    ShowMessage('Tebrikler! Devre tamamlandı ve ampul yandı! 💡');
  }
  else if (SecilenMalzeme == 'Civi')
  {
    ShowMessage('Tebrikler! Devre tamamlandı ve ampul yandı! 💡');
  }
 
  else if (SecilenMalzeme == 'Tahta')
  {
    ShowMessage('Devre tamamlanamadı, ampul yanmadı.');
  }
  else if (SecilenMalzeme == 'Lastik')
  {
  ShowMessage ('Devre tamamlanamadı, ampul yanmadı.');
  }
}


{
  MyForm = TclForm.Create(Self);
  SecilenMalzeme = ''; // Başlangıçta boş

  
  DevrePanel = MyForm.AddNewProPanel(MyForm, 'DevrePanel');
  DevrePanel.Align = alClient;
  DevrePanel.clProSettings.BackgroundColor = nil;
  DevrePanel.SetclProSettings(DevrePanel.clProSettings);

  // Devre görseli
  DevreGorsel = MyForm.AddNewImage(DevrePanel, 'DevreGorsel');
  DevreGorsel.Align = alClient;
  MyForm.SetImage(DevreGorsel, ' https://resmim.net/cdn/2025/07/21/XXnvec.jpg" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXnvec.jpg '); // açık devre görseli

  
  ImgBakirTel = MyForm.AddNewImage(DevrePanel, 'ImgBakirTel');
  ImgBakirTel.Align = alNone; 
  ImgBakirTel.Width = 50; 
  ImgBakirTel.Height = 50;
  ImgBakirTel.Position.X = 20; 
  ImgBakirTel.Position.Y = 100;
  MyForm.SetImage(ImgBakirTel, ' https://resmim.net/cdn/2025/07/21/XXGRK2.png" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXGRK2.png ');
  MyForm.AddNewEvent(ImgBakirTel, tbeOnMouseMove, 'HareketEttirBakirTel');

  ImgTahta = MyForm.AddNewImage(DevrePanel, 'ImgTahta');
  ImgTahta.Align = alNone; 
  ImgTahta.Width = 50;
  ImgTahta.Height = 50;
  ImgTahta.Position.X = 20; 
  ImgTahta.Position.Y = 200;
  MyForm.SetImage(ImgTahta, ' https://resmim.net/cdn/2025/07/21/XXGhWL.png" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXGhWL.png ');
  MyForm.AddNewEvent(ImgTahta, tbeOnMouseMove, 'HareketEttirTahta');

  ImgCivi = MyForm.AddNewImage(DevrePanel, 'ImgCivi');
  ImgCivi.Align = alNone; 
  ImgCivi.Width = 50;
  ImgCivi.Height = 50;
  ImgCivi.Position.X = 20;
  ImgCivi.Position.Y = 300;
  MyForm.SetImage(ImgCivi, ' https://resmim.net/cdn/2025/07/21/XXGpL7.png" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXGpL7.png ');
  MyForm.AddNewEvent(ImgCivi, tbeOnMouseMove, 'HareketEttirCivi');

  ImgLastik = MyForm.AddNewImage(DevrePanel, 'ImgLastik');
  ImgLastik.Align = alNone; 
  ImgLastik.Width = 50; 
  ImgLastik.Height = 50;
  ImgLastik.Position.X = 20;
  ImgLastik.Position.Y = 400;
  MyForm.SetImage(ImgLastik, ' https://resmim.net/cdn/2025/07/21/XXaWwI.png" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXaWwI.png ');
  MyForm.AddNewEvent(ImgLastik, tbeOnMouseMove, 'HareketEttirLastik');

  // 
  BtnKontrol = MyForm.AddNewProButton(MyForm, 'BtnKontrol', 'Kontrol Et');
  BtnKontrol.Align = alBottom;
  BtnKontrol.Height = 50;
  BtnKontrol.clProSettings.FontSize = 18;
  BtnKontrol.SetclProSettings(BtnKontrol.clProSettings);
  MyForm.AddNewEvent(BtnKontrol, tbeOnClick, 'KontrolEt');

  MyForm.Run;
}



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 22 Temmuz 2025 Saat 09:38
var
  MyForm: TclForm;
  DevrePanel: TCLProPanel;
  ImgBakirTel, DevreGorsel, ImgTahta, ImgCivi, ImgLastik: TCLImage;
  SecilenMalzeme: String;
  BtnKontrol: TCLProButton;
  SuruklenenMalzeme: TCLImage;

void SuruklemeBaslatBakirTel;
{
  SuruklenenMalzeme = ImgBakirTel;
  SecilenMalzeme = 'BakirTel';
}

{
  SuruklenenMalzeme = ImgTahta;
  SecilenMalzeme = 'Tahta';
}

{
  SuruklenenMalzeme = ImgCivi;
  SecilenMalzeme = 'Civi';
}

void SuruklemeBaslatLastik;
{
  SuruklenenMalzeme = ImgLastik;
  SecilenMalzeme = 'Lastik';
}

void SuruklemeSirasinda;
{
  if (SuruklenenMalzeme <> nil) {
    SuruklenenMalzeme.Position.X = MyForm.clSenderMousePosX - 25;
    SuruklenenMalzeme.Position.Y = MyForm.clSenderMousePosY - 25;
  }
}

void SuruklemeBitti;
{
  SuruklenenMalzeme = nil;
}

void KontrolEt;
  var 
  malzemeMerkezX, malzemeMerkezY: Integer;
   mesafe: Integer;
   devreMerkezX, devreMerkezY: Integer;
{
  
  devreMerkezX = DevreGorsel.Position.X + (DevreGorsel.Width div 2);
  devreMerkezY = DevreGorsel.Position.Y + (DevreGorsel.Height div 2);
  
  if (SecilenMalzeme == '') {
    ShowMessage('Önce bir malzeme sürükleyip devreye koymalısın.');
    exit;
  }
  
  if (SecilenMalzeme == 'BakirTel') {
    malzemeMerkezX = ImgBakirTel.Position.X + (ImgBakirTel.Width div 2);
    malzemeMerkezY = ImgBakirTel.Position.Y + (ImgBakirTel.Height div 2);
  }
  else if (SecilenMalzeme == 'Tahta') {
    malzemeMerkezX = ImgTahta.Position.X + (ImgTahta.Width div 2);
    malzemeMerkezY = ImgTahta.Position.Y + (ImgTahta.Height div 2);
  }
  else if (SecilenMalzeme == 'Civi') {
    malzemeMerkezX = ImgCivi.Position.X + (ImgCivi.Width div 2);
    malzemeMerkezY = ImgCivi.Position.Y + (ImgCivi.Height div 2);
  }
  else if (SecilenMalzeme == 'Lastik') {
    malzemeMerkezX = ImgLastik.Position.X + (ImgLastik.Width div 2);
    malzemeMerkezY = ImgLastik.Position.Y + (ImgLastik.Height div 2);
  }
  
  mesafe = Round(Sqrt(Power(devreMerkezX - malzemeMerkezX, 2) + Power(devreMerkezY - malzemeMerkezY, 2)));
  
  if (mesafe <= 100) {
    if ((SecilenMalzeme == 'BakirTel') || (SecilenMalzeme == 'Civi')) {
      ShowMessage('Tebrikler! Devre tamamlandı ve ampul yandı! 💡');
      MyForm.SetImage(DevreGorsel, ' https://resmim.net/cdn/2025/07/21/XXnvec.jpg" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXnvec.jpg ');
    }
    else {
      ShowMessage('Devre tamamlanamadı, ampul yanmadı. İletken malzeme kullanmalısın.');
    }
  }
  else {
    ShowMessage('Malzemeyi devre alanına daha yakın yerleştirmelisin.');
  }
}

{
  MyForm = TclForm.Create(Self);
  SecilenMalzeme = '';
  SuruklenenMalzeme = nil;

  DevrePanel = MyForm.AddNewProPanel(MyForm, 'DevrePanel');
  DevrePanel.Align = alClient;
  DevrePanel.clProSettings.BackgroundColor = clAlphaColor.clWhite;
  DevrePanel.SetclProSettings(DevrePanel.clProSettings);

  DevreGorsel = MyForm.AddNewImage(DevrePanel, 'DevreGorsel');
  DevreGorsel.Align = alNone;
  DevreGorsel.Width = 300;
  DevreGorsel.Height = 200;
  DevreGorsel.Position.X = 200;
  DevreGorsel.Position.Y = 150;
  MyForm.SetImage(DevreGorsel, ' https://resmim.net/cdn/2025/07/21/XXnvec.jpg" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXnvec.jpg ');

  ImgBakirTel = MyForm.AddNewImage(DevrePanel, 'ImgBakirTel');
  ImgBakirTel.Align = alNone; 
  ImgBakirTel.Width = 50; 
  ImgBakirTel.Height = 50;
  ImgBakirTel.Position.X = 20; 
  ImgBakirTel.Position.Y = 100;
  MyForm.SetImage(ImgBakirTel, ' https://resmim.net/cdn/2025/07/21/XXGRK2.png" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXGRK2.png ');
  MyForm.AddNewEvent(ImgBakirTel, tbeOnMouseDown, 'SuruklemeBaslatBakirTel');

  ImgTahta = MyForm.AddNewImage(DevrePanel, 'ImgTahta');
  ImgTahta.Align = alNone; 
  ImgTahta.Width = 50;
  ImgTahta.Height = 50;
  ImgTahta.Position.X = 20; 
  ImgTahta.Position.Y = 200;
  MyForm.SetImage(ImgTahta, ' https://resmim.net/cdn/2025/07/21/XXGhWL.png" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXGhWL.png ');
  MyForm.AddNewEvent(ImgTahta, tbeOnMouseDown, 'SuruklemeBaslatTahta');

  ImgCivi = MyForm.AddNewImage(DevrePanel, 'ImgCivi');
  ImgCivi.Align = alNone; 
  ImgCivi.Width = 50;
  ImgCivi.Height = 50;
  ImgCivi.Position.X = 20;
  ImgCivi.Position.Y = 300;
  MyForm.SetImage(ImgCivi, ' https://resmim.net/cdn/2025/07/21/XXGpL7.png" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXGpL7.png ');
  MyForm.AddNewEvent(ImgCivi, tbeOnMouseDown, 'SuruklemeBaslatCivi');

  ImgLastik = MyForm.AddNewImage(DevrePanel, 'ImgLastik');
  ImgLastik.Align = alNone; 
  ImgLastik.Width = 50; 
  ImgLastik.Height = 50;
  ImgLastik.Position.X = 20;
  ImgLastik.Position.Y = 400;
  MyForm.SetImage(ImgLastik, ' https://resmim.net/cdn/2025/07/21/XXaWwI.png" rel="nofollow - https://resmim.net/cdn/2025/07/21/XXaWwI.png ');
  MyForm.AddNewEvent(ImgLastik, tbeOnMouseDown, 'SuruklemeBaslatLastik');

  MyForm.AddNewEvent(DevrePanel, tbeOnMouseMove, 'SuruklemeSirasinda');
  MyForm.AddNewEvent(DevrePanel, tbeOnMouseUp, 'SuruklemeBitti');

  BtnKontrol = MyForm.AddNewProButton(MyForm, 'BtnKontrol', 'Kontrol Et');
  BtnKontrol.Align = alBottom;
  BtnKontrol.Height = 50;
  BtnKontrol.clProSettings.FontSize = 18;
  BtnKontrol.SetclProSettings(BtnKontrol.clProSettings);
  MyForm.AddNewEvent(BtnKontrol, tbeOnClick, 'KontrolEt');

  MyForm.Run;
}

Merhaba Raziye Bu şekilde dener misin 


Mesajı Yazan: Raziye Nur
Mesaj Tarihi: 22 Temmuz 2025 Saat 09:52
Merhaba hocam şimdi de görsel sağa kaydı mobil üzerinde yaptığım için gözükmüyor



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