runtime de yanyana gelen objeyi yoketme veya gizlemek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mustafeyn
Üye
Mesajlar: 15
Kayıt: 02 Oca 2009 03:08

runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen mustafeyn »

Slm Arkadaşlar Amatörce ilgilendiğim delphide kendimi geliştirmek için form üzerinde bir buton koydum 10 tane shape koydum yön tuşları ile butonu hareket ettirip shapelerin üzerine geldiğimde hangi shapenin üzerindeysem o shapenin yok olmasını veya gizlenmesini istiyorum ancak shapelerin left veya top özelliğini kullandığımda bir shapenin üzerinde iken aynı left teki tüm shapeler yok oluyor bunu nasıl engelleyip sadece o shapenin yok olmasını sağlaya bilirim.Konu hakkında aradım her hangi bir kaynak kod bulamadım ilgilenlere şimdiden teşekkür ederim..
En son mustafeyn tarafından 30 Eyl 2011 02:58 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Re: RUNTİME DA ÜST ÜSTE GELEN OBJEYİ GİZLEME VEYA YOK ETME

Mesaj gönderen ALUCARD »

Öncelikli olarak başlığını küçük harflerle yazınız.

mussimsek abim görürse çok kızar

viewtopic.php?f=2&t=6 adresinde derki
* Lütfen Mesajın ve başlığın tümünü büyük harflerle yazmayın. Büyük harflerle yazmanın net kullanıcıları arasında bağırmak anlamına geldiğini unutmayın.
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
aligel54
Üye
Mesajlar: 41
Kayıt: 20 Nis 2009 11:34

Re: runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen aligel54 »

Bismillahirrahmanirrahim.

Bu forumda yazdığım ilk cevap...


Her hareketten sonra aşağıdaki procedure ü çalıştırdığında form üzerindeki shape nesneleri istediğin hareketi yapacaktır.

Kod: Tümünü seç

procedure TForm1.Kontrol;
var
  i:integer;
  Kutu:TShape;
begin
  for i:=0 to Componentcount-1 do
  begin
    if Components[i] is TShape then
    begin

      Kutu:=Components[i] as TShape;
      Kutu.Visible:=//  aşağıdaki şartlardan herhangi biri oluşursa kutu gözükecek... oluşmazsa buton kutuya değiyordur... bu sebeple gözükmeyecek
              (Button1.Left>Kutu.Left+Kutu.Width)  // Butonun sol kenarı  Shape'in sağ kenarının sağındaysa
              or
              (Button1.Top>Kutu.Top+Kutu.Height)  // Butonun üst kenarı  Shape'in alt kenarının altındaysa
              or
              (Button1.Left+Button1.Width<Kutu.Left)  // Butonun sağ kenarı  Shape'in ssol kenarının solundaysa
              or
              (Button1.Top+Button1.Height<Kutu.Top);  // Butonun alt kenarı  Shape'in üst kenarının üstündeyse
    end;
  end;
end;
mustafeyn
Üye
Mesajlar: 15
Kayıt: 02 Oca 2009 03:08

Re: runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen mustafeyn »

sayın aligel54 kardeş Allah razı olsun emeğine ve bilgine sağlık ancak ben bu kodu kullanınca hata veriyor kodu furmun keydownuna yazıyorum yön tuşları ile hareket kodu yazdıktan sonra kutu.visible:=false; diye ekliyorum daha ilk harekette shape siliniyor acaba ben nerde hata yapıyorum yardım edebilirseniz sevinirim..
mustafeyn
Üye
Mesajlar: 15
Kayıt: 02 Oca 2009 03:08

Re: runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen mustafeyn »

Hatamı bana söyleyecek yok mu arkadaşlar aligel54 arkadaş...
mustafeyn
Üye
Mesajlar: 15
Kayıt: 02 Oca 2009 03:08

Re: runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen mustafeyn »

aslangeriiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen sabanakman »

mustafeyn yazdı:Slm Arkadaşlar Amatörce ilgilendiğim delphide kendimi geliştirmek için ...
Yazılım işinde böyle gelişemezsiniz. Belli ki şartınızda terslik var. Kıyaslama yaptığınız şartın üstünde kafa yormak ağır gelse bile bu şartın altını üstüne getirip çeşitli denemelerle çözümü sağlamaya çalışmalısınız.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
mustafeyn
Üye
Mesajlar: 15
Kayıt: 02 Oca 2009 03:08

Re: runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen mustafeyn »

Sayın sabanakman bey inanın uzun zamandır takıldığım bu noktada kendime göre denemediğim kod kalmadı ne yapsam bir buğday tanesi kadar yol alamadım hatta uzun uzun yabancı makaleler okudum geneli matematiksel olarak işlem yapmışlar ama ben uzun matematiksel kod haricinde herkesin anlayabileceği bir kod arıyordum maksat burada hazır koda konmak değil ufkumu açacak koda ihtihacım var çünkü henüz merdivene çıkamadım bana bir ilk basamak lazım teşekkür ederim ilgi duyan tüm arkadaşlara
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen sabanakman »

Şart olarak

Kod: Tümünü seç

if (Button.Left>=Shape.Left) and (Button.Width+Button.Left<=Shape.Left+Shape.Width)
   and (Button.Top>=Shape.Top) and (Button.Top+Button.Height<=Shape.Top+Shape.Height) then ......
kullanmak yeterli olacaktır. Belli bir büyüklükte değeri görmezden gelmek isterseniz aşağıdaki fonksiyonu kullanabilirsiniz.

Kod: Tümünü seç

function Button_Sheape_icindemi(const Button,Shape:TControl):Boolean;
const ihmal_payi=5;//piksel taşmaya izin verilir...
begin
  if Button.Parent<>Shape.Parent then
   raise Exception.CreateFmt('Elmalarla armutlar kıyaslanamaz!'#13#10'Buton %s içinde ama Sheape %s içinde',[Button.Parent.Name,Shape.Parent.Name]);
  Result:=(Shape.Left-Button.Left<=ihmal_payi)
   and (((Button.Left+Button.Width)-(Shape.Width+Shape.Left))<=ihmal_payi)
    and ((Shape.Top-Button.Top)<=ihmal_payi)
     and (((Button.Top+Button.Height)-(Shape.Top+Shape.Height))<=ihmal_payi);
end;
Bu fonksiyonu örnekteki gibi kullanabilirsiniz.

Kod: Tümünü seç

procedure TForm2.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
const n=3;
var X,Y:Integer;
begin
  X:=0;
  Y:=0;
  case Key of
    VK_LEFT:X:=-1;
    VK_RIGHT:X:=1;
    VK_UP:Y:=-1;
    VK_DOWN:Y:=1;
  end;
  Button1.Left:=Button1.Left+(X*3);
  Button1.Top:=Button1.Top+(Y*3);
  if Button_Sheape_icindemi(Button1,Shape1) then Shape1.Brush.Color:=clRed
  else Shape1.Brush.Color:=clWhite;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
mustafeyn
Üye
Mesajlar: 15
Kayıt: 02 Oca 2009 03:08

Re: runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen mustafeyn »

Teşekkür ederim arkadaşlar benim için önemli vakitlerini ayırıp kafayı sıyırdığım konuda yardım eden aslangeri54,sabanakmanbey ve simaWB beye teşekkür ederim anladım ki el elden üstündür ve bir karıncayım sina çölünü geçeceğim siz var hesap edin nekadar yol almışım Allah Herkesten razı olsun emeğinize sağlık..
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: runtime de yanyana gelen objeyi yoketme veya gizlemek

Mesaj gönderen aslangeri »

@mustafeyn;
aslangeri54 :?:
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla