WWW.KUMPAS.ILE.BIZ
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Visual Basic Dersleri - 1

Aşağa gitmek

Visual Basic Dersleri - 1 Empty Visual Basic Dersleri - 1

Mesaj tarafından eeisahin C.tesi 30 Haz. 2007, 10:43 pm

Visual Basic, Basic (Beginners-All Purpose Symbolic Instruction Code) temelleri üzerine kurulmuş görsel bir programlama dilidir. Bugün dünyada çok yaygın bir kullanım yeri bulmuştur. Bunun en büyük sebebi çok kolay ögrenilen ve güçlü bir programlama dili olmasıdır. Visual Basic ile yapabilecekleriniz sadece sizin hayal gücünüze ve becerinize bağlıdır. Ticari yazılımlar geliştirebilir, veri tabanları üzerinde çalışabilirsiniz, oyun programları yazabilir, bilimsel çalışmalarınızda kullanabilirsiniz.

Visual Basic ile Word ve Excel görünümünde bir program geliştirmek son derece kolaydır. Bunu mümkün kılan grafiksel arabirimdir. Bu ara birim kullanıcı ile program kodları arasında iletişimi sağlar. Örneğin Windows’ta bir dosyayı açarken bir simge üzerine tıkladığımızda bunun arka planında program bu işlemi yapmak için gerekli olan kodları çalıştırmakla uğraşır. İşte Visual Basic’te de bunun gibi kullanıcı arayüzleri olacak nesneler vardır. Programı çalıştıran kodların bilinmesi kadar bu nesnelerinde bilinmesi de gerekmektedir. Visual Basic’te Windows ortamından tanıdığımız butonlar, kaydırma çubukları, text kutuları gibi nesneler vardır. Program bu nesnelere bağlı olan olayları kullanarak yazılır. Örneğin bir buton nesnesinin en önemli olayı butonun üzerine tıklanmasıdır. Kullanıcı bu olayın içerisine butona tıklandığında ne yapılması isteniyorsa onunla ilgili kodları yazar.

ÇALIŞMA ALANI
Çalışma alanı olarak sadece program kodlarını yazdığımız kısım değil, tüm menüler ve pencereler buna dahildir.

Menu Çubuğu (Menu Bar):Menü çubuğu üzerinde Vbasic menüleri bulunur. Bu menüler File, Edit, View, Project vs. dir. Menülerde değişik komutlar bulunmaktadır.

Araç Kutusu (Tool Box): Araç kutusu çalışma alanın sol tarafında bulunan ve içerisinde standart nesnelerin bulunduğu bir kutudur. Bu nesneler ileride detaylı olarak anlatılacaktır.

Özellikler Penceresi (Properties Window-F4):Her nesnenin kendisine özgü özellikleri vardır. Nesnenin rengi, boyutları, vs daha pek çok özelliği özellikler penceresinden düzenlenir. Örneğin aşağıda Command1 isimli CommandButton nesnesinin özellikler penceresi görülmektedir.

Proje Penceresi (Project Explorer-Ctrl+R):Büyük projelerde birçok Form ve Modül kullanılır. Bu pencere sayesinde hangi formun hangi projeye ait olduğu ve özellikleri kolayca izlenebilir.

Kod Penceresi (Code): Programcılığın esasını oluşturan kod yazma işlemi Vbasic’te olaylara bağlı olarak yapılır. Olaylarda nesnelere bağlıdır. Örneğin bir Buton nesnesinin Click olayı içerisine bir bir kod yazılırsa, program çalıştığında bu butonun üzerine tıklama yaptığımızda içerisindeki bu kodları çalıştıracaktır. Nesne ve olayların her ikiside Code penceresinden görülebilir.

OPERATÖRLER
Operatörleri
• Matematiksel
• Karşılaştırma
• Mantıksal
Olmak üzere üç grupta inceleyeceğiz.

Matematiksel Operatörler:Bu operatörleri 7 tanedir.
• + Toplama işlemi
• - Çıkarma işlemi
• * Çarpma işlemi
• / Bölme işlemi
• ^ Üs alma işlemi
• ( ) Parantez işlemleri
• \ Tam sayılı bölme işlemi

Burada \ tam ile yapılan bölmelerde sonucun tam sayı kısmı yazılır. Ör: 7\3 sonucu 2.33 değil 2 dir. ( ) parantezler ise işlemler arasında önceliği belirlemede kullanılır. İşlemlerde öncelik sırası, (), ^, * / , + - , soldan sağa dır.

Karşılaştırma Operatörleri: İki değer arasında karşılaştırma yapılırken kullanılır. Karşılaştırma sonucu true (doğru) yada false (yanlış) olabilir. Doğru sonuçlar için 1, yanlış değerler için 0 değeri döndürülür.

a) Sayısal ifadelerde: Sayısal ifadeleri karşılaştırırken 7 farklı operatör kullanılabilir.

Operatör Durum Yazımı
= eşitlik a=b
< küçüktür a<b
> büyüktür a>b
<>, >< eşitsizlik a<>b , a><b
<= , =< küçük eşit a<=b , a=<b
>=, => büyük eşit a>=b , a=>b

b) String ifadelerde: String değerleri karşılaştırırken Like operatöründen yararlanılır. Bu ifade büyük küçük karakter ayrımı yapar. Eğer büyük küçük ayrımı yapılmak istenmiyorsa Declerations bölümüne Option Compare Text ifadesi yazılmalıdır. Örnegin:

Option Compare Text

sonuc= “A” Like “a”
Print sonuc

Bu ifade sonucu True değeri alınır. Bu şekilde ifadeleri karşılaştırırken Bazı karakterlerin yerine geçmesi için * ve tek bir karakterin yerine geçmesi için ? işareti kullanılabilir. Örneğin

sonuc= “Ali” Like “A?i”
Print sonuc

Sonuc True olur. ? işareti “l” karakteri yerine kullanıldı.

sonuc= “Ali” Like “A*”
Print sonuc

Sonuc True dur. * işareti “li” karakterleri yerine kullanıldı.

Mantıksal Operatörler: Birden fazla karşılaştırmayı aynı anda yapmak için kullanılır. Karşılaştırma sonucu True yada False dır.

a)And Operatörü: Bu operatör bütün değerler True ise sonucu True=1 verir. Herhangi bir False sonuç False=0 dır.

1.Değer Operator 2.Değer Sonuç
1 And 1 1
1 And 0 0
0 And 1 0
0 And 0 0

Örneğin: if yas>15 And yas<30 Then print “Siz gençsiniz” ifadesinde yas 15 den büyük ve 30 dan küçük olması durumunda Then den sonraki komutlar işletilecektir.

b)Or Operatörü: Bu operatör bütün değerler yada herhangi biri True ise True=1, hepsi False ise sonucu False=0 olarak verir.


1.Değer Operator 2.Değer Sonuç
1 Or 1 1
1 Or 0 1
0 Or 1 1
0 Or 0 0

Örneğin: if boy>190 Or boy<165 then print “İşe boydan dolayı alınamıyorsunuz” ifadesinde boy 190 dan büyük yada 165 den küçük olması durumunda then den sonraki komutlar işletilecektir.

c)Not Operatörü: Bu operatör ifadenin tersini şart koşar.

Değer Operatör Sonuç
1 Not 1
0 Not 0

Örneğin: if Not Text1.text=” ” Then ... ifadesinde text1’in içi boş değilken then’den sonraki komutları işlet anlamı vardır.


DİYALOG PENCERELERİ

MsgBox(): Diyalog penceresi içerisinde bilgi vermede kullanılır.

MsgBox(“gösterilecek metin”)

UYGULAMA: Formun üzerine tıklayınca bir pencere açılsın ve Üzerinde merhaba yazsın.

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click

MsgBox("Merhaba")

End Sub

MessageBox.Show() : Ekranda diyalog penceresi içerisinde bilgi vermede kullanılır ve kullanıcıya seçme şansı tanır. Çıkan butonlar Window’sun butonlarıdır. Bu nedenle türkçe çıkar.


MessageBox.Show(“diyalog yazısı”, “Pencerenin başlığı”, Görüntülenecek butonların isimleri, Görüntülenecek sembol resminin adı, Hangi butonun seçili olacağı)


UYGULAMA: Formun üzerine bir buton yerleştirin. Butonun başlığını “ÇIKIŞ” olarak değiştirin.
Üzerine tıklayınca size “Programdan çıkmak istiyor musunuz?” diye sorsun ve üç seçenek sunsun. Evet, hayır, iptal. Hangisine basarsanız bastığınız tuşu size söylesin.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sonuc As Integer

sonuc = MessageBox.Show("Programdan Çıkmak İstiyormusunuz?", "Programdan Çıkış", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)

If sonuc = 6 Then MsgBox("Evet Tuşuna bastınız")
If sonuc = 7 Then MsgBox("Hayır Tuşuna bastınız")
If sonuc = 2 Then MsgBox("İptal tuşuna bastınız")

End Sub


InputBox()
Dışarıdan diyalog penceresi metin kutusu kullanılarak bilgi almada kullanılır. Formatı şöyledir.

InputBox("Metin kutusunun başlığı", "Diyalog Pencesinin başlığı", "Varsayılan yazı", Pencerenin ekranda yer alacağı X koordinatı, Pencerenin ekranda yer alacağı Y koordinatı)

Örnek: bununla ilgil örnek aşağıdak Load olayı içerisinde verilmiştir.


NESNELER

Label: Formun üzerinde sabit bilgi yazmada kullanılır. Text: özelliği ile başlığı değiştirilir.

TextBox: Kullanıcıdan metin girdisi almak için kullanılır.

UYGULAMA: Formun üzerine bir label, bir TextBox, ve bir buton yerleştirin. Label’in üzerinde Ad-Soyad yazsın. Buton basınca text kutusuna yazmış olduğunuz ad ve soyadınızı alıp Mesaj kutusu içerisinde size “Merhaba Ahmet Kara” şeklinde cevap versin.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Merhaba " + TextBox1.Text)

End Sub

GrupBox: Formun üzerine çerçeve yerleştirmeye yarar. Dock: özelliği ile formun üzerinde alacağı yeri belirleyebilirsiniz. Text: özelliği ile başlığını değiştirebilirsiniz.

RadioButton: Kullanıcının birtakım seçenekler arasından birini seçme işleminde kullanılır. Radio butonlarının arasında bağlantı kurmak için bunların GrupBox nesnesi üzerinde oluşturulması gerekir. RadioButton seçili özelliği “Checkhed” özelliğidir. Bu özellik true yada false olur.

UYGULAMA: İdeal kiloyu hesaplayan bir program yazın. Bunun için Formun üzerine bir text kutusu bir buton, bir grupbox ve üzerine de iki tan radiobutton yerleştirin. Radyo butonların birinde “Bayan” diğerinde “Erkek” yazsın. Text kutusunun yanında da label nesnesi üzerinde “Boyunuz” yazsın. Butonun üzerinde de “İdeal kilo” yazsın. Kulanıcı cinsiyetini seçip text kutusuna boyunu girince butona bassın ve bir diyalog penceresi içerisinden kişinin ideal kilosunu yazsın.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim idealkilo As Integer
Dim boy As Integer

boy = Val(TextBox1.Text)

If RadioButton1.Checked Then idealkilo = boy - 115
If RadioButton2.Checked Then idealkilo = boy - 105

MsgBox(idealkilo)

End Sub
eeisahin
eeisahin
admin
admin

Erkek Mesaj Sayısı : 409
Teknolojiyle aran nasıl : geçinip gidiyoruzz
Kayıt tarihi : 03/03/07

Sayfa başına dön Aşağa gitmek

Visual Basic Dersleri - 1 Empty Geri: Visual Basic Dersleri - 1

Mesaj tarafından eeisahin C.tesi 30 Haz. 2007, 10:43 pm

ÖZELLİKLER

TabStop: Bu özellik kontrollere sekme (tab tuşu) kullanımı hakkı verir.
TabIndex: Bu özellik nesnelere tab tuşu ile seçim yaparken sıralama katar.
BackColor: Arka plan rengini ayarlamada kullanılır.
ForeColor: Nesnenin üzerinde görüntülenecek yazıların rengini belirlemede kullanılır.
FormBorderStyle: Form nesnesinin çerçevesiyle ilgili çeşitli ayarları yapmada kullanılır.
AcceptButton: Kullanıcı enter tuşuna bastığında formun hangi butonun Click olayının tetikleneceğini belirler.
Icon: Formun sol üst köşesindeki icon resmini değiştirmede kullanılır.
AutoScroll: Bu özellik true ise formun yanlarında kayan çubular oluşur.
Size: Formun büyüklüğünü ayarlamada kullanılır. Çalışma esnasında formun boyutlarını değiştirmek için şu kodlar kullanılır.
ControlBox: Formun üzerindeki minimize ve maximize butonlarının görünümünü sağlar.
MaximizeBox: Formun üzerinde bu düğmenin görünmesini sağlar.
MinimizeBox: Formun üzerinde bu küçülme düğmesinin görünümünü sağlar.
TopMost: Formun sürekli olarak diğer formların üzerinde görünmesini sağlar. Aktif olmasa bile.

UYGULAMA: formun üzerine iki tane buton koyun. Birinci butona basılınca form 200,150 boyutlarına küçülsün. İkinci butona basınca form 600,400 boyutlarına büyüsün. Form küçüldüğünde eğer butonlar kayboluyorsa bunları görmek için AutoScrool özelliğini True yapın.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Size = New System.Drawing.Size(200, 150)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Size = New System.Drawing.Size(600, 400)
End Sub

OLAYLAR

Click: Kullanıcı mouse ile nesneye tıkladığında gerçekleşir.
Load: Formun ilk olarak yüklendikğinde aktif olur. Genellikle kullanılacak ilk değerler bu olayın içinde atanır.
Activated: Formu aktif pencere haline geldiğinde kullanılır.
Deactivate: Form inaktif olmuştur.
Enter: Kullanıcı nesne üzerine odaklandığında seçili hale geldiğinde.
Leave: Kullanıcı nesne üzerindeki odaklamasını kaybettiğinde
MouseMove: Kullanıcı fareyi nesne üzerinde yürüttüğünde çalışır.
Paint: Bir pencerenin tekrar boyanması gerektiğinde kullanılır. Bunun pencerenin boyutlarının değişmesi yada önünün açılması gerekir.
Resize: Formun eni yada boyu değiştiğinde kullanılır.
Closing: Formun kapatılma esnasında kullanılır. Bu esnada kullanıcı formu kapatılmasını iptal etme şansı vardır.
Closed: Form kapatımıştır. Form kapanırken olaylar sıralanırsa Closing>Deactivate>Closed olarak sıralanır.

UYGULAMA: Formun üzerine iki tane Label nesnesi yerleştirin. Formun Resize olayını kullarak formun mouse ile boyutlarını tutup her değiştirdiğinizde formun genişlik ve yüksekliğini bu label nesnelerinde yazmasını sağlayın.

Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
Label1.Text = Me.Size.Width.ToString()
Label2.Text = Me.Size.Height.ToString()
End Sub

UYGULAMA: Formun ilk yüklendiğinde kullanıcıdan şifre istemek için bir pencere açılsın. Eğer şifre doğru ise program çalışmaya devam etsin. Yanlışsa program dursun.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim sifre As VariantType
sifre = InputBox("şifrenizi giriniz", "Sifre Kontrol", "*****", 300, 200)

If (sifre <> 123) Then
End
End If
End Sub


DEĞİŞKENLER

Program içerisinde kullanılan sabit ve değişkenlerin tanımlanması profesyonel programcılık için gereklidir.
• Her değişken hafızada belli bir yer kaplar. Bu nedenle ihtiyaç olduğu kadar hafızada en az yer kaplayan değişkenlerin kullanılması gerekir.
• Değişkenler başlangıçta tanımlanırsa, kodlama sırasında değişkenlerin birbirine karışması ve meydana gelecek hatalar önlenir.

Program yazarken değişken kullanımı hafızayı verimli kullanma, olası hataları önlemek için mutlaka kullanılmalıdır. Bu kullanımı zorunlu hale getirmek için “Option Explicit” ifadesi kullanılabilir. Değişken tanımlarken “Dim …. As Integer” şeklinde ifade kullanılır.

Değişken tanımalama üç düzeyde olur.

Procedure Düzeyi: Procedure her olay için açılmış olan küçük bölümlerdir. Private yazısı ile başlayan satırlar her bir procedurü gösterir.

Form Düzeyi: Bir procedure içinde tanımlanan değişken başka bir procedure içinde tanınmaz. Tanımlanan değişkenin Formun içindek bütün procedurler içinde tanınmasını sağlamak için bütün procedurlerin üzerinde (dışında) “Windows Form Designer Genereated Code” yazısının altında tanımlama yapmak gerekir.

Proje Düzeyi: Bir formda tanımlanan değişken başka formlar tarafından tanınmaz. Bunu sağlamak için Proje düzeyinde tanımlama yapmak gerekir. Bunun için yine aynı yerde Public ifadesi ile tanımlama yapmak gerekir. Başka formda proje düzeyinde tanımlanan değişkeni kullanmak için o değişkenin başında o formun adını da yazmalı.

Sabitler:
Sabitler program içerisinde hep aynı değeri saklar. Bunlar string türü sayısal olmayan ifadeler olabileceği gibi, sayısal ifadelerde olabilir. Tanımlama işlemi Const deyimi ile yapılır.

Örnek:
Const isim$=”Ahmet”
Const alan=200

Burada olduğu gibi sabitler bir isme atanarak kullanılır. Kullanılan her sabitin bir tipi vardır. Bu türler değişkenlerde kullanılanlarla aynıdır.

Değişkenler:
Değişkenler program içerisinde farklı değerler alabilir. Değişkenler tanımlanırken dizilimi şu şekildedir.

Dim değişkenin adı As değişkenin tipi

Örnek:
Dim isim As String
Dim yas As Byte
Dim no As Long
Sabitlerde ve değişkenlerde kullanılabilecek değişik tanımlamalar.

Sabit ve Değişkenlerde kullanılan Tanımlamalar:

•String: Karakter ifadeleri (sayı olmayan) tanımlamada kullanılır. Hafızada her karakter 1 Byte (8bit) alan kaplar. “...” sembolleri arasına yazılır. Ör: a=“Ahmet”, b=“kod12”, c=“123” gibi
•Boolean: İki durumdan birinin olduğu durumlarda kullanılır. 1 ve 0 sayılarını alabilir. True(doğru) yada False (yanlış) olabilir.
•Byte: 28=0-255 arasındaki tam sayıları alabilir. Hafızada (8/8=1 Byte) yer tutar.
•Integer: ± 216= ± 32768 arasındaki tam sayıları alır. Hafızada (16/8=2 Byte) yer tutar.
•Long: ± 232 arasındaki tam sayıları tutar. Hafızada (32/8=4 Byte) yer tutar.
•Single: ± 232 ondalıklı sayıları tutar. Hafızada 4 byte yer kaplar.
•Double: ± 264 ondalıklı sayıları tutar. Hafızada 8 byte yer tutar.
•Currency: Para ile ilgili işlemlerde kullanılır. 8 byte yer tutar.
•Date: Tarih ve zaman gibi değerleri tutar. 1/1/100 den 12/31/9999 arası değerler alabilir. 8 byte yer tutar.
•Variant: Yukarıda kullanılabilecek bütün tanımlamaları içine alabilen bir tanımlamadır. Tanımlama yapılmadığı zamanlarda yada hangi tanımlaamanın kullanılacağından emin olunmadığı durumlarda kullanılabilir. 16 Byte yer kaplar.


DÖNGÜLER ve BLOKLAR
Kontrol ve döngü deyimleri program akışının kontrolünü sağlamak amacıyla kullanılır. Gerçekte programın çalışmasını kullanılan nesneler ve bu nesnelerin içerisinde tanımlanan olaylar belirlemektedir. Fakat bu olayların içerisinde ise kontrolü bu deyimler sağlamaktadır.

IF-THEN-ELSE Deyimi: Programın koşullara bağlı olarak kararlar vermesine olanak sağlar. Yapısı;

Yapısı iki şekilde oluşturulabilir.

Basit Yapı:

If durum Then deyim1 Else deyim2

Bu yapıda Else istenirse kullanılmaya bilir.
Blok Yapı:

If durum1 Then
Deyimler1
ElseIf durum2 Then
Deyimler2
ElseIf durum3 Then
Deyimler3
…..
Else
Deyimler4
End If

Örnek: Önce basit yapıya bir örnek verelim.

If tahmin=30 Then Print “bildiniz” Else Print “bilemediniz”


Bu örnekte eğer tahmin 30’a eşitse Then den sonraki ifadeyi işletecektir. Eğer eşit değilse Else’den sonraki ifadeyi işletecektir. Blok yapıda ElseIf ifadesi istenilen sayıda çoğaltılabilir. En sonundaki Else ise şartsız olarak kullanılır.

UYGULAMA: Formun üzerine 2 tane TextBox, 2 tane Label, 1 tane Command butonu ekleyin. Kullanıcıdan kullanıcı adını ve şifre isteyip bunları içeriden kontrol etsin. Kodların içerisine bir kaçtane kullanıcı adı ve şifre ekleyin.

Private Sub Command1_Click()
Select Case LCase(Text1.Text)
Case ""
MsgBox "Lütfen bir kullanıcı adı giriniz"
Case "admin"
If Text2.Text = "321" Then
MsgBox "Şifre Doğru"
End If
Case "misafir"
If Text2.Text = "123" Then
MsgBox "Şire Doğru"
End If
Case "aktas"
If Text2.Text = "456" Then
MsgBox "Şire Doğru"
End If
Case Else
MsgBox "Böyle bir kullanıcı kayıtlı değil"
End Select
End Sub


SELECT CASE Deyimi: Bu deyim belli bir koşula göre çok sayıda dallanma işlemini gerçekleştirir. Yapısı şu şekildedir.

Select Case Durum
Case ifade1
Komutlar

Case ifade2
Komutlar
...
Case Else
Komutlar
End Select

Select Case kısmında bir durum (koşul) belirleniyor. Case ifadelerinde ise bu durumu sağlayan ifade araştırılıyor. Eğer herhangi bir ifade bu durumu sağlıyorsa hemen onun altındaki komutlar işletiliyor. Eğer hiçbir ifade bu durumu sağlamazsa Case Else’nin altındaki komutlar işletiliyor.

UYGULAMA: Bir formun üzerindeki butona tıkladığımızda bir pencere açılsın ve bu pencereden aldığımız notu girmemiz istensin. Ardından aldığımız not durumlarına göre yine bize geçip kaldığımızı pencereden söyleyen bir program yazın.

Private Sub Command1_Click()
puan = InputBox("Notunuzu Giriniz")
Select Case puan
Case 100
MsgBox ("Bravo 100 almışsınız. Ödül kazandınız")
Case 90 To 99
MsgBox ("Pekiyi ile geçtiniz")
Case 80 To 89
MsgBox ("iyi ile geçtiniz")
Case 70 To 79
MsgBox ("orta ile geçtiniz")
Case 60 To 69
MsgBox ("Geçerle geçtiniz")
Case Is < 60
MsgBox ("kaldınız")
Case Else
MsgBox ("yanlış sayı girdiniz")
End Select
End Sub

Bu örnekte puan 100’e eşitse ilk Case satırı işletilecektir. Yada puan 60 ile 69 arasında ise “Geçerle geçtiniz” satırı işletilecektir. Eğer yukarıdaki hiç bir şartı sağlamıyorsa Case Else satırı işletilecektir.
eeisahin
eeisahin
admin
admin

Erkek Mesaj Sayısı : 409
Teknolojiyle aran nasıl : geçinip gidiyoruzz
Kayıt tarihi : 03/03/07

Sayfa başına dön Aşağa gitmek

Sayfa başına dön

- Similar topics

 
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz