Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

dinamicko kreiranje i zacuvuvanje

[es] :: C/C++ programiranje :: dinamicko kreiranje i zacuvuvanje

[ Pregleda: 1928 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
*.cabletel.com.mk.



+14 Profil

icon dinamicko kreiranje i zacuvuvanje06.07.2012. u 01:12 - pre 83 meseci
Dinamicki kreiram neki element primer Button, kako na kraju taj element da ostane na formi i nakon ponovog startovanje programa. bcb2010. Hvala

Code:

TButton* Button2 = new TButton (Form1);
Button2->Parent = Form1;
 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
*.cabletel.com.mk.



+14 Profil

icon Re: dinamicko kreiranje i zacuvuvanje07.07.2012. u 07:54 - pre 83 meseci
Zasto to meni niko ne odgovara na teme :) cudno :) Trazila sam po netu resenje ali ne znam pod koim kljucnim recima da trazim. Obaj glupi fakultet u mkd je s.... odakle se izucava delphi i c++ a ne c# nije mi jasno :S. Ako moze neko ikako da mi pomogne oko ovoga pls.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4860
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: dinamicko kreiranje i zacuvuvanje07.07.2012. u 09:45 - pre 83 meseci
Ovo može biti i jednostavno i komplikovano pitanje, koje zahteva poprilican broj koraka.

Pošto dinamički kreiraš objekat, potrebno je negde da zapamtiš to što si uradila, pa da na startovanju ponovis iste korake u nekom dogadjaju.

Jedan od načina je da napraviš neki INI fajl gde ćeš upisivati sve što si dinamički kreirala.

Treba osmisliti strukturu tog INI fajla, tako da može da primi više istih i različitih kontrola, kao i njihovih osobina.

Recimo, možeš ovako:

[Control]
TButton1=Button1
TButton2=Button2

[TButton Properties]
Button1=OVDE STRING KOJI OPISUJE OSOBINE KOJE SU POTREBNE ZA TACNU REGENERACIJU OBJEKTA KAKAV JE BIO RANIJE. NAJVAZNIJ SU: POZICIJA, VELICINA, NASLOV, DOGADJAJI
Button2= ...

(ovo naravno implicira da treba prouciti klasu TIniFile)


Postoje i funkcije WriteComponent ReadComponent koje mogu pomoci oko kreiranja stringa (tekstualnog, naravno) koji je kopija osobina objekta (binarnih, naravno), ali nisu svemoguce, jer C++ Builder malo drugacije radi streaming...

 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
*.cabletel.com.mk.



+14 Profil

icon Re: dinamicko kreiranje i zacuvuvanje07.07.2012. u 18:37 - pre 83 meseci
Znaci trebam pri svako zatvaranje programa proveravati dali imam nesta plus napravljeno, ako ima onda osobine (one meni bitne) ispisem u ini, pri svako startovanje aplikacije treba citatu iz inija creirati te obkjekte i dodeljivati im vredost?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4860
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: dinamicko kreiranje i zacuvuvanje07.07.2012. u 20:38 - pre 83 meseci
Otprilike bas tako.
Code:

void __fastcall TForm1::FormActivate(TObject *Sender)
 {
    static bool HasPassedOnceOnActivate = false;

    if ( !HasPassedOnceOnActivate )
    {
       HasPassedOnceOnActivate = true;
       // SAMO JEDNOM SE IZVRŠAVA
       // Ovde na primer čitaš INI datoteku, i nekom tehnikom i nekim redosledom ponovo kreiraš objekte i dodeljuješ im vrednosti.
    }
    
    // POTENCIJALNO, VIŠE PUTA SE IZVRŠAVA
 }


Koju ces strategiju upotrebiti, da bi se dinamicki kreirane kontrole ponovo pojavile na formi pri startovanju programa, zavisi od zahteva projekta.

 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
*.cabletel.com.mk.



+14 Profil

icon Re: dinamicko kreiranje i zacuvuvanje08.07.2012. u 01:54 - pre 83 meseci
Hvala na odgovorima resila sam skoro sve probleme :). Samo me iteresuje nesta. Recimo imam PageCotrol sa jednim TabSheet i na njega nekoliko objekta, ima opcija dinamicki da se kreiraju tabsheet i neki drugi objekti, i recimo da su kreirani 40-50 drugi objekti, kada se po prvi put otvori forma/aplikacija jer nema to da potraje. Samo me zanima kako to funkcionise, postoje drugi tezi mogucnosti ili sve se svodi na to. Hvala jos jednom.
 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.36.*



+14 Profil

icon Re: dinamicko kreiranje i zacuvuvanje14.07.2012. u 19:44 - pre 83 meseci
Da ne otvaram novu temu jer je vezano za dinamicko kreiranje. Kad kreiram neki objekt kako posle snjim da upravljam?

Code:


for(int i = Form1->TTest->RecordCount; i>=1; i--)
    {
        Form1->TTest->RecNo = i;
        TPanel *Panel = new TPanel( this );
        Panel->Parent = Form1;
        Panel->Align = alTop;
        Panel->Height = 77;

        TLabel *LTest= new TLabel(Panel);
        LTest->Parent = Panel;
        LTest->Left = 24;
        LTest->Top = 14;
        LTest->Font->Color = clBlue;
        LTest->Font->Size = 11;
        LTest->Font->Style = LTest->Font->Style << fsBold;
        LTest->Caption = "test";
    }


U bazi ako ima 5 zapisa on kreira pet labele, kako posle svakoj labeli da premonim "caption" recimo?
 
Odgovor na temu

ik0
Ivan Cekov
Information System Developer
Planning Authority Malta
Floriana, Malta

Član broj: 222385
Poruke: 158
62.162.63.*



+3 Profil

icon Re: dinamicko kreiranje i zacuvuvanje14.07.2012. u 20:36 - pre 83 meseci
Jedan nacin je da kreiras nizu od objekta, naprimer kod tebe kreiras oniliko objekta koliko imas zapisa u bazi (bar po primeru). Onda samo gde ti treba LTest[1]->Caption"test"; ... ja tako radim sigurno ima drugi nacin ima mnogo iskusniih od mene ce da ti kazu :)

Code:

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
    //...
    public:
        TLabel *TestLabela[10];
    //...
};
//---------------------------------------------------------------------------
for(int i = Form1->TTest->RecordCount; i>=1; i--)
    {
        Form1->TTest->RecNo = i;
        TPanel *Panel = new TPanel( this );
        Panel->Parent = Form1;
        Panel->Align = alTop;
        Panel->Height = 77;

        TestLabela[i] = new TLabel(Panel);
        TestLabela[i]->Parent = Panel;
        TestLabela[i]->Left = 24;
        TestLabela[i]->Top = 14;
        TestLabela[i]->Font->Color = clBlue;
        TestLabela[i]->Font->Size = 11;
        TestLabela[i]->Font->Style = TestLabela[i]->Font->Style << fsBold;
        TestLabela[i]->Caption = "test";
    }

Kude tumbe i tri bandere
 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.36.*



+14 Profil

icon Re: dinamicko kreiranje i zacuvuvanje14.07.2012. u 21:08 - pre 83 meseci
Problem je u tome sto ne znam koliko zapisa moze da ima, a i kako iskoristiti neki njegov event OnClick ili bilo koi? Hvala na pmoci.
 
Odgovor na temu

ik0
Ivan Cekov
Information System Developer
Planning Authority Malta
Floriana, Malta

Član broj: 222385
Poruke: 158
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: dinamicko kreiranje i zacuvuvanje14.07.2012. u 22:09 - pre 83 meseci
Ako bas za OnClik hoces onda moze ovako

Code:

*.h
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
    //...
    public:
        TLabel *TestLabela[10];
        void __fastcall OnClickTestLabela(TObject *Sender);
    //...
};
//---------------------------------------------------------------------------

*.cpp
void __fastcall TForm1::OnClickTestLabela(TObject *Sender)
{
         ShowMessage("OnClickTestLabela");
}

//...
TestLabela[i]->OnClick = OnClickTestLabela;


E sada za MauseMove i te slicne iskreno nisu mi trebale i ne znam :)
Kude tumbe i tri bandere
 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.36.*



+14 Profil

icon Re: dinamicko kreiranje i zacuvuvanje15.07.2012. u 08:51 - pre 83 meseci
Ne znam tacan broj battone ili labele nebitno, sto ako imam 1000 treba mi 1000 funkcija...Valjda postoi neki nacin da se koriste sve evente od taj objekt?
 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.36.*



+14 Profil

icon Re: dinamicko kreiranje i zacuvuvanje15.07.2012. u 15:36 - pre 83 meseci
Znaci obrbula sam net da nadjem kako da kreiram dinamicki event, ni jedan primer za c++ :S Jer moze neko da mi objasni kako da kreiram KeyPress event i kako ga upotrebiti t.e dati nekom objektu. Molim vas :)
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Re: dinamicko kreiranje i zacuvuvanje15.07.2012. u 20:05 - pre 83 meseci
Vidi da li ti ovo odgovara:

Code:

TButton** Buttons;
bool allocated = false; 
//---------------------------------------------------------------------------
void __fastcall TForm1::OnButtonsClik(TObject *Sender)
{
    TButton* pGumb = dynamic_cast<TButton*>(Sender);
    ShowMessage("Ja sam " + pGumb->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if(allocated) return;
    // creating TButton pointers
    Buttons = new TButton*[8*8];
    for(int i = 0; i < 8; i++)
        for(int j = 0; j < 8; j++)
        {
            Buttons[i*8 + j] = new TButton(this);
            Buttons[i*8 + j]->Parent = this;
            Buttons[i*8 + j]->Caption = UnicodeString(char(i+65)) + IntToStr(j + 1);
            Buttons[i*8 + j]->Left = 10 + i*50;
            Buttons[i*8 + j]->Top = 30 + j*25;
            Buttons[i*8 + j]->Width = 50;
            Buttons[i*8 + j]->Height = 25;
            Buttons[i*8 + j]->OnClick = OnButtonsClik; // OnClick event...
        }
    allocated = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    if(!allocated) return;
    for(int i = 0; i < 64; i++)
        delete Buttons[i];
    delete[] Buttons;
}
 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.36.*



+14 Profil

icon Re: dinamicko kreiranje i zacuvuvanje15.07.2012. u 21:10 - pre 83 meseci
Zar nije ovo isto kao i ik0 sto je reko :) Nego vec kad si napiso morala sam te nesto pitati (procitala da si nastavnik ili asistent). Mozda sam preskocila taj cas ili to nije bilo, sto znaci TButton** Buttons sto dva pokazivaca? i Buttons = new TButton*[8*8]; (Tako malo su predavali na fakultetu da je to strasno pa zato pitam ako nije slozeno odgovori i hvalati za odgovor.)
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Re: dinamicko kreiranje i zacuvuvanje15.07.2012. u 22:25 - pre 83 meseci
VCL komponente se moraju kreirati preko pokazivača operatorom new (dinamički). Ako je riječ o jednom objektu onda je riječ o jednom pokazivaču:

TButton* objekt;

ali ako je riječ o više objekata (polju objekata) tipa TButton onda je riječ o pokazivaču na to polje objekata (pokazivaču na pokazivač) tj.

TButton** Buttons;

Sada zapravo kažeš koliko objekata (TButton pokazivača) želiš;

Buttons = new TButton*[8*8]; // 64 TButtona

I naravno, u FormClose se ti pokazivači moraju deinicijalizirati.

 
Odgovor na temu

sanivr
Sanja Ristic
Student
Vranje

Član broj: 303492
Poruke: 39
46.217.36.*



+14 Profil

icon Re: dinamicko kreiranje i zacuvuvanje16.07.2012. u 01:20 - pre 83 meseci
Evo ja dok sam cekala odgovore probala sam nesto sama da odradim pa kazi mi gde sam gresila. Hvalati mnooooogo mi je pomoglo ovo.

Code:

LoginForma *Operatori[100];  //treba mi (Form1->ADOTable1->RecordCount) ali ovde nisam migla nikako da ogranicim

for(int i = Form1->ADOTable1->RecordCount; i>=1; i--)
        {
            Operatori[i] = new LoginForma;

            Form1->TOperatori->RecNo = i;

            Operatori[i]->PPanel = new TPanel( this );
            Operatori[i]->PPanel->Parent = ScrollBox1;
            Operatori[i]->PPanel->Align = alTop;
            Operatori[i]->PPanel->Height = 77;
            Operatori[i]->PPanel->BevelOuter = bvLowered;

            Operatori[i]->LOperatorIme = new TLabel( this );
            Operatori[i]->LOperatorIme->Parent = Operatori[i]->PPanel;
                        //...


            Operatori[i]->LPrivilegija = new TLabel( this );
            Operatori[i]->LPrivilegija->Parent = Operatori[i]->PPanel;
            Operatori[i]->LPrivilegija->Left = 16;
            Operatori[i]->LPrivilegija->Top = 38;
                        //...

            Operatori[i]->LSifra = new TLabel( this );
            Operatori[i]->LSifra->Parent = Operatori[i]->PPanel;
            Operatori[i]->LSifra->Left = 296;
            Operatori[i]->LSifra->Top = 15;
                        //...

            Operatori[i]->LLozinka = new TLabel( this );
            Operatori[i]->LLozinka->Parent = Operatori[i]->PPanel;
            Operatori[i]->LLozinka->Left = 290;
            Operatori[i]->LLozinka->Top = 40;
                        //...

            Operatori[i]->LSifraSifra = new TLabel( this );
            Operatori[i]->LSifraSifra->Parent = Operatori[i]->PPanel;
            Operatori[i]->LSifraSifra->Top = 13;
                        //...

            Operatori[i]->ELozinka = new TEdit( this );
            Operatori[i]->ELozinka->Parent = Operatori[i]->PPanel;
            Operatori[i]->ELozinka->Left = 342;
            Operatori[i]->ELozinka->Top = 13;
            Operatori[i]->ELozinka->OnKeyPress = Operatori[i]->EditKeyPress1;
                        //...

            Operatori[i]->BPrijavi = new TButton( this );
            Operatori[i]->BPrijavi->Parent = Operatori[i]->PPanel;
            Operatori[i]->BPrijavi->Top = 18;
            Operatori[i]->BPrijavi->Left = 624;
            Operatori[i]->BPrijavi->OnClick = Operatori[i]->ButtonKlik;
                        //...

        }

H
//---------------------------------------------------------------------------
class TForm1: public TForm
{
__published:    // IDE-managed Components

private:    // User declarations
public:        // User declarations
      TButton *Button1;
      void __fastcall Button152Click(TObject *Sender);


        __fastcall TForm1(TComponent* Owner);
};

class LoginForma
{
    
    public:
        TButton *BPrijavi;
        TEdit *ELozinka;
        TPanel *PPanel;
        TLabel *LOperatorIme;
        TLabel *LPrivilegija;
        TLabel *LSifra;
        TLabel *LLozinka;
        TLabel *LSifraSifra;


        int ID_Operator;
        int IDPrivilegija;
        AnsiString Ime;
        AnsiString Prezime;
        AnsiString Sifra;
        AnsiString Lozinka;

        void __fastcall ButtonKlik(TObject *Sender)
        {
            if(ELozinka->Text==Lozinka)
            {
             TForm1 *a;
             a->Button1( BPrijavi );
            }
            else
             ShowMessage("Greska pass");
        }

        void __fastcall EditKeyPress1(TObject *Sender, wchar_t &Key)
        {
            if(Key == 13)
            ButtonKlik( BPrijavi );
        }
};

//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
 
Odgovor na temu

[es] :: C/C++ programiranje :: dinamicko kreiranje i zacuvuvanje

[ Pregleda: 1928 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.