Προς το περιεχόμενο

Onclick Event(), On creating Images Componnets


Leite33

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα

Δουλεύω στη BCB6 και έχω μια καλη απορία.. Έχω φτιάξει μερικά Image Components τα οποία δημιουργούνται κατά την εκτέλεση του προγραμματός και δεν υπάρχουν απο πριν έτοιμα..

Ο κώδικας μου είναι πολύ απλός:

 

TImage *Image[10];

for (i=0;i<10;i++)

{

Image=new TImage(Form1);

Image->Parent=Form1;

}

 

Η απορία μου είναι αν μορώ να δημιουργήσω OnClick() event για τα συγκεκριμένα components!! Για πααραδειγμα να κάνεις click σε αυτά και να εμφανίζεται άλλη φόρμα..!! Είναι δυνατόν κάτι τετοιο; Καμία καλή ιδέα;

Ευχαριστώ

Δημοσ.

Φαίνεται ότι ελάχιστοι ασχολούνται με τον C++ Builder..

 

Είναι δυνατόν αρκεί να δηλώσεις ένα δικό σου OnClick event handler για κάθε νέο TImage control.

 

Συνεπώς πάμε στο μενού View->ClassExplorer του C++ Builder και από εκεί επιλέγουμε την φόρμα που θέλουμε να προσθέσουμε το δικό μας OnClick event, κάνουμε δεξί κλικ και New Method. Στο παράθυρο «Add Method» ορίζουμε το «Method Name» ως «MyImageClick», το «Arguments» ως «TObject* Sender» και το «Function Result» ως «void __fastcall», ενώ ελέγχουμε πως το “Method Type” είναι Function και το «Visibility» Public. Ύστερα πατάμε το OK.

 

Τώρα για να συνδέσουμε το OnClick των TImage μας με το MyImageClick event handler που έχουμε δημιουργήσει προσθέτουμε την εντολή «Image->OnClick=MyImageClick;» στον κώδικα του for μας:

 

>
  TImage *Image[10];
  int    i;

  for (i=0;i<10;i++)
   {
     Image[i]=new TImage(Form1);
     Image[i]->Parent=Form1;
     Image[i]->OnClick=MyImageClick;
   }

 

Τέλος για να ξεχωρίσουμε σε ποιο TImage control έχει κάνει κλικ ο χειριστής μπορούμε να χρησιμοποιήσουμε τον TObject *Sender pointer του MyImageClick event handler μας ως εξής:

 

>
void __fastcall TForm1::MyImageClick(TObject * Sender)
{
  //TODO: Add your source code here
  TImage   *ptrControl = (TImage*)Sender;
}

 

Τώρα το ptrControl περιέχει έναν pointer προς το TImage control που κάλεσε το MyImageClick event handler (κάνουμε cast το TObject* σε TImage*).

 

Υ.Γ.

Οι παραπάνω οδηγίες απαιτούν C++ Builder 6 καθώς η δήλωση του Event Handler γίνεται διαφορετικά (με το χέρι) σε περιβάλλον Turbo C++ Express & Pro.

Δημοσ.

Ωραιος Directx, και εγώ κάτι παρόμοιο πάλευα να κάνω αλλά οχι από κονσόλα από μόνος μου γιαυτο δεν μου ετρεχε... Ευχαριστω και πάλι

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...