function (ya da procedure) kısaltma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

function (ya da procedure) kısaltma

Mesaj gönderen webaytek »

benim yaptığım bir program war bu program internetten güncellenebilir bir program.

elimde 6 tane düğme war bunlara ait kodlar aynı ancak tek fark ise

Kod: Tümünü seç

const:='';
değerleri

benim yapmak istediğim şey bu procedür ya da fonksiyon (hangisi size kalmış)
a ait kodları tek bir procedure olarak yazıp her düğmeye ait sadece const değerlerini sabit bırakmak. ve düğmelere tıkladığımda (6) bu kodlar halen çalışır olsun.
Galiba bu iş speedbutton aracılığı ile yapılabiliyor ancak hangisi daha anlaşılır olursa sevinirim 8)

Şimdiden Teşekkürler
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

walla yazdıklarından hiç bişey anlaşılmıyor.
anladığım kadarını yazayım. buttonların tag property sini kullan, clicklerin hepsi aynı yeri kullansın, oradada case yada if kullanıp tag a göre işlem yapabilirsin

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Vallahi bende çok açık anlayamadım ama. Tüm butonların OnClick event ini aynı yap.

Kod: Tümünü seç

Tbutton(sender).tag
gibi bişeyle hangi butona basıldığını anlarsın. Ona göre diğer işlemleri yaparsın.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

tane tane yazayım

Mesaj gönderen webaytek »

Tane tane yazayım

elimde 6 tane düğme war.
Her düğmeye ait kod aynı
Tek fark değişken. Onu da const dosya='dosyaadi';
olarak tanımladım.

Amacım kodları tek bir prosedür veya fonksiyon altında yazarak
kod içinde yaptığım değişiklikleri 6 kere kopyala - yapıştır yapmaktan kurtulmak - ve düzenli görünmek.

Buraya kadar tamamsa eğer
ben bunun örneğini delphi yardımı içinde SENDER aratarak 2 sonuç buldum
orada da property kavramı wardı ancak ben bu konuda hiçbirşey bilmiyorum. Kullanım örneği war mı

SENDER olarak aratmamın nedeni de kodu
tek bir procedure altına koyunca
butonlardan çağırırken const dosya=''; değerini SENDER olarak çağırılabileceğini düşündüğüm içindir. :idea:
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
Arkadaşların dediği gibi tag işini çözecektir.
Yapılışı:
1.her bir button un tagına değer ata
2.bütün buttonların onclick leri aynı procedure baksın.
3.procdurede beginden sonra

Kod: Tümünü seç

case (sender as Tcomponent).tag of
1:dosya:=1incidosyaadi;
2:...
6:dosya:=6ıncıdosyaadi
end;
Not:Dosya const kısmında değil var kısmında tanımlanmalı
kolya gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Selam Kardeş o const senin bileşenin bir özelliği değil o yüzden. Sender ile kullanamazsın. Sender ile Caption, tag,name gibi. Button un özelliklerini kullanırsın Şu Ctrl+Space de gelenler.

Sana yapmak istediğin şey için bir fikir.

Önce Global bir değişken tanımla dosyaadi mesela, sonra her butonun click olayına ;
buton1 için mesela:

Kod: Tümünü seç

dosyaadi:='dosya1.txt';
          seninproceduren; 
buton2 için

Kod: Tümünü seç

dosyaadi:='dosya2.txt';
         seninproceduren;
.
.
.
buton 6 için

Kod: Tümünü seç

dosyaadi:='dosya6.txt';
         seninproceduren;
dersin procedure içinden de dosyaadi değişkeni ile dosyanın adını alırsın.
En son P206 tarafından 19 Tem 2004 11:16 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

aslangeri kardeşim eğer zamanını çalmazsam
şu kodları biraz daha detaylı yazar mısın dediğin olayla ilgili ilk defa işim düştü ve ilk defa kullanıyorum yani anliican birazcık tazeyim bu konuda

Yardımların İçin Çok Teşekkürler
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

P206 kardeşim tamamen benim de yapmak istediğim bu benim tavsiye almak istediğim kısım da senin yazdığından sonrası

Seninprocedürün içinde dosya değişkenini nasıl tanımlayacağım ???
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Şimdi atiyorum senin procedure nin içinde o yazdığım dosyayı memo'ya atmak olsun

mesela public te dosyaadi değişkenini tanımla.

Kod: Tümünü seç

  public
     dosyaadi:string;
    { Public declarations }
  end;
Buton1 için

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
        dosyaadi:='c:\dosya1.txt';
        seninproceduren;
end;
buton2 için

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
begin
        dosyaadi:='c:\dosya2.txt';
        seninproceduren;
end;

böyle devam et 6 ya kadar.

Kod: Tümünü seç

procedure TForm1.seninproceduren;
begin
        Memo1.Lines.LoadFromFile( dosyaadi)
end;
procedure de bu şekilde memoya dosyaadi değişkeninde tutuğun değeri atarsın.

Ama bu sadece bu Unit için olur. Diğer Unitelere göndermek için biraz değiştirmen lazım.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

P206 ve aslangeri

Mesaj gönderen webaytek »

P206 ve aslangeri ÇOK TEŞEKKÜRLER (Denemiş olmak bile yeterli)

Çözüm için saolun
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

formundaki butonların taglarına numara ver 1..6 ya kadar sonra hepsinin onclickini birleştirip ona

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
const
 sFILENAME:array[1..6] of String=('Dosya1.txt','Dosya2.txt','Dosya3.txt',
                                  'Dosya4.txt','Dosya5.txt','Dosya6.txt');
begin
showmessage(sFILENAME[Tbutton(sender).tag]);
end;
yap..
bak memik yanığın kitabını alsaydın beklemezdin bu kadar const falan öğrenirdin :) :wink:
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

ÇOK TEŞEKKÜRLER (Denemiş olmak bile yeterli)

Çözüm için saolun
sanki sonuç alamamış gibisin.
söylediklerimizi yaptınmı?
işin halloldumu
olayı çözdünmü
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

mege dostum sen de saol
haklısın aslında ama ben kod işini şirketten yapmaya çalıştığım için
kitap falan işteyken olmaz heee boş vaktim hiç mi olmuyo :P
olmaz olur mu

canım kardeşim sen bana şu kitapla ilgili detaylı bilgiyi nereden bulabileceğimi yazabilir misin

HEPİNİZE ÇOK TEŞEKKÜR EDERİM
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Çözüm için saolun

Mesaj gönderen webaytek »

yok o ilk cümle senin içindi aslangeri(Denemiş olmak bile yeter)

2.cümle de (Çözüm için saolun) hepiniz içindi
sonuca ulaştım p206nın kodu işimi gördü :D
Cevapla