Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 27 odgovora
  • 6.969 pregleda

Najnovija ↓

Kreiranje objekta od strane korisnika 18.02.2009. u 14:06 · pre 215 meseci #1
Da li je moguce da na osnovu stanja u bazi na MAIN formi se pojavljuje ili ne pojavljuje CheckBox, a da pritom taj CheckBox nisam ja prevukao na formu i njegovu vidljivost regulisao preko Visible, nego njegovo postojanje korisnik regulise? Prost primer: Imam upitnu formu za korisnika u kojoj on treba da upise u TextBox "0" ili "1", a zatim pritiskom dugmeta OK trebalo bi da se otvori nova forma, prazna ako je odabrana "0" i forma sa CheckBox-om i tekstom u checkBox-u koji glasi "USPEH" ako je odabrana "1". Imali neko ideju kako da kreiram ovu mogucnost za korisnika, da on ustvari odredjuje sta ce biti na formi?
Re: Kreiranje objekta od strane korisnika 18.02.2009. u 14:26 · pre 215 meseci #2
Code:
If nesto = 1 then
        Dim ch As New CheckBox
        ch.Text = "USPEH"
        ch.Top = 11
        ch.Left = 50
        ' itd ....
        Me.Controls.Add(ch)
end if 
Potpis
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
Re: Kreiranje objekta od strane korisnika 18.02.2009. u 19:27 · pre 215 meseci #3
C# je jezik, ali iz ovoga sto si ovde naveo mislim da nesto kontam, ali moracu prvo da probam. Ovo mi deluje dosta jednostavno, razmisljao sam na jedan drugi nacin (mnogo komplikovaniji) a mozda se bas u ovoj jednostavnosti krije i odgovor :) Nista ostaje mi da probam pa cu saznati sve.
Re: Kreiranje objekta od strane korisnika 19.02.2009. u 12:27 · pre 215 meseci #5
Evo ja da ne otvaram novu temu, nadovezacu se na ovu:

Treba mi kod (vb) za prevlacenje itema (npr. ovog gore checkboxa) po formi, tzv. drag n drop?
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 10:22 · pre 215 meseci #6
Ok, uspeo sam da napravim da korisnik moze sam da kreira CheckBox. Ali kako sad ja da omogucim da ukoliko korisnik CheckBox postavi na stanje true da mi se tada npr. pojavi label.Text "RADI!"?
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 10:53 · pre 215 meseci #7
Moras da dodas EventHandler metodu na dogadjaj.

Code:

CheckBox chk = new CheckBox();
//...
chk.CheckedChanged += new System.EventHandler(this.chk_CheckedChanged);


Code:


private void chk_CheckedChanged(object sender, EventArgs e)
{    
    // na primer
    lbl.Text = ((CheckBox)sender).Checked ? "Radi" : "Ne radi";
}


U konstruktoru forme sigurno imas poziv metode InitializeComponent(). Njena definicija se nalazi u fajlu ImeForme.Designer.cs. Kad nesto dodas/promenis u design modu, upisace se u ovaj fajl. Proanaliziraj ovaj fajl, moze ti biti korisno.
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 11:57 · pre 215 meseci #8
Ok, to sam skontao ali meni ustvari nastaje problem kada generisem u istom momentu i label i checkBox. Tada label treba da zavisi od toga da li je checkBox na true ili na false. Izgleda da nisam predhodno pitanje dobro formulisao. :-/
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 12:19 · pre 215 meseci #10
private void Form1_Load(object sender, EventArgs e)
{
//TODO: This line of code loads data into the 'dsObradaUzorka.tblObradaUzorka' table. You can move, or remove it, as needed.
this.tblObradaUzorkaTableAdapter.Fill(this.dsObradaUzorka.tblObradaUzorka);

Class1 conn1 = new Class1();
conn1.setSqlConnection();

clsFunc.odredjivanje_TotalRow("tblAnalize");

for (int i = 0; i <= clsVariables.sTotalRow; i++)
{
if (i != 0)
{
if (clsVariables.sAnaliza != "")
{
clsFunc.citanje_Podataka(i, "tblAnalize");

CheckBox ckb = new CheckBox();
ckb.AutoSize = true;
ckb.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
ckb.Location = new System.Drawing.Point(clsVariables.sX, clsVariables.sY);
ckb.Name = "checkBox" + clsVariables.sID;
ckb.Text = clsVariables.sAnaliza;
ckb.UseVisualStyleBackColor = true;
ckb.CheckedChanged += new System.EventHandler(this.ckb_CheckedChanged);
this.Controls.Add(ckb);

ComboBox cmb = new ComboBox();
cmb.DataSource = this.tblObradaUzorkaBindingSource;
cmb.DisplayMember = "Uređaj za obradu";
cmb.FormattingEnabled = true;
cmb.Location = new System.Drawing.Point(143, 389);
cmb.Name = "cmbUredjaj" + clsVariables.sID;
cmb.Size = new System.Drawing.Size(121, 21);
cmb.ValueMember = "ID";
cmb.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.cmb_KeyPress);
this.Controls.Add(cmb);
}
}
}
}

Kako sada da Enabled ovako nastalog ComboBox-a zavisi od stanja pre njega nastalog CheckBox-a? E, to mi je problem jer oblast postojanja objekta cmb prestaje u okviru funkcije Form1_Load.
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 12:35 · pre 215 meseci
izmenjeno 1 put, poslednji put marko1981 20.02.2009. u 13:49
  1. marko198120.02.2009. u 13:49zapis iz teksta poruke
#11
Citat:

...oblast postojanja objekta cmb prestaje u okviru funkcije Form1_Load...


Da, u smislu pristupanja navodjenjem imena kontrole. Kontrola postoji sa svojim imenom, ali nemas lokalnu promenljivu u klasi forme koja se zove ckb.

Imas bar 2 nacina da ovo resis.

Prvi je da napravis u Form.cs klasi lokalnu promenljivu CheckBox ckb ...

Code:

// Form1.cs:

private ComboBox cmb = null;


... a da je u Load metodi samo inicijalizujes. Posle bi mogao da joj pristupis kao sto verovatno sad pokusavas.

Znaci, ne bi bilo:

Code:

ComboBox cmb = new ComboBox();
// ...


nego

Code:

this.cmb = new ComboBox();
// ...


Drugi je da CheckBox kontrolu ckb trazis pomocu

Code:

Controls[] controls = this.Controls.Find("ckb", true);
if (controls.Length > 0)
{
   CheckBox chkBox = controls[0];
}


Ja sam za prvo resenje.

Btw. Kad ubacujes kod u odgovor, stavi ga izmedju tagova, dosta je preglednije.
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 12:56 · pre 215 meseci #12
Ali sada i kada sam napravio lokalnu promenjivu cmb ja ne mogu njen enabled da kontrolisem.
Koristio sam [cmb.Enabled = ((CheckBox)sender).Checked ? true : false;]
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 13:01 · pre 215 meseci #13
Moras napisati kakvu poruku dobijas.

Jel ne mozes da build-ujes kod ili ti pukne program kad naidje na ovaj red?
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 13:10 · pre 215 meseci #14
Pazi on prodje kroz kod i pogledao sam u Watch prozoru on iz toga reda dobija true kao vrednost ali se nista ne desava na formi. Sve sljaka ali bez rezultata. Da zaboravih da kazem da se taj kod nalazi unutar funkcije ckb_CheckedChanged.
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 13:17 · pre 215 meseci #15
Tek sad sam video da ti u for petlji pravis vise kontrola, a ne samo jednu.

Ovo je za Control.ControlCollection.Find() metodu koju smo pomenuli, a za parametar postavljaj ime koje, takodje vidim, ti kreiras preko:

Code:

// ...
ckb.Name = "checkBox" + clsVariables.sID;
cmb.Name = "cmbUredjaj" + clsVariables.sID;
// ...


A ovo za lokalnu promenljivu u ovom slucaju zaboravi.


Re: Kreiranje objekta od strane korisnika 20.02.2009. u 13:22 · pre 215 meseci #16
Kad ti dodas kroz design neku kontrolu i ona automatski dobije ime, recimo Label1, property Name takodje postaje Label1.

Ti ovde sam postavljas Name i to iskoristi da pristupis odredjenoj kontroli u nizu kontrola.
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 13:29 · pre 215 meseci #17
Mozesli ovu metodu malo da mi pojasnis? Ne razumem kako preko nje da kontrolisem stanje cmb.enabled u zavisnosti od toga da li je ckb.Checked na true/false? Takodje, ne razumem da li bi onda to znacilo da bi takav kod trebalo ubaciti u funkciju ckb_CheckedChanged?
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 13:36 · pre 215 meseci
izmenjeno 1 put, poslednji put marko1981 20.02.2009. u 13:49
  1. marko198120.02.2009. u 13:49zapis iz teksta poruke
#18
Mozda ima neka greska posto kucam direktno ovde, ali shvatices verovatno ideju.

Code:

private void chk_CheckedChanged(object sender, EventArgs e)
{    
    CheckBox chk = (CheckBox)sender;

    string name = chk.Name;
    string id = name.Substring("checkBox".Length);

    string comboBoxName = string.Format("cmbUredjaj{0}", id);

    Controls[] cntrls = this.Controls.Find(comboBoxName, true);
    if (cntrls.Length > 0)
    {
        ((ComboBox)cntrls[0]).Enabled = chk.Checked;
    }
}
Re: Kreiranje objekta od strane korisnika 20.02.2009. u 13:45 · pre 215 meseci #19
Ne moze da ga pokrene za uslov if prijavljuje: Operator '>' cannot be applied to operands of type 'method group' and 'int'
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme