[ maximus_1 @ 27.09.2005. 14:26 ] @
Prije par dana sam prešao sa Delphija na Borland C++. Moram priznati da mi se C++ sintaksa više svidjela utoliko što se koriste zagrade { i } umjesto Then Begin naredbi što omogućava pregledniji kod. Već na prvi pogled uvidio sam da prijelaz neće biti težak je je sve veoma slično, tako da sam počeo odmah prepisivati programe iz Delphija u C++.

No sad imam jedan problem. U programu kojeg radim par dana nikako ne mogu pozvati drugu formu (Forma o programu). Koristim sljedeći kod:

Code:

frmAbout->ShowModal();


Prethodno sam u dodao #include "About.h" i sve se lijepo kompajlira i radi sve dok ne probam pozvati frmAbout. Kada klikne ne dogodi se ništa!
Ako napravim novi projekt i uradim sve isto, program savršeno funkcionira! Nikako mi nije jasno zašto se to događa?
[ X Files @ 27.09.2005. 15:10 ] @
Na osnovu koda koji si pokazao, ne moze se zakljuciti u cemu je problem, jer si
sve lepo uradio - tim vise sto komplajler ne prijavljuje gresku.

Mislim da ti je na neki nacin ostecen Project1.bpr ili Project1.cpp fajl! Fajl Unit1.cpp
verujem da je u redu, jer bi i sam primetio problem.
[ maximus_1 @ 27.09.2005. 17:51 ] @
Main.obj je bio oštećen pa nije radilo. Sada su mi proradile i neke druge opcije.

Još jedan problem:

Kako koristiti KeyPres?

Ja sam koristio:
Code:

         if(Key == VK_LEFT)
         {
                    ...
         }


ali mi ništa ne uradi iako uredno kompajlira
[ X Files @ 27.09.2005. 19:59 ] @
Ukljuci:

KeyPreview = true

i Object Inspectoru forme za koju zelis taj dogadjaj, ili direktno u konstruktoru
dodaj taj kod.

Drugm recima, TForm (Form1) ima property KeyPreview, koga treba da postavis
na true.
[ maximus_1 @ 27.09.2005. 23:00 ] @
Nece pa nece! Ne radi bez obzira na keypreview.

Evo koda:
Code:

void __fastcall TfrmMain::FormKeyPress(TObject *Sender, char &Key)
{
        if(Key == 13)
        {
                Application->MessageBoxA("q", "ee", MB_OK);
        }
}


Kompajlira ali ne reagira. Čak sam stavio i !=13 ali neće...
[ _VampiR_ @ 28.09.2005. 08:16 ] @
Ne mozes pisati
Code:
 if(Key == 13)
        {
                Application->MessageBoxA("q", "ee", MB_OK);
        }


probaj sa npr. if( Key == 0x0F ) i onda bi trebalo raditi. Barem u svim mojim programima radi (odnosno, hexadecimalna vrijednost za tipku koja ti treba sa tastature).
[ MilošV @ 28.09.2005. 08:42 ] @
Citat:
maximus_1
Code:
 if(Key == 13)
        ....


13 je "VK_RETURN" tj. taster Enter.

VK_LEFT ti nece ni raditi na OnKeyPress ali na OnKeyDown tj. OnKeyUp hoce (OnKeyPress se izvrsava kad pritisnes i pustis taster, OnKeyDown/Up cim pritisnes/pustis).
Slobodno pisi if(Key==VK_LEFT), ali u KeyDown/Up event-ima.
[ Toxter @ 28.09.2005. 14:23 ] @
Citat:
Miloš Vukotić:...Slobodno pisi if(Key==VK_LEFT), ali u KeyDown/Up event-ima.


Da. Koristi OnKeyUp (ili OnKeyDown) dogadjaje. To provereno radi.
[ maximus_1 @ 28.09.2005. 19:10 ] @
Ma znao sam ja to još iz Delphija samo što nije palilo.

KeyPreView ne treba!

Problem je bio opet u C++u vjerojatno se opet nešto poremetilo. Napravio sam novi projekt iskopirao kod i sve savršeno radi. Od sada ću češće praviti BackUp koda.

Ipak, Hvala na odgovorima.
[ X Files @ 28.09.2005. 19:25 ] @
Code:

KeyPreView ne treba!


Kad na formi budes imao vise komponenti, koje i same mogu imati fokus, pa ti
tastaturne precice iznenada ne budu radile - seti se se KeyPreview-a ;) ...

[ maximus_1 @ 29.09.2005. 12:52 ] @
Citat:
X Files:
Code:

KeyPreView ne treba!


Kad na formi budes imao vise komponenti, koje i same mogu imati fokus, pa ti
tastaturne precice iznenada ne budu radile - seti se se KeyPreview-a ;) ...


Dobro, zapamtit cu to.
[ X Files @ 29.09.2005. 14:33 ] @
Citat:

Dobro, zapamtit cu to.


Mozes i odmah da probas sam. Stavi na primer TMemo ili TRichEdit ili TEdit ili
cak TPageControl na glavnu formu.

Neka od tih kontrola ce imati fokus za pocetak (TabOrder). Tada tvoj
OnKeyDown/OnKeyPress za GLAVNU FORMU nece raditi, jer i doticne kontrole
imaju svoje OnKeyDown/OnKeyPress.

Tada je KeyPrevew OBAVEZAN!!!