Run time de Image eklemek ve çoğaltmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Kasten öyle hatalı cevap verdim. Bunu SeciliPanel.Controls[0].Free şekline çeviremediğinden bu tür mimariden bahseden satırları hazmetmen çok iyi bir yatırım olur sanırım.
En son sabanakman tarafından 24 Oca 2008 11:09 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

:shock: biraz sert olmuş sanırım...
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Çok pişmanım, ters anıma denk gelmiş. Düzelttim :oops:
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

hocam ben böylede denemiştim ama aynı hatayı alınca vaz geçtim.Tekrar bir sorayım dedim.

Kod: Tümünü seç

 FreeAndNil(SeciliPanel.Controls[0].Free);
yazdığımda yine aynı hatayı veriyor :oops: :?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

Kod: Tümünü seç

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
a:tcontrol;
begin
  case Key of
    VK_DELETE:if Assigned(SeciliPanel) then begin
      a:=secilipanel.controls[0];
      FreeAndNil(a); //TImage silinir
      FreeAndNil(SeciliPanel);//TPanel silinir
    end;
  end;
end; 
böyle bi dene bakalım...
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

haydarxxx yazdı:FreeAndNil(SeciliPanel.Controls[0].Free);
değil

Kod: Tümünü seç

SeciliPanel.Controls[0].Free;
olacak. FreeAndNil'i unut :wink: . Vaz geçme işine gelince, şimdilik ertele ama vaz geçme. Yapman gerekenlerin başında bileşen (TComponent sınıfı) yapısını biraz kurcalamak duruyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

sabanakman hocam teşekkür ediyorum.
Bunları yapmak benim için hazmetmem hakkatten çok zor görünüyor.Genelde vt de sorgulama kaydetme silme gibi projeler üzerinde bir şeyler yapıyorum.Ama dediklerinizi dikkate alacağım.

Bana önerebileceğiniz türkçe makale yada bir yayın organı varmıdır acaba bu konularla ilgili yani vt programlama dışında programlama delphi ile yani
procedure TForm1.KendiminMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
{bunu formda private bloğunda sen tanımla (Ctrl+Shift+C tuşları otomatik tanımlar)}
begin
if Assigned(SeciliPanel) then SeciliPanel.Color:=clBtnFace;//eski panel normale döner
ReleaseCapture;
SeciliPanel:=TPanel(TImage(Sender).Parent);
SeciliPanel.Color:=clBlue;//seçilen panel mavi olur
SeciliPanel.Perform(WM_SYSCOMMAND, $F012, 0);
end;
gibi procedure yazma vs..Çok teşekkürler
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

O türden kodlar sağda solda bol miktarda varlar. Eğer bulamazsan bir bilene sor yardım gelir. Yapı konusunda da Marco Cantu'nun Delphi5-6-7 kitaplarından birisi iş görebilir. Ben 7'sinden çok fayda gördüm.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Run time de Image eklemek ve çoğaltmak

Mesaj gönderen xozcanx »

Tekrar konu açmak istemedim konu ile alakalı olduğu için runtime esnasında image nesnesi oluşturuyorum ve resim ataması yapıyorum. takıldığım nokta onclik ataması yapmak istiyorum. oluşturulan image nesnelerinden hangine tıklanırsa sabit olan image_goster adlı 2. bir Timage nesnesinde göstermek.
yani

Kod: Tümünü seç

img_creat1.onclick...
	img_sabit.picture := img_creat1.picture;

img_creat2.onclick...
	img_sabit.picture := img_creat2.picture;	
gibi olacak şekilde nasıl tanımlama yapabilirim

Kod: Tümünü seç

procedure ResimGoster(img:Timage);
Begin
  img_sabit.Picture  :=img.Picture;
End;
dedim bununda atamasını gerçekleştiremedim :|
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Run time de Image eklemek ve çoğaltmak

Mesaj gönderen SimaWB »

Öncelikle OnClick olayının tipine dikkat etmelisiniz: TNotifyEvent.
Bu da şu şekilde tanımlıdır:

Kod: Tümünü seç

TNotifyEvent = procedure(Sender: TObject) of object;
Dolayısıyla sizin yazacağınız procedure bu yapıya uygun olmak zorunda.

Kod: Tümünü seç

procedure ResimGoster(Sender: TObject);
begin
  img_sabit.Picture.Assign(TImage(Sender).Picture);
end;
Öncesinde OnClick atamalarını unutmayın:

Kod: Tümünü seç

  img_creat1.OnClick := ResimGoster;
  img_creat2.OnClick := ResimGoster;
There's no place like 127.0.0.1
carsoft
Üye
Mesajlar: 138
Kayıt: 01 Ağu 2014 12:27

Re: Run time de Image eklemek ve çoğaltmak

Mesaj gönderen carsoft »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var Ico: TIcon;
ImageList : TImagelist;
begin
ImageList := TImageList.Create(Self);
Ico := TIcon.Create;
Ico.LoadFromFile(Path+resim veya ikon adı);
ImageList.AddIcon(ico);
ImageList.GetIcon(0,Image1.Picture.Icon); 
Ico.Free;
end;
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Run time de Image eklemek ve çoğaltmak

Mesaj gönderen xozcanx »

SimaWB yazdı:Öncelikle OnClick olayının tipine dikkat etmelisiniz: TNotifyEvent.
Bu da şu şekilde tanımlıdır:

Kod: Tümünü seç

TNotifyEvent = procedure(Sender: TObject) of object;
Dolayısıyla sizin yazacağınız procedure bu yapıya uygun olmak zorunda.

Kod: Tümünü seç

procedure ResimGoster(Sender: TObject);
begin
  img_sabit.Picture.Assign(TImage(Sender).Picture);
end;
Öncesinde OnClick atamalarını unutmayın:

Kod: Tümünü seç

  img_creat1.OnClick := ResimGoster;
  img_creat2.OnClick := ResimGoster;
Hocam açıklayıcı cevabınız için çok teşekkürler.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Cevapla