Bildirimler
Hepsini Temizle

Kat Takip  

  RSS
serdar_evleksiz
(@serdar_evleksiz)
Üye

Arkadaşlar benim projemde 16 adet button var ve bu buttonlara ben el ile değil de veri tabanından veri çekerek isim vereceğim. 
veri tabanında laboratuvar diye bir tablo oluşturdum ve o tabloda ola laboratuvar isimleri bu 16 adet butona tek tek gelecek 

mesela; 
1.button a lab_210 
2.button a lab_211 vb. 

ama birde şu var ki şu anda kayıtlı 10 laboratuvar var ve öyle kalacak yeni laboratuvarlar eklendiği zaman otomatik olarak button lara yansıyacak isimleri.yani 16 button un 10u dolu olacak 6 sı boş yeni laboratuvarlar eklendikçe o boş kalan 6 button da oto olarak dolacak. 

acaba bu kodu nasıl yazabilirim. 


Ben; 

private void bilgial() 
        { 
            DataTable dt = veritabani.verigetir("select*from laboratuvar"); 
            button1.Text = dt.Rows[0]["L_adi"].ToString(); 
            button2.Text = dt.Rows[1]["L_adi"].ToString(); 
            button3.Text = dt.Rows[2]["L_adi"].ToString(); 
            button4.Text = dt.Rows[3]["L_adi"].ToString(); 
            button5.Text = dt.Rows[4]["L_adi"].ToString(); 
            button6.Text = dt.Rows[5]["L_adi"].ToString(); 
            button7.Text = dt.Rows[6]["L_adi"].ToString(); 
            button8.Text = dt.Rows[7]["L_adi"].ToString(); 
            button9.Text = dt.Rows[8]["L_adi"].ToString(); 
            button10.Text = dt.Rows[9]["L_adi"].ToString(); 
            button11.Text = dt.Rows[10]["L_adi"].ToString(); 
        } 

böyle bir kod yazdım veritabani diye ayrı bir class oluşturdum ve bu bilgial() metodunu da form1_load a koydum.böyle buttonlara isim verebiliyorum ama yeni gelecek buttonlar için işlem yapamadım lütfen yardımcı olabilir misiniz?

 

 

Yarımdı olan olmayan herkese teşekkür ederim şimdiden... 

Alıntı
Gönderildi : 19/03/2014 12:43
Burak Şentürk
(@BurakSenturk)
Üye

Selam,

Ben senin yerinde olsam buttonları dinamik olarak oluştururdum. Bu şimdilik 16 olur yarın 160 olur.

Kodda yazım hatalar olabilir örnek olması için karalayacağım.

  FlowLayoutPanel fp = new FlowLayoutPanel(); 

int i = 0; 

SqlDataReader dr = cmd.ExecureReader();

while (dr.Read())

{

Button btn = new Button ();

btn.text = dr[i].ToString();

 btn.Width = 200;

vs vs vs.. 

fp.Controls.Add(btn); 

 i++;

 

Eğer projeni win forms üzerinden yapıyor isen. FlowLayout panel kullanabilirsin. Diğer türlüde div vs oluşturup içlerine atabilirsin.

 

Takıldığında sorarsan yardımcı olmaya çalışırım.

Saygılarımla,

Burak 

CevapAlıntı
Gönderildi : 19/03/2014 13:01
serdar_evleksiz
(@serdar_evleksiz)
Üye

Bu kodları Form1 in içine yazıyoruz değil mi?

CevapAlıntı
Gönderildi : 19/03/2014 13:20
serdar_evleksiz
(@serdar_evleksiz)
Üye
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace usb_proje
{
    public partial class Form1 : Form
    {
        int sayi = 0;
        bool led_flag1 = false;
        bool led_flag2 = false;
        bool led_flag3 = false;
        bool led_flag4 = false;
        bool led_flag5 = false;
        bool led_flag6 = false;
        bool led_flag7 = false;
        bool led_flag8 = false;
        protected override void OnHandleCreated(EventArgs e)
        {
            base.OnHandleCreated(e);
            usbHidPort1.RegisterHandle(Handle);
        }
        protected override void WndProc(ref Message m)
        {
            usbHidPort1.ParseMessages(ref m);
            base.WndProc(ref m);
        }
        
        public Form1()
        {
            InitializeComponent();
           
            Button lab1 = new Button();
            lab1.Text = "L_210";
            this.groupBox10.Controls.Add(lab1);
            lab1.SetBounds(151, 75, 45, 22);
            lab1.BackColor = Color.Blue;
            lab1.Click += new EventHandler(lab1_Click);
            lab1.ForeColor = Color.White;
            
            Button lab2 = new Button();
            lab2.Text = "L_211";
            this.groupBox9.Controls.Add(lab2);
            lab2.SetBounds(151, 9, 45, 22);
            lab2.BackColor = Color.Blue;
            lab2.Click += new EventHandler(lab1_Click);
            lab2.ForeColor = Color.White;
            Button lab3 = new Button();
            lab3.Text = "L_212";
            this.groupBox8.Controls.Add(lab3);
            lab3.SetBounds(4, 76, 45, 22);
            lab3.BackColor = Color.Blue;
            lab3.Click += new EventHandler(lab1_Click);
            lab3.ForeColor = Color.White;
            Button lab4 = new Button();
            lab4.Text = "L_213";
            this.groupBox7.Controls.Add(lab4);
            lab4.SetBounds(91, 9, 45, 22);
            lab4.BackColor = Color.Blue;
            lab4.Click += new EventHandler(lab1_Click);
            lab4.ForeColor = Color.White;
            Button lab5 = new Button();
            lab5.Text = "SERVER";
            this.groupBox5.Controls.Add(lab5);
            lab5.SetBounds(53, 76, 59, 21);
            lab5.BackColor = Color.Blue;
            lab5.Click += new EventHandler(lab1_Click);
            lab5.ForeColor = Color.White;
            Button lab6 = new Button();
            lab6.Text = "L_214";
            this.groupBox3.Controls.Add(lab6);
            lab6.BackColor = Color.Blue;
            lab6.SetBounds(151, 76, 45, 22);
            lab6.Click += new EventHandler(lab1_Click);
            lab6.ForeColor = Color.White;
            Button lab7 = new Button();
            lab7.Text = "L_215";
            this.groupBox6.Controls.Add(lab7);
            lab7.SetBounds(151, 9, 45, 22);
            lab7.BackColor = Color.Blue;
            lab7.Click += new EventHandler(lab1_Click);
            lab7.ForeColor = Color.White;
            Button lab8 = new Button();
            lab8.Text = "L_216";
            this.groupBox4.Controls.Add(lab8);
            lab8.SetBounds(91, 9, 45, 22);
            lab8.BackColor = Color.Blue;
            lab8.Click += new EventHandler(lab1_Click);
            lab8.ForeColor = Color.White;
           }
        private void usb_gonder(byte veri)
        {
            try
            {
                byte[] dizi = new byte[usbHidPort1.SpecifiedDevice.OutputReportLength + 1];
                dizi[0] = 0;
                dizi[1] = veri;
                for (int i = 2; i < textBox1.Text.Length; i++)
                {
                    dizi[i] = 0xFF;
                }
                if (usbHidPort1.SpecifiedDevice != null)
                {
                    usbHidPort1.SpecifiedDevice.SendData(dizi);
                }
            }
            catch
            {
                MessageBox.Show("USB Cihaz Hazır Değil,Cihazı Takınız!..");
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = "Herhangi Bir USB Cihaz Bağlı Değil!..";
            Form2 frm = new Form2();
            frm.ShowDialog();
            this.Text = frm.kullaniciadi;
            
        }
        private void usbHidPort1_OnSpecifiedDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = "Hikko USB HID (PIC18F4550)Cihazı Bağlandı!";
        }
        private void usbHidPort1_OnDeviceArrived(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = "Herhangi Bir USB Cihaz Bağlandı!";
        }
        private void usbHidPort1_OnDeviceRemoved(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = "Hikko USB HID (PIC18F4550)Cihazı Çıkarıldı!";
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                usbHidPort1.VendorId = Convert.ToInt32(textBox1.Text);
                usbHidPort1.ProductId = Convert.ToInt32(textBox2.Text);
                if ((usbHidPort1.VendorId == 4660) & (usbHidPort1.ProductId == 4660))
                {
                    usbHidPort1.CheckDevicePresent();
                }
                else
                {
                    MessageBox.Show("Yanlış Vendor ID veya Product ID girdiniz!..");
                }
            }
            catch
            {
                MessageBox.Show("Vendor ID ile Product ID Girmelisiniz!..");
            }
        }
        private void lab1_Click(object sender, EventArgs e)
        {
            Button lab1 = sender as Button;
            Button lab2 = sender as Button;
            Button lab3 = sender as Button;
            Button lab4 = sender as Button;
            Button lab5 = sender as Button;
            Button lab6 = sender as Button;
            Button lab7 = sender as Button;
            Button lab8 = sender as Button;
           
            switch (lab1.Text)
            {
                case "L_210":
                    led_flag1 = !led_flag1;
                    if (led_flag1 == true)
                    {
                        lab1.BackColor = Color.Red; sayi = sayi | 0x01;
                    }
                    else
                    {
                        lab1.BackColor = Color.Blue; sayi = sayi & 0xFE;
                    }
                    break;
                case "L_211":
                    led_flag2 = !led_flag2;
                    if (led_flag2 == true)
                    {
                        lab2.BackColor = Color.Red; sayi = sayi | 0x02;
                    }
                    else
                    {
                        lab2.BackColor = Color.Blue; sayi = sayi & 0xFD;
                    }
                    break;
                case "L_212":
                    led_flag3 = !led_flag3;
                    if (led_flag3 == true)
                    {
                        lab3.BackColor = Color.Red; sayi = sayi | 0x04;
                    }
                    else
                    {
                        lab3.BackColor = Color.Blue; sayi = sayi & 0xFB;
                    }
                    break;
                case "L_213":                           //bilgi işlem
                    led_flag4 = !led_flag4;
                    if (led_flag4 == true)
                    {
                        lab4.BackColor = Color.Red; sayi = sayi | 0x08;
                    }
                    else
                    {
                        lab4.BackColor = Color.Blue; sayi = sayi & 0xF7;
                    }
                    break;
                case "SERVER":
                    led_flag8 = !led_flag8;
                    if (led_flag8 == true)
                    {
                        lab5.BackColor = Color.Red; sayi = sayi | 0x80;
                    }
                    else
                    {
                        lab5.BackColor = Color.Blue; sayi = sayi & 0x7F;
                    }
                    break;
                case "L_214":
                    led_flag5 = !led_flag5;
                    if (led_flag5 == true)
                    {
                        lab6.BackColor = Color.Red; sayi = sayi | 0x10;
                    }
                    else
                    {
                        lab6.BackColor = Color.Blue; sayi = sayi & 0xEF;
                    }
                    break;
                case "L_215":
                    led_flag6 = !led_flag6;
                    if (led_flag6 == true)
                    {
                        lab7.BackColor = Color.Red; sayi = sayi | 0x20;
                    }
                    else
                    {
                        lab7.BackColor = Color.Blue; sayi = sayi & 0xDF;
                    }
                    break;
                case "L_216":
                    led_flag7 = !led_flag7;
                    if (led_flag7 == true)
                    {
                        lab8.BackColor = Color.Red; sayi = sayi | 0x40;
                    }
                    else
                    {
                        lab8.BackColor = Color.Blue; sayi = sayi & 0xBF;
                    }
                    break;
              }
            usb_gonder(Convert.ToByte(sayi));
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Form3 frm1 = new Form3();
            frm1.ShowDialog();
        }
    }
}
 
 
 
 
 
Benim kodlarım bu şekilde form oluşurken button oluşturdum 8 tane bu kodlarda herşey tamam.
ama birkaç sorum olacak;
1.) form1 in üstünde yönetici paneli diye bir button var benim yönetici olarak belirleyeceğim kişi görebilecek o button u sadece bunu nasıl yaparım. 
2.)yönetici ona girince form 3 gelecek orada ise [url= http://i.hizliresim.com/wLLB5J.pn g" target="_blank">http://i.hizliresim.com/wLLB5J.pn g"/> [/img][/url] bu şekilde.
çalıştırınca da [url= http://i.hizliresim.com/eklqPm.jp g" target="_blank">http://i.hizliresim.com/eklqPm.jp g"/> [/img][/url] bu şekilde oluyor. benim istedğim şey ise burada laboratuvar isimleri yazıyor işte ona göre buttonların aktif olup olmamasını nasıl yaparım...
 
yani;
gökhan turan isimli kullanıcı giriş yaptığı zaman l_210, l_211, l_212, l_213, l_214, l_215 bu buttonları aktif görecek diğerleri üzerinde oynama yapamayacak.
 
ben buttonları oluştururken veri tabanında kaydettiğim isimlerini text'e verdim sıkıntı olmasın diye.
 
 
 
 
Biliyorum biraz fazla karmaşık oldu ama bunu cumaya kadar bitirmem lazım lütfen yardımcı olabilir misiniz. 
CevapAlıntı
Gönderildi : 19/03/2014 13:46
Burak Şentürk
(@BurakSenturk)
Üye

Selam,

Yardımcı tabiki oluruz problem yok. 

Soru 1.) form1 in üstünde yönetici paneli diye bir button var benim yönetici olarak belirleyeceğim kişi görebilecek o button u sadece bunu nasıl yaparım. 

Cevap 1) Formuna bir login kontrolü koymalısın. Örn:

Bir form tasarla ;

içinde 3 label 2 textbox 1 tane button olsun.

Label1.Text = "Kullanıcı Adı";

Label2.Text = "Şifre";

Label3. Text = "Hatalı kullanıcı adı ve şifre";

Label3.Visible = false; 

şöyle bir kontrol methodu yap;

Buttonun clickeventina da bu aşağıdaki methodu ata. 

 

public void KullaniciKontrol (string kullaniciadi, string sifre)

{

 if ( kullaniciadi == "Yönetici" && sifre == "321654")

{

Form3 frm = new Form3();

frm.ShowDialog();

this.Close(); 

 

Else

{

Label3.Visible = true; 

 

Diğer soruların için ise bu şekilde bir yanıt veremeyeceğim. Ne database yapını biliyorum. Nede o buttonlar nerde onları. (Ekran görüntülerinde yokda)

Ancak sana çöyle bir mantık sunabilirim.

Bir tablo oluştur. Bu tablonda kullanıcıların id leri olsun. Aynı zamanda o kullanıcıların görebileceği buttonların id leri yazsın.

Kullanıcı login olduğunda bu tablodan görebileceği button id lerini çekip formundaki tüm buttonları foreach ile dönüp id leri uyuşmayanları visible edebilirsin.

 

Umarım işini görür.

Saygılarımla

Burak Şentürk 

 

CevapAlıntı
Gönderildi : 19/03/2014 15:55
serdar_evleksiz
(@serdar_evleksiz)
Üye

Benim veritabanı yapım şu şekilde;

 3 tane tablo var.

1.si kullanicilar;

kno----adisoyadi----kul_adi----parola

 2.si laboratuvarlar

lno-----L_adi

3.sü yetki

yno-----kno-----lno

 

diye 1.de kullanıcılar var yani programı açabilecek kişiler ben adisoyadi kısmını şu yüzden ekledim hangi kullanıcı formu açarsa o kişinin adı soyadı açılan formun textinde yazacak.

2.de ise laboratuvarların adları var  L_210 L_211 L_212 L_213 L_214 L_215 vb. diye

3.de ise kimin nereye yetkisi var o var.

kno kullanici tablosundan geliyor, lno laboratuvar tablosundan geliyor. 

mesela

1          2 (serdar)      1 (L_210) 

 

oluyor yani serdar isimli kullanıcı 1.laboratuvara yani l_210 u kullanmaya yetkili.

 

bunu oluşturdum ben mesela serdar giriş yaptığı zaman l_210 un yazılı olduğu button u kullanabilecek diğerlerine dokunamayacak.orada tıkalıp kaldım.tüm formlarımın resimlerini aşağıda vereceğim sizlere.

 

Bu ilk formun resmi aynı zamanda programın görüntüsü.

 

[url= http://i.hizliresim.com/x09Vgo.pn g" target="_blank">http://i.hizliresim.com/x09Vgo.pn g"/> [/img][/url]

 

bu da 2.formun resmi buraya kullanicilar tablosunu bindingsource ile bağladım giriş kısmı bu. 

 

[url= http://i.hizliresim.com/KZmNRk.pn g" target="_blank">http://i.hizliresim.com/KZmNRk.pn g"/> [/img][/url] 

 

 

Not:sanırım fark ettiniz butonları form oluşurken kendi oluşmasını sağladım yani dinamik olarak oluşturdum  bu resim de de form1 in çalışma hali

[url= http://i.hizliresim.com/wbm80n.pn g" target="_blank">http://i.hizliresim.com/wbm80n.pn g"/> [/img][/url] 

 

Gördüğünüz üzere 8 tane buton oluşuyor ve üstünde laboratuvarların isimleri yazıyor... ben ise mesela serdar isimli kullanıcı girdiği zaman sadece server,l_210 ve l_211 isimli butonları aktif görecek diğerlerini de görecek ama o butonları kullanamayacak.. bunu nasıl yapabilirim lütfen yardımcı olun Burak Bey. 

CevapAlıntı
Gönderildi : 19/03/2014 18:12
Paylaş: