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

C++ Builder - pomoć oko buttona i par naredbi

[es] :: C/C++ programiranje :: C++ Builder - pomoć oko buttona i par naredbi

[ Pregleda: 3078 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

scorpion667

Član broj: 174625
Poruke: 19
80.71.152.*



Profil

icon C++ Builder - pomoć oko buttona i par naredbi18.10.2008. u 13:55 - pre 188 meseci
1. Imam program koji na glavnoj formi ima 8 buttona. Klikom na bilo koji od tih 8 buttona otvara se nova (zasebna) forma. Ima li ikoji način da mi se npr. prvi button aktivira (upre) pritiskom na tipku 1, drugi button pritiskom na tipku 2 itd. Tj. da ne moram klikati mišom da bi otvorio novu formu već da samo uprem neku tipku i nova forma mi se otvori.

2. Dalje... na svakoj od tih formi prikažu mi se podatci iz baze podataka koju sam povukao iz accessa. Što treba učiniti da u borlandu imam naredbu da mi isprinta na printer te podatke?

3. Postoji li ikoji način da npr. dodam neku .avi animaciju (ili bilo kojeg formata) da se vrti dok se nešto učitaje (loading) i ako postoji na koji način se to radi.

4. Možete li mi pojasniti, ako nije komplicirano, što treba učiniti da bi ovu bazu što imam u programu exportirao u excel format?

5. Postoji li način da dodam nekakav animinirani button, ili da na ovaj postojeći dodam nekakvu animaciju (npr. da trepće)?

Eto možda budem imao još pitanja, al nemogu se trenutno sjetiti kojih.:D. Najvažnije mi je ako možete da odgovorite barem na ovo prvo. Unaprijed hvala.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi18.10.2008. u 15:07 - pre 188 meseci
Citat:

1. Imam program koji na glavnoj formi ima 8 buttona. Klikom na bilo koji od tih 8 buttona otvara se nova (zasebna) forma. Ima li ikoji način da mi se npr. prvi button aktivira (upre) pritiskom na tipku 1, drugi button pritiskom na tipku 2 itd. Tj. da ne moram klikati mišom da bi otvorio novu formu već da samo uprem neku tipku i nova forma mi se otvori.

Prvo, postavi osobinu TForm::KeyPreview forme na kojoj su tasteri na true.
Drugo, dodaj otrpilike ovakav kod u dogadjaj OnKeyDown(...).
Code:

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    switch ( Key )
    {
        case '1' : Button1Click( this ); break;
        case '2' : Button2Click( this ); break;
        case '3' : Button3Click( this ); break;
    }
}

Citat:

2. Dalje... na svakoj od tih formi prikažu mi se podatci iz baze podataka koju sam povukao iz accessa. Što treba učiniti da u borlandu imam naredbu da mi isprinta na printer te podatke?

Postoji QReport komponenta u BCB6, a u novijima su Rave reports. ONi obicno sluze za stampanje zapisa iz baze. Za jednostavnije stvari, moze se koristiti i klasa TPrinter.

Citat:

3. Postoji li ikoji način da npr. dodam neku .avi animaciju (ili bilo kojeg formata) da se vrti dok se nešto učitaje (loading) i ako postoji na koji način se to radi.

Pogledaj komponentu TAnimate. Doduse, mislim da treba da bude klasican Windows AVI format, pa je mozda potrebna neka konverzija.

Citat:

4. Možete li mi pojasniti, ako nije komplicirano, što treba učiniti da bi ovu bazu što imam u programu exportirao u excel format?

Moze na nekoliko nacina, sve zavisi od potreba. Postoje recimo komponente u sekciji Office2k, i sl. A moze se upotrebiti i obican ADO.

Citat:

5. Postoji li način da dodam nekakav animinirani button, ili da na ovaj postojeći dodam nekakvu animaciju (npr. da trepće)?

Za ovo obicno treba ugraditi neke 3rd party komponente ili simulirati animaciju ucestalim (TTimer) menjanjem slike na TSpeedButton ili TBitButton.
 
Odgovor na temu

scorpion667

Član broj: 174625
Poruke: 19
80.71.152.*



Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi19.10.2008. u 16:28 - pre 188 meseci
Hvala ti puno. Budem probao pa ti javim ako išta zapne.
 
Odgovor na temu

scorpion667

Član broj: 174625
Poruke: 19
80.71.145.*



Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi20.10.2008. u 11:51 - pre 188 meseci
Gdje mogu naci OnKeyDown(...)? Našao sam ga jedino u Events al tamo ima samo padajući izbornik u kojem nema ništa.

Citat:
X Files: Postoji QReport komponenta u BCB6, a u novijima su Rave reports. ONi obicno sluze za stampanje zapisa iz baze. Za jednostavnije stvari, moze se koristiti i klasa TPrinter.


Neznam ni gdje naci TPrinter.:-). Moze li nekakv najjednostavniji primjer kako da isprintam tablicu? pliiizzz.

Citat:
X Files:Moze na nekoliko nacina, sve zavisi od potreba. Postoje recimo komponente u sekciji Office2k, i sl. A moze se upotrebiti i obican ADO


U mene su najjednostavnije moguće potrebe. znači samo bih htio da tu tablicu (DBGrid) exportira u excel. nikakvih naprednih stvari nema. Moze i tu malo pomoci?:-)
Pocetnik sam pa mi dosta toga zapinje i pola stvari ne znam gdje se nalazi:-)

Hvala ti X-Files. legenda si.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi20.10.2008. u 12:14 - pre 188 meseci
Citat:
dje mogu naci OnKeyDown(...)? Našao sam ga jedino u Events al tamo ima samo padajući izbornik u kojem nema ništa.

Upravo u Events-ima. Dupli klik na taj 'prazan' combo-box i upisi kod koji si dobio. Ne zaboravi i ono KeyPreview pa postavis na true.

Citat:
ne znam ni gdje naci TPrinter.:-). Moze li nekakv najjednostavniji primjer kako da isprintam tablicu?

TPrinter nije vizuelna kontrola. To je obicna klasa koja se moze upotrebiti za izlaz na stampac.

Evo i neki kod za stampu TListView koji sam rnije sklepao. Moze se upotrebiti i za bilo koji drugu tabelarnu stampu, samo umesto stavki TListView stavljaj citaj i stavljaj polja neke tabele:

Code:

void TLanMsgMainForm::PrintItems( bool Selected )
{
   ListView->Enabled = false;
   int margin_pixels = 30;
   Printer()->BeginDoc();
   if ( Selected )
      Printer()->Title = "Printing selected...";
   else
      Printer()->Title = "Printing all...";

   Printer()->Canvas->Font->Name = "Terminal";
   Printer()->Canvas->Font->Size = 9;
   Printer()->Canvas->Font->Charset = EASTEUROPE_CHARSET;
   Printer()->Canvas->Font->Pitch = fpFixed;

   int line = 0;
   int real_line = 0;

   for ( int i=0; i<ListView->Items->Count; i++ )
   {
      if ( Selected && !ListView->Items->Item[i]->Selected )
         continue;

      ++line;
      ++real_line;

      AnsiString LineToPrint =
         Format( "%4s.%4s%10s%12s%11s%10s%25s%30s",
         ARRAYOFCONST(( (IntToStr(real_line)),
         (ListView->Items->Item[i]->SubItems->Strings[0]),
         (ListView->Items->Item[i]->SubItems->Strings[1]),
         (ListView->Items->Item[i]->SubItems->Strings[2]),
         (ListView->Items->Item[i]->SubItems->Strings[3]),
         (ListView->Items->Item[i]->SubItems->Strings[4]),
         (ListView->Items->Item[i]->SubItems->Strings[5]),
         (ListView->Items->Item[i]->SubItems->Strings[6]) )) );

      int TH = Printer()->Canvas->TextHeight( LineToPrint );
      int top = margin_pixels + ( line * TH );

      if ( ( top + 2*margin_pixels + TH ) >= Printer()->PageHeight )
      {
         Printer()->NewPage();
         line = 1;
         top = margin_pixels + ( line * TH );
      }

      Printer()->Canvas->TextOut( margin_pixels, top, LineToPrint );
   }

   Printer()->NewPage();
   Printer()->EndDoc();
   ListView->Enabled = true;
}

Ono Bool Selected mozes i da uklonis, a sluzilo je da se implementira stampanje svih stavki ili samo selektovanih iz TListView.

Za izvoz u Excel nemam trenutno primer, potrazicu cim stignem...
 
Odgovor na temu

itf
Zagreb

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



+9 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi20.10.2008. u 19:13 - pre 188 meseci
Što se tiče excela možeš upotrijebiti i ono što sam već stavio ovdje na forumu...

http://www.elitesecurity.org/t...cija-XLSReadWriteII-komponenti
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi20.10.2008. u 20:16 - pre 188 meseci
Upis u EXCEL se moze ostvariti i pomocu obicnih ADO komponenti.

Recim:
1. Kreirati: Book1.xls
2. Na Sheet1 upisati u prve tri kolone a, b, c (da budu nazivi kolona)
3. Obeleziti ih (Format Cells) da budu tekst u nasem slucaju
4. podesiti TADOConnection i TADOQuery
5. Dodati ovaj test kod u Button1:
Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   ADOQuery1->Close();
   ADOQuery1->SQL->Clear();
   ADOQuery1->SQL->Add( "INSERT INTO [Sheet1$] (a, b, c) VALUES ('aaa', 'bbb', 'ccc')");
   AnsiString CS = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                   ExtractFilePath( Application->ExeName ) + "Book1.xls" +
                   ";Extended Properties=Excel 8.0";
   ADOQuery1->ConnectionString = CS;
   ADOQuery1->ExecSQL();
   ShowMessage("Gotovo!");
}

(ove parametre za ConnectionString mozes upisati i u Object inspectoru, ja sam kreirao dinamicki da Book1 trazi u folderu gde je EXE)


Pogledati radi ideja i sledeci link:
http://support.microsoft.com/kb/295646
(istovremeno citanje iz baze i upis u EXCEL)

Sintaksa za pristup specijalnim regijama EXCEL dokumenta (regioni, imenovani dijapazoni i sl) potraziti u posebnim uputstvima za ADO.
Prikačeni fajlovi
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi20.10.2008. u 20:24 - pre 188 meseci
Kad smo vec kod ADO i EXCELa, evo jos koda za:
1. Citanje iz Excela (Button1)
2. Enumeracija tabova (Button2)
Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   ADOQuery1->Close();


   ADOQuery1->SQL->Clear();
   ADOQuery1->SQL->Add( "Select * from [Sheet1$]" );


   AnsiString CS = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                   ExtractFilePath( Application->ExeName ) + "Book1.xls" +
                   ";Extended Properties=Excel 8.0";

   ADOQuery1->ConnectionString = CS;

   ADOQuery1->Open();

   Memo1->Lines->Clear();
   for ( int i=0; i<ADOQuery1->RecordCount; i++ )
   {
      AnsiString A = ADOQuery1->Fields->Fields[0]->AsString;
      AnsiString B = ADOQuery1->Fields->Fields[1]->AsString;
      AnsiString C = ADOQuery1->Fields->Fields[2]->AsString;

      Memo1->Lines->Add( A + ", " + B + ", " + C  );
      ADOQuery1->Next();
   }
   ADOQuery1->Close();
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
   AnsiString CS = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                   ExtractFilePath( Application->ExeName ) + "Book1.xls" +
                   ";Extended Properties=Excel 8.0";
   ADOConnection1->ConnectionString = CS;
   ADOConnection1->Open();
   TStringList *SL = NULL;
   SL = new TStringList;
   try
   {
      ADOConnection1->GetTableNames( SL );

      for ( int i=0; i<SL->Count; i++ )
         ShowMessage( SL->Strings[i] );
   }
   catch ( const Exception &e )
   {
      ShowMessage( "Error" );
   }
   ADOConnection1->Close();
   delete SL;
}

Prikačeni fajlovi
 
Odgovor na temu

itf
Zagreb

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



+9 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi20.10.2008. u 21:58 - pre 188 meseci
Hm.. izgleda zanimljivo. A manipulacije fontova, bojanje ćelija i teksta?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi21.10.2008. u 06:51 - pre 188 meseci
Koliko je meni poznato, nije moguc pristup pojedinacnim celijama samog EXCEL dokumenta u smislu menjanja fonta i osobina celija, jer to nije u domenu ADO pristupa. ADO pristup podrazumeva maniplulaciju samim podacima koji se interpretiraju na osnovu ID-ja kolona, Sheetova, trenutnog record-a, i nekih drugih repera Excel dokumenata koje mogu posluziti za pozicioniranje.

Pristup celijama u smislu uredjivanja izgleda samog Excel dokumenta podrazumeva neke druge tehnike tipa OLE ili jos bolje koriscenjem gotovih komponenti.

U novije vreme, izlaz u Excel nude i mnogi Report generatori tako da je to vec postalo deo nekog veceg podsistema.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.237.*



+9 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi21.10.2008. u 08:20 - pre 188 meseci
Zato su meni ipak bolje Borlandove Excel komponente ;) Još kad ih malo pojednostaviš vlastitim funkcijama rad s Excelom postaje igra, a dostupno ti je sve... bilo na nivou aplikacije, dokumenta, sheet-a itd..
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi21.10.2008. u 08:41 - pre 188 meseci
^
Slažem se.

Ovo gore su samo test primeri da se pokaže kako se ADO može upotrebiti za izvoz u Excel ili neki drugi data-storage, a ne samo za rad sa DB sistemima.

Za ozbiljnije zahvate potrebne su kvalitetne komponente.
 
Odgovor na temu

scorpion667

Član broj: 174625
Poruke: 19
80.71.152.*



Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi21.10.2008. u 17:55 - pre 188 meseci
Jos jedno pitanje. Znam da sam dosadan al sta cu kad mi treba.:D
Želio bih da ispod tablica (npr. u Memo1) utipkam i SQL upite koje sam pisao, al sta god probam nikako da upišem. Ima li ikakav textbox ili nešto gdje bi to mogao upisati? I na koji način se radi? Hvala.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi21.10.2008. u 18:24 - pre 188 meseci
TMemo je multiline kontrola.
TEdit je jednolinijska kontrola.

Bez ikakvih problema mozes kopirati sadrzaj bilo cega u bilo sta.

Recimo:

// kopira sadrzaj Memo1 u ADOQuery::SQL upit
ADOQuery1->SQL->AddStrings( Memo1->Lines );

// kopira ADOQuery::SQL upita u Memo1
Memo1->Lines->Assign( ADOQuery1->SQL );

// kopira sadrzaj Edit1 u ADOQuery::SQL upit
ADOQuery1->SQL->Add( Edit1->Text );

// kopira ADOQuery::SQL upit u Edit1
Edit1->Text = ADOQuery1->SQL->Text;

Moze i na mnogo drugih nacina, ovo je samo nesto od toga.

 
Odgovor na temu

scorpion667

Član broj: 174625
Poruke: 19
80.71.152.*



Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi21.10.2008. u 20:57 - pre 188 meseci
ja sam sql upite pisao u ADODataSet

Probao sam DBMemo1->Lines->Assign( ADODataSet14->CommandText ); ali ne radi. Kako da ovo uradim?

I još nešto. Kako da neki button aktiviram nekom kombinacijom tipki, npr. z+1, z+2. Nešto kao hotkey uglavnom.

Evo uploadao sam program. AKo budeš gledao vidit ćeš da je totalno amaterski napravljen (prvi put radim nešto ovako u njemu). Nikako mi nije išlo ovo za excel i printanje pa ako mognes ti ubacit na primjeru jedne male tablice u ovaj program za printanje (javljalo mi nekakve errore) i export u excel - puno bi mi značilo. Samo da vidim kako to ide. U slučaju da budeš gledao morat ćeš preko ADOCOnnection opet se spojit na bazu i sve ADODataSet - ove stavit Active->true.

I jos jedno pitanje. Bi li mi mogao objasniti zašto se koristi switch kada sam koristio tipke 1, 2, 3 za pritiskanje na button? Šta znači ono ( this )? zašto je break; na kraju? i kako da namjestim da mi se pritiskom na neko slovo, npr. "a" aktivira neki button.
Eto ovo je stvarno zadnje pitanje. nece ih vise biti, obecajem.

[Ovu poruku je menjao scorpion667 dana 22.10.2008. u 02:13 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi22.10.2008. u 07:00 - pre 188 meseci
@scorpion667

Uvek otvori novu temu za novo pitanje, koje nije u vezi sa naslovom teme. Ovako, niko koga zanima recimo kako uhvatiti kombinaciju vise tastera nece pogledati bas ovu temu.

Citat:

Probao sam DBMemo1->Lines->Assign( ADODataSet14->CommandText ); ali ne radi. Kako da ovo uradim?

Zašto koristiš DBMemo? Zar nisi mislio TMemo?

Citat:

I još nešto. Kako da neki button aktiviram nekom kombinacijom tipki, npr. z+1, z+2. Nešto kao hotkey uglavnom.

Recimo, testiranje da li su zajedno pritisnuta tri tastera: Q+W+E

--- H ---
Code:

// ...
private:    // User declarations
   bool Key81Pressed;
   bool Key87Pressed;
   bool Key69Pressed;
// ...


--- CPP ---
Code:

// U konstruktoru, resetujes ...
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   Key81Pressed = false;
   Key87Pressed = false;
   Key69Pressed = false;
}

// Ispituje se sta je sve pritisnuto ...
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{

   if ( !Key81Pressed && Key == 'Q' )
      Key81Pressed = true;

   if ( !Key87Pressed && Key == 'W' )
      Key87Pressed = true;

   if ( !Key69Pressed && Key == 'E' )
      Key69Pressed = true;

   if ( Key81Pressed && Key87Pressed && Key69Pressed )
   {
      Key81Pressed = false;
      Key87Pressed = false;
      Key69Pressed = false;
      ShowMessage( "Q W E Pressed" ); // <--- ODRADI STA HOCES !!!
   }
}

// Resetuj ponovo, kada se podigne prst sa tastera ...
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
   if ( Key == 'Q' ) Key81Pressed = false;
   if ( Key == 'W' ) Key87Pressed = false;
   if ( Key == 'E' ) Key69Pressed = false;
}


Za istu stvar, moze se upotrebiti i API GetKeyboardState().

Citat:

I jos jedno pitanje. Bi li mi mogao objasniti zašto se koristi switch kada sam koristio tipke 1, 2, 3 za pritiskanje na button?

Sasvim je svejedno da li ce se koristiti switch ili if. Ovo prvo je samo elegantnije kada ima vise stavki. Sve u vezi toga moras razjasniti iz knjige...

Citat:

Šta znači ono ( this )? zašto je break; na kraju?

Ovo su osnove, to moras takodje pronaci u bilo kojoj knjizi. this je pokazivac na objekat klase kojoj pripada metoda. break sluzi da spreci propadanje izvrsavanja koda ispod pronadjene, tj da se kaskadno ne izvrsi sav kod ispod break.

Citat:

i kako da namjestim da mi se pritiskom na neko slovo, npr. "a" aktivira neki button.

... isto kao i za brojeve, sako sto Key treba da bude 'a' umesto '1'.
 
Odgovor na temu

scorpion667

Član broj: 174625
Poruke: 19
80.71.152.*



Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi23.10.2008. u 23:52 - pre 188 meseci
Hvala X-Filrs. bio si ogromna pomoć. one last question. znači ovako - u mene je stavljeno da se klikom na button otvara nova forma (Form2 npr.) sa tablicom. Ali kad otvorim tu formu nemogu klikati niti išta raditi na ovoj prvoj dok ne zatvorim ovu što sam otvorio. Može li se to ikako riješiti?
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.237.*



+9 Profil

icon Re: C++ Builder - pomoć oko buttona i par naredbi24.10.2008. u 08:54 - pre 188 meseci
Primjerice:

Code:
Form2->ShowModal(); // prikazuje Form2 i ne dopušta rad s matičnim prozorom dok ovaj ne završi
Form2->Show(); // omogućen je paralelni rad i s matičnim prozorom i ovim novo-otvorenim


P.S: Pozdrav s Bug foruma (Tracer) ;)
 
Odgovor na temu

[es] :: C/C++ programiranje :: C++ Builder - pomoć oko buttona i par naredbi

[ Pregleda: 3078 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

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