İmage

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
subhan
Üye
Mesajlar: 224
Kayıt: 05 Mar 2008 08:18

İmage

Mesaj gönderen subhan »

Selam

ben formda button yerine image kulanıyorum ve image nesnesinin button olduğu anlaşılmıyor
benim istediyim fare(mause) image nesnesinin üzerine gelince her hangi bir şey yapsın yani button
olucağı anlaşılsın
< The Best Boy >
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: İmage

Mesaj gönderen CiTiZEN »

bi yerden buldum umarım işinize yarar

Kod: Tümünü seç

Şimdi yapacağımız button kendi çizdiğimiz 3 resimden oluşuyor. Öncelikle 3 adet aynı boyda aynı textli button çizin. 1. Resim ; buttonun Sabit yani Form üzerindeki duruşudur 2. Resim ; Programımız çalışırken mouse ile aynı buttonun üzerine geldiğimize buttonun alacağı şekil olacaktır. 3.Resim ; Programımız çalışırken yaptığımız button tıklanınca alacağı şekildir. 

Dikkat ettiyseniz bu taktik HTLM (Web ) için button hazırlanması taktiği ile aynıdır. Şimdi bu taktiği kullanmaya başlayalım . Öncelikle Form üzerine Image kontrolünü ekleyelim ve resim olarak yaptığımız 1. resmi ekleyelim. Şımdi sıra Programımıza değişken tanımlayalım; 

Kod:  ‹ Seç ›  
SetMouse : boolean;  
Değişken tanımlama işimiz bitince Image Mouse Down olayına aşağıdaki kodları yazınız 
Kod:  ‹ Seç › ‹ Genişlet ›  
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
begin 
SetMouse := true; //Mouse Resmin üzerinde Basık olduğunu anlamamız için 
image1.Picture.LoadFromFile('start-3.bmp'); //Mouse Click Durumunda 
end; 
 Daha Sonra image Mouse Move Olayına aşağıdaki kodları yazınız 

Kod:  ‹ Seç › ‹ Genişlet ›  
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); 
begin 
image1.Picture.LoadFromFile('start-3.bmp'); //Mouse Buttonun üzerine gelince buttonun alacağı şekil 
if SetMouse then 
image1.Picture.LoadFromFile('start-2.bmp'); //Mouse Click Durumunda Buttonun üzerindeki şekil 
end; 
 
Mouse button üzerinde click vaziyetinde olup olmadığını değişkene aktarmak için Image Mouse up olayına aşağıdaki kodu yazınız 

Kod:  ‹ Seç › ‹ Genişlet ›  
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); 
begin 
SetMouse := false; //Mouse Click Durumunda Değil 
end; 
 
Button Görüntüleri Tamamlandı şimdi Click Yordamını yapalım. Image Click olayına aşağıdaki kodu yazınız . 

Kod:  ‹ Seç › ‹ Genişlet ›  
procedure TForm1.Image1OnClick(Sender: TObject; Shift: TShiftState; X,Y: Integer); 
begin 
image1.Picture.LoadFromFile('start-3.jpg'); 
ShowMessage('Button Tıklandı '); 
end; 
 
Buttonla olan işimiz bitti Mouse buttonumuzun üzerinde olmadığı zaman için mouse şeklini yapalım bunun için Form Mouse Move Olayına Aşağıdaki kodları yazınız. 

Kod:  ‹ Seç › ‹ Genişlet ›  
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); 
begin 
image1.Picture.LoadFromFile('start-1.jpg'); 
end; 
 
Ve işlemimiz bitti. Programınızda birden fazla Bu tür button koymanız için Bütün buttonlar için aynı işlemi yapınız. Form Mouse Move olayına her button için yukarıdaki program satırını yazınız 

Örnek 

Kod:  ‹ Seç › ‹ Genişlet ›  
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); 
begin 
image1.Picture.LoadFromFile('Connect-1.jpg'); 
image2.Picture.LoadFromFile('DeConnect-1.jpg'); 
image3.Picture.LoadFromFile('Atack-1.jpg'); 
image4.Picture.LoadFromFile('Exit-1.jpg'); 
end; 
 
şeklinde yapınız . 

Bildiğiniz gibi Web' de bu taktiği kullanmamız için Button için yaptığımız resimlerin HTLM de belirtilen Dizinde olması gerekir .Yani Bizim yukarıda yaptığımız olayda resim dosyalarının yerini belirtmememizin amacı resim Button Resim Dosyalarının Program ile aynı dizinde olmasıdır. Bu yüzden sorunun ne olduğunu anladınız galiba yani program bu açıktan dolayı kullanıcı tarıfından değiştirilebilir. Winamp MP3 çalıcıyı bilirsiniz . Winamp SKIN'nin ne olduğunu da biliyorsunuz sanırım , Yani demek istediğim Winamp SKIN'de de bu taktik kullanılmıştır . 

Aslında bu sorun değil , çünkü bu olayı IMAGE LIST Kontrolü de yapar. IMAGE LIST bir Olay için kullanılan birden fazla resim için kullanılan resim dosyaları olmadan programın bağımsız çalışması için kullanılır. IMAGE LIST Delphinin Win32 sekmesinde bulunur . Gif taktiğine benzer bir taktikle çalışır, biraz incelerseniz kolaylıkla kullanabilirsiniz. Bu arada Delphinin Additional sekmesinde bulunan BitBTN kontrolüyle de buna benzer ama kolay Button kullanabilirsiniz
ALINTIDIR
UWESIS CORPORATION
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: İmage

Mesaj gönderen CiTiZEN »

daha kolay bir yöntemde genellikle ben bunu kullanıyorum mouse üzerine gelınce bı hareket yok ama mouse basıldıgı ve bırakıldıgı zaman nesneler değişiyor

Kod: Tümünü seç

mouse down:,

procedure Tform1.image1MouseDown(
  Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
image1.Picture.LoadFromFile(c:\deneme.jpg);
end;
.........
mouse up:

procedure TCitizenDataNetS_CCSv5.officecomponent_textMouseUp(
  Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
image1.Picture.LoadFromFile(c:\deneme1.jpg);
end;
UWESIS CORPORATION
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: İmage

Mesaj gönderen Battosai »

citizen yöntemin eğer belirttiğin kodları kullanıyorsan hiç iyi değil...Böyle birşey yapacaksan resimleri exe e gömerek hafızadan yüklenmen lazım...böylece olası hatalardan ve diske bağlı yavaşlamadan kutulmuş olursun....
Kullanıcı avatarı
subhan
Üye
Mesajlar: 224
Kayıt: 05 Mar 2008 08:18

Re: İmage

Mesaj gönderen subhan »

Teşekürler arkadaşlar ancak benim istediyim resim deyışmesin sadece bir şey yapsın
yani böyle resime parıltı efekti vermek oluyormu
< The Best Boy >
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: İmage

Mesaj gönderen adelphiforumz »

arkadaşım neden tbitbtn kullanmıyorsun
bu objeninde üstüne resim konabiliyor
bunu sanırım biliyor sundur. böylece üzerine gelince buton olduğu anlaşılsın diye uğraşmazsın.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: İmage

Mesaj gönderen CiTiZEN »

Battosai yazdı:citizen yöntemin eğer belirttiğin kodları kullanıyorsan hiç iyi değil...Böyle birşey yapacaksan resimleri exe e gömerek hafızadan yüklenmen lazım...böylece olası hatalardan ve diske bağlı yavaşlamadan kutulmuş olursun....
ewet aslında haklısınız hocam ama exe ye gömdüğümüz zaman ise exe çalıştırıldığında daha hafızada daha fazla yer kaplamaz mı?
UWESIS CORPORATION
Kullanıcı avatarı
subhan
Üye
Mesajlar: 224
Kayıt: 05 Mar 2008 08:18

Re: İmage

Mesaj gönderen subhan »

adelphiforumz yazdı:arkadaşım neden tbitbtn kullanmıyorsun
bu objeninde üstüne resim konabiliyor
bunu sanırım biliyor sundur. böylece üzerine gelince buton olduğu anlaşılsın diye uğraşmazsın.
kardeş ben bitbtn kulanmak istemiyom bitbtn resimlerin görüntüsünü bozuyor ve sadece .bmp uzantılı resim istiyor
ben de image kulandım


Şimdi bir çaresi yokmu bu işin ya :(
< The Best Boy >
Jire
Üye
Mesajlar: 167
Kayıt: 07 Eki 2007 01:20

Re: İmage

Mesaj gönderen Jire »

2 Tane seçeneğin var.
Birincisi component kullanmak yada ikinci yol olarak ise Image'ın OnMouse ve OnMouseDown procedurlerini kullanmak.
Olmadı Jedi Component (JVCL) lerini kullanabilirsin onda senin istediğin türden bir image component'i duruyor.Ayrıca bedava.
Kullanıcı avatarı
subhan
Üye
Mesajlar: 224
Kayıt: 05 Mar 2008 08:18

Re: İmage

Mesaj gönderen subhan »

Ben Söylediyinin her ikisi iyi bende JVCL var ancak böyle özeliyi olduğunu bilmiyodum

birde image kendisi ile olmuyormu bu ış ya :(
< The Best Boy >
Cevapla