Directx Δημοσ. 16 Μαρτίου 2012 Δημοσ. 16 Μαρτίου 2012 (επεξεργασμένο) ΟΚ με τα παραπάνω! Τωρα αντιμετωπίζω ενα ΤΕΡΑΣΤΙΟ πρόβλημα! Στην db εχω δυο πίνακες εικόνα 1. Θέλω ενα sql query opoυ να μου εμφανίζει oλα τα αυτοκίνητα απο τον πίνακα car οπου είναι ελεύθερα ας πούμε στις ημερομηνιες που δίνω π.χ απο 3/13/2012 εως 3/19/2012 .... Πως στα κομματια ειναι αυτο το query???Εχω κάψει εγκέφαλο... ** Θεωρώ ότι το πρόβλημα είναι πως να δηλώσεις την ημερομηνία στο TADOQuery ** Ας υποθέσουμε ότι στο TABLE (Employee) της ΒΔ μας έχουμε δυο πεδία, ένα Date/Time ονόματι "FreeDate" και ένα String ονόματι "EmpNo" και επιθυμούμε να λάβουμε όλα τα EmpNo για το διάστημα 13/03/2012 ως 19/03/2012. Σύμφωνα με την τεκμηρίωση του TADOQuery αυτό μπορεί να γίνει με την βοήθεια των TADOQuery->Parameters ως εξής: > try { ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add((AnsiString) "SELECT * FROM Employee WHERE FreeDate>=:FreeDateStart AND FreeDate<=:FreeDateEnd" ); ADOQuery1->Parameters->ParamValues["FreeDateStart"] = EncodeDate(2012, 3, 13); ADOQuery1->Parameters->ParamValues["FreeDateEnd"] = EncodeDate(2012, 3, 19); ADOQuery1->Open(); ShowMessage(ADOQuery1->RecordCount != -1 ? ADOQuery1->RecordCount ? "RECORD(S) FOUND": "RECORD(S) NOT FOUND" : "ADO ERROR"); while(!ADOQuery1->Eof) { ShowMessage(ADOQuery1->FieldByName("EmpNo")->AsString); ADOQuery1->Next(); } } __finally { ADOQuery1->Close(); } Προσοχή: * Οι ονομασίες των παραμέτρων του TADOQuery->Parameters πρέπει να δηλωθούν στο TADOQuery->SQL->Add, πάντα με ένα ':' μπροστά τους (πχ. :FreeDateStart) και όχι κατευθείαν (FreeDateStart). * Η EncodeDate(year, month, day) επιστρέφει ένα TDateTime. * Για τον περιορισμό των ημερομηνιών μεταξύ του επιθυμητού διαστήματος χρησιμοποιώ την SQL WHERE. * Μελέτησε οπωσδήποτε την τεκμηρίωση επί του θέματος. Επεξ/σία 16 Μαρτίου 2012 από Directx
xarda Δημοσ. 16 Μαρτίου 2012 Μέλος Δημοσ. 16 Μαρτίου 2012 Το προβλημα βρισκεται στο sql query... Για τις ημερομηνιες και την ωρα χρησιμοποιώ ΤDateTimePicker χωρίς κανένα πρόβλημα. Δεν ξέρω πως θα πρεπει να συντάξω το sql query... Δοκίμασα αυτο: > SELECT RB.ID_RB FROM RB,CAR WHERE ( CAR.ID_CAR = RB.ID_CAR ) AND ((('"+ΝΕΑ_ΗΜΕΡΟΜΗΝΙΑ_ΕΝΟΙΚΙΑΣΗΣ+"' < PICKUP_DATETIME ) AND ('"+ΝΕΑ_ΗΜΕΡΟΜΗΝΙΑ_ΠΑΡΑΔΟΣΗΣ+"' < PICKUP_DATETIME ) ) OR (('"+ΝΕΑ_ΗΜΕΡΟΜΗΝΙΑ_ΕΝΟΙΚΙΑΣΗΣ+"' > RETURN_DATETIME ) AND ('"+ΝΕΑ_ΗΜΕΡΟΜΗΝΙΑ_ΠΑΡΑΔΟΣΗΣ+"' > RETURN_DATETIME ) ) ) ) αλλά εκτελειται σωστα αν και μονο αν υπάρχει μια και μοναδικη εγγραφη στον πίνακα RB.Αν υπάρχει περισσοτερη απο μια τοτε μου τις εμφανιζει ολες... Ο ορισμος του προβληματος είναι: Εμφανισε ολα τα CAR.ID_CAR απο τον πίνακα CAR οπου δεν θα ειναι "ενοικιασμενα".( οι ενοικιασεις βρισκονται στον πινακα RB )
Directx Δημοσ. 17 Μαρτίου 2012 Δημοσ. 17 Μαρτίου 2012 Το προβλημα βρισκεται στο sql query... Για τις ημερομηνιες και την ωρα χρησιμοποιώ ΤDateTimePicker χωρίς κανένα πρόβλημα. Δεν ξέρω πως θα πρεπει να συντάξω το sql query... Δοκίμασα αυτο: > SELECT RB.ID_RB FROM RB,CAR WHERE ( CAR.ID_CAR = RB.ID_CAR ) AND ((('"+ΝΕΑ_ΗΜΕΡΟΜΗΝΙΑ_ΕΝΟΙΚΙΑΣΗΣ+"' < PICKUP_DATETIME ) AND ('"+ΝΕΑ_ΗΜΕΡΟΜΗΝΙΑ_ΠΑΡΑΔΟΣΗΣ+"' < PICKUP_DATETIME ) ) OR (('"+ΝΕΑ_ΗΜΕΡΟΜΗΝΙΑ_ΕΝΟΙΚΙΑΣΗΣ+"' > RETURN_DATETIME ) AND ('"+ΝΕΑ_ΗΜΕΡΟΜΗΝΙΑ_ΠΑΡΑΔΟΣΗΣ+"' > RETURN_DATETIME ) ) ) ) αλλά εκτελειται σωστα αν και μονο αν υπάρχει μια και μοναδικη εγγραφη στον πίνακα RB.Αν υπάρχει περισσοτερη απο μια τοτε μου τις εμφανιζει ολες... Ο ορισμος του προβληματος είναι: Εμφανισε ολα τα CAR.ID_CAR απο τον πίνακα CAR οπου δεν θα ειναι "ενοικιασμενα".( οι ενοικιασεις βρισκονται στον πινακα RB ) Ρίξε μια ματιά εδώ.
xarda Δημοσ. 20 Μαρτίου 2012 Μέλος Δημοσ. 20 Μαρτίου 2012 Τελικά το κατάφερα και αυτο με την χρήση της IN και NOT IN!!! Εχω ενα θεματακι με την εμφάνιση στο dbgrid... Θέλω να "τεντώνουν" τα πεδία στο μέγεθος του dbgrid οπως θα δεις και στην παρακατω εικόνα... Αν για παραδειγμα εχω 4 πεδία εχω δοκιμάσει να κάνω this->DBGrid1->Fields->Items->Width = this->DBGrid1->Width / 4; αλλά δεν "έπιασε"...
Directx Δημοσ. 20 Μαρτίου 2012 Δημοσ. 20 Μαρτίου 2012 Τελικά το κατάφερα και αυτο με την χρήση της IN και NOT IN!!! Εχω ενα θεματακι με την εμφάνιση στο dbgrid... Θέλω να "τεντώνουν" τα πεδία στο μέγεθος του dbgrid οπως θα δεις και στην παρακατω εικόνα... Αν για παραδειγμα εχω 4 πεδία εχω δοκιμάσει να κάνω this->DBGrid1->Fields->Items->Width = this->DBGrid1->Width / 4; αλλά δεν "έπιασε"... Σου προτείνω να ορίσεις τις διαστάσεις μέσο του IDE αντί να καταφύγεις σε δυναμική προσαρμογή κατά την εκτέλεση του προγράμματος (είναι η τυπική λύση που ακολουθούν σχεδόν στο σύνολο τους όσοι χρησιμοποιούν το TDBGrid ). Από εκεί και πέρα, το TDBGrid δεν το χρησιμοποιώ (ούτε το συμπαθώ) οπότε ότι σου γράφω μπορεί να γίνεται και με διαφορετικό, ενδεχομένως περισσότερο εύκολο τρόπο. Με αυτό υπόψη.. Θα μπορούσες, κατά την εμφάνιση της φόρμας σου, να αθροίσεις το πλάτος όλων των TColumn που περιέχει το TDBGrid εκτός του τελευταίου. Ύστερα βρίσκεις την διαφορά πλάτους μεταξύ του αθροίσματος των παραπάνω TColumn σε σχέση με το εσωτερικό μέγεθος του TDBGrid και την αποδίδεις ως πλάτος του τελευταίου TColumn. Προσοχή επίσης χρειάζεται στο ότι θα πρέπει να λάβεις υπόψη σου το πλάτος της κάθετης μπάρας κύλισης (Vertical Scroll Bar) αν υπάρχει, καθώς καταλαμβάνει χώρο από το εσωτερικό μέγεθος του TDBGrid. Το ίδιο πρέπει να γίνει και όσον αφορά το πλάτος της ένδειξης τρέχοντος επιλεγμένου Row ([>]), του οποίου το πλάτος το ορίζω στα 5px (btw. Δες αν υπάρχει κάποιο Property που να επιστρέφει τις πραγματικές του διαστάσεις). Εννοείται ότι θα πρέπει να προσέξεις και την περίπτωση το μέγεθος του TDBGrid να γίνει μικρότερο του TColumn (αν πχ ο χρήστης κάνει ελεύθερα Resize την φόρμα), με όλα αυτά παίρνεις τον παρακάτω κώδικα: > int LastColWidth = 0; // Sum every (but last) Column width.. for(int ColIdx = 0; ColIdx < DBGrid1->Columns->Count - 1; ColIdx++) LastColWidth += DBGrid1->Columns->Items[ColIdx]->Width; // Calculate last Column width using TDBGrid Width (+5 => [>] size) if((LastColWidth = (DBGrid1->ClientWidth - LastColWidth) + 5) < 0) LastColWidth = 1; // TDBGrid width less than LastColWidth (!) else // If Vertical Scroll bar visible, subtract it's width from LastColWidth.. if(GetWindowLongPtr(DBGrid1->Handle, GWL_STYLE) & WS_VSCROLL) LastColWidth -= GetSystemMetrics(SM_CXVSCROLL); // Set last Column width.. DBGrid1->Columns->Items[DBGrid1->Columns->Count - 1]->Width = LastColWidth; Ο οποίος είναι ενδεικτικός για να πάρεις μια ιδέα και οπωσδήποτε δεν λαμβάνει υπόψη του όλες τις πιθανές περιπτώσεις στησίματος του TDBGrid κοντρόλ! Η είσοδος (από το IDE) είναι: Η έξοδος που θα λάβεις κατά την εκτέλεση είναι η: Καλή συνέχεια!!
xarda Δημοσ. 23 Μαρτίου 2012 Μέλος Δημοσ. 23 Μαρτίου 2012 Οκ και αυτο το θεματακι... Τωρα στο πιο βασικο κομματι του μεγάαααααλου αυτου εργου! Παλαιοτερα ειχα ασχοληθεί λίγο με την εκτύπωση των δεδομένων απο το Dbgrid εβλεπα κατι """tutorials""" για το rave reports στο Youtube κ.τ.λ αλλα απ'οτι θυμαμαι δεν ειχα βγαλει ακρη.Μήπως υπάρχει κάποιος πλήρης οδηγός γσχετικά με το ποια components πρεπει να χρησιμοποιηθουν για την απλή εκτύπωση των περιεχομένων ενος Dbgrid ;;Εχεις να προτείνεις κάτι διαφορετικό απο το rave reports ; Και κάτι ακομα επειδη βλεπω πως γνωρίζεις αρκετα και με εντυπωσιαζεις Directx!!! Πως τα γνωρίζεις ολα αυτα ; Θελω να πω δλδ ποια βιβλία εχεις διαβάσει και γενικότερα ποια η μεθοδολογία του "διαβασματος" σου;Ρωτάω συγκεκριμένα για τον embarcadero και οχι γενικά για τον προγραμματισμο.Η απάντηση σου με ενδιαφέρει αρκετά ωστε να καταλάβω την λογική που πρέπει να ακολουθηθει για την κατασκευη ενος προγραμματος...
Directx Δημοσ. 23 Μαρτίου 2012 Δημοσ. 23 Μαρτίου 2012 Οκ και αυτο το θεματακι... Τωρα στο πιο βασικο κομματι του μεγάαααααλου αυτου εργου! Παλαιοτερα ειχα ασχοληθεί λίγο με την εκτύπωση των δεδομένων απο το Dbgrid εβλεπα κατι """tutorials""" για το rave reports στο Youtube κ.τ.λ αλλα απ'οτι θυμαμαι δεν ειχα βγαλει ακρη.Μήπως υπάρχει κάποιος πλήρης οδηγός γσχετικά με το ποια components πρεπει να χρησιμοποιηθουν για την απλή εκτύπωση των περιεχομένων ενος Dbgrid ;;Εχεις να προτείνεις κάτι διαφορετικό απο το rave reports ; Δυστυχώς όσον αφορά το Rave Reports δεν μπορώ να πω πολλά πράματα διότι δεν το χρησιμοποιώ, όπως δεν χρησιμοποιώ πια τους νεότερους C++ Builder για ΒΔ λογισμικό. Έχω μείνει στην εποχή των QReports που παρείχε ο πάλαι ποτέ δημοφιλής C++ Builder 6 (και πίσω) και τα οποία σήμερα αντικαταστάθηκαν από τα (δύσχρηστα κατ' εμέ) Rave Reports. Τώρα γενικά (για την ιστορία δηλαδή), προτιμώ τα MS Reports που προσφέρει το .NET . Και κάτι ακομα επειδη βλεπω πως γνωρίζεις αρκετα και με εντυπωσιαζεις Directx!!!Πως τα γνωρίζεις ολα αυτα ; Θελω να πω δλδ ποια βιβλία εχεις διαβάσει και γενικότερα ποια η μεθοδολογία του "διαβασματος" σου;Ρωτάω συγκεκριμένα για τον embarcadero και οχι γενικά για τον προγραμματισμο.Η απάντηση σου με ενδιαφέρει αρκετά ωστε να καταλάβω την λογική που πρέπει να ακολουθηθει για την κατασκευη ενος προγραμματος... Την γνώση την απέκτησα μέσα από την σταθερή ενασχόληση με τον C++ Builder για πολλά χρόνια. Βιβλιά για αυτόν δεν μπορώ να σου προτείνω εκτός ίσως από ένα μικρό βιβλιαράκι (booklet) που έδιναν σε παλαιότερα πακέτα. Από εκεί και πέρα μεγάλη βοήθεια βρήκα από την καταπληκτική τεκμηρίωση του εργαλείου σε μορφή HLP (η τωρινή τεκμηρίωση ωχριά μπροστά στην παλιά σε μορφή HLP !!), επίσης από το Δίκτυο (μέσο Delphi -συνήθως είναι εύκολο να μεταφέρεις τις λύσεις για Delphi σε C++ Builder) και ως έναν βαθμό από την πρότερη εμπειρία που κατείχα σε προγενέστερα εργαλεία της Borland (πχ. Turbo C++ for Windows 3.1, μετά για W95 κοκ) με βιβλία που σήμερα θεωρούνται ξεπερασμένα (ποιος γράφει πρόγραμμα με την βιβλιοθήκη της Borland, OWL; ) Γενική συμβουλή πάντως, αν θες να μάθεις (σταδιακά) μια πλατφόρμα, θέσε στόχο να φτιάξεις ένα πρόγραμμα για αυτήν και .. ξεκίνησε. Εγώ έτσι κάνω πάντα (για εμένα αποδίδει).
xarda Δημοσ. 30 Μαρτίου 2012 Μέλος Δημοσ. 30 Μαρτίου 2012 Οκ κατάλαβα! Μηπως γνωρίζεις με ποιο component η συνδιασμο components μπορω να φτιάξω κάτι σαν αυτο που παραθέτω στην εικόνα πιο κάτω; Δηλαδη ενα ημερολογιο ας πουμε που να εμφανιζει ποτε ειναι "κλειστο" η ελευθερο π.χ ενα αυτοκινητο.
Directx Δημοσ. 30 Μαρτίου 2012 Δημοσ. 30 Μαρτίου 2012 Οκ κατάλαβα! Μηπως γνωρίζεις με ποιο component η συνδιασμο components μπορω να φτιάξω κάτι σαν αυτο που παραθέτω στην εικόνα πιο κάτω; Δηλαδη ενα ημερολογιο ας πουμε που να εμφανιζει ποτε ειναι "κλειστο" η ελευθερο π.χ ενα αυτοκινητο. Εκ πρώτης όψεως θεωρώ πως κάτι ανάλογο μπορεί να κατασκευαστεί (από το μηδέν) με την βοήθεια των TStringGrid ή TDrawGrid components (& THeader για τις επικεφαλίδες) και φυσικά αρκετού κώδικα που θα αναλάβει την σχεδίαση των περιεχομένων τους (βλ. OnDrawCell) κατά το δοκούν, πράγμα που προϋποθέτει εμπειρία για να επιτευχθεί. Υ.Γ. Εδώ πριν μερικά χρόνια είχα αναρτήσει ένα παράδειγμα τροποποίησης του OnDrawCell ώστε να σχεδιάζει τις επικεφαλίδες ενός TStringGrid κεντραρισμένες. Ίσως σε βοηθήσει να πάρεις μια ιδέα του πως δουλεύει το OnDrawCell.
xarda Δημοσ. 31 Μαρτίου 2012 Μέλος Δημοσ. 31 Μαρτίου 2012 Απ'οτι μου ειπες Directx αλλα και απ'οσα googlara θα μου παρει αρκετο καιρο ωστε να καταφερω να χτίσω κατι τετοιο και απο την στιγμη που δεν το χρειαζομαι προς το παρον καλυτερα να το αφήσω.Κανοντας ενα Copy paste τον κώδικα απο αυτο το Link στο pc σου μπορεις να μου πεις αν τρεχει διχως προβλημα;Δυστηχως στο δικο μου για να εμφανιστει η εικονα που επιλέγω θα πρεπει να κανω Minimize το window και μετα οταν ξανα-ανοιγω το window μου εμφανιζει την εικόνα....
Directx Δημοσ. 31 Μαρτίου 2012 Δημοσ. 31 Μαρτίου 2012 Απ'οτι μου ειπες Directx αλλα και απ'οσα googlara θα μου παρει αρκετο καιρο ωστε να καταφερω να χτίσω κατι τετοιο και απο την στιγμη που δεν το χρειαζομαι προς το παρον καλυτερα να το αφήσω.Κανοντας ενα Copy paste τον κώδικα απο αυτο το Link στο pc σου μπορεις να μου πεις αν τρεχει διχως προβλημα;Δυστηχως στο δικο μου για να εμφανιστει η εικονα που επιλέγω θα πρεπει να κανω Minimize το window και μετα οταν ξανα-ανοιγω το window μου εμφανιζει την εικόνα.... Ο κώδικας στον Η/Υ μου λειτουργεί κανονικά, δηλαδή παρουσιάζει κατευθείαν την φορτωμένη εικόνα (όπως είναι αναμενόμενο), αυτά σε Windows XP (SP3). Πιθανόν να έχεις πέσει θύμα κάποιου bug, δοκίμασε μετά το Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); να δώσεις ένα "Image1->Invalidate();" ή ένα "Image1->Refresh();" μήπως βοηθήσει (καθώς δεν μπορώ να αναπαράγω το πρόβλημα στον Η/Υ δεν μπορώ να γίνω πιο συγκεκριμένος).
xarda Δημοσ. 31 Μαρτίου 2012 Μέλος Δημοσ. 31 Μαρτίου 2012 Δυστηχως το δοκίμασα και σε XP SP3 το ιδιο εννοειται .exe αρχείο και πάλι πρεπει να κανω minimize το window για να εμφανιστει η εικόνα....Υποψιάζεσαι τι μπορεί να φταίει ωστε να το δω στο pc μου; Το τραγελαφικο που συμβαίνει...! Βάζω brake με τον debugger τρεχω το πρόγραμμα και οταν φτανει στο brake και επιλέγω run για να συνεχίσει μου την εμφανίζει κανονικά!Οταν βγαλω το Brake πρεπει παλι να κάνω Minimize το window....
Directx Δημοσ. 31 Μαρτίου 2012 Δημοσ. 31 Μαρτίου 2012 Δυστηχως το δοκίμασα και σε XP SP3 το ιδιο εννοειται .exe αρχείο και πάλι πρεπει να κανω minimize το window για να εμφανιστει η εικόνα....Υποψιάζεσαι τι μπορεί να φταίει ωστε να το δω στο pc μου; Βγάλε το Image1->Canvas->Refresh();.. Στο Link που μου έδωσες η εντολή αυτή είναι στον constructor της φόρμας και όχι εκεί που το έβαλες, πρόσεξε: > __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Image1->Canvas->Refresh(); } (ο σκοπός του είναι να βάφει με default χρώμα το TImage όταν είναι κενό, διαφορετικά σχεδιάζει εκ νέου το περιεχόμενο του -δεν έχει νόημα να καλείται εκτός και αν θες κάτι τέτοιο οπωσδήποτε) Ο αρχικός κώδικας της Embarcadero είναι: > void __fastcall TForm1::Button1Click(TObject *Sender) { // Execute an open picture dialog. if (OpenPictureDialog1->Execute()) // First check if the file exists. if (FileExists(OpenPictureDialog1->FileName)) { // If it exists, load the data into the image component. Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); } else // Otherwise, raise an exception. throw(Exception("File does not exist.")); } Για δοκίμασε το έτσι και πες μου..
xarda Δημοσ. 31 Μαρτίου 2012 Μέλος Δημοσ. 31 Μαρτίου 2012 ειτε δώσω στον constructor το Image1->Canvas->Refresh(); και στον onclick του Button δωσω : > void __fastcall TmainForm::BitBtn1Click(TObject *Sender) { // Execute an open picture dialog. if (OpenPictureDialog1->Execute()){ // First check if the file exists. if (FileExists(OpenPictureDialog1->FileName)) { // If it exists, load the data into the image component. Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); } else{ // Otherwise, raise an exception. throw(Exception("File does not exist.")); } } } ειτε δώσω: > void __fastcall TmainForm::BitBtn1Click(TObject *Sender) { Image1->Canvas->Refresh(); // Execute an open picture dialog. if (OpenPictureDialog1->Execute()){ // First check if the file exists. if (FileExists(OpenPictureDialog1->FileName)) { // If it exists, load the data into the image component. Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); } else{ // Otherwise, raise an exception. throw(Exception("File does not exist.")); } } else{ //do nothing } } το ίδιο πραγμα συμβαινει.Παλι πρεπει να το κανω minimize.
Directx Δημοσ. 31 Μαρτίου 2012 Δημοσ. 31 Μαρτίου 2012 ειτε δώσω στον constructor το Image1->Canvas->Refresh(); και στον onclick του Button δωσω : > void __fastcall TmainForm::BitBtn1Click(TObject *Sender) { // Execute an open picture dialog. if (OpenPictureDialog1->Execute()){ // First check if the file exists. if (FileExists(OpenPictureDialog1->FileName)) { // If it exists, load the data into the image component. Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); } else{ // Otherwise, raise an exception. throw(Exception("File does not exist.")); } } } ειτε δώσω: > void __fastcall TmainForm::BitBtn1Click(TObject *Sender) { Image1->Canvas->Refresh(); // Execute an open picture dialog. if (OpenPictureDialog1->Execute()){ // First check if the file exists. if (FileExists(OpenPictureDialog1->FileName)) { // If it exists, load the data into the image component. Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); } else{ // Otherwise, raise an exception. throw(Exception("File does not exist.")); } } else{ //do nothing } } το ίδιο πραγμα συμβαινει.Παλι πρεπει να το κανω minimize. Τότε.. για δοκίμασε και αυτό και πες μου: > Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); Image1->Refresh(); Refresh(); (ναι κάνω δυο refresh -και έχω λόγο..)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα