Οκτώβριος 2008 - Posts

Επιτέλους μετά απο σχεδόν δύο μήνες τελείωσα την πρώτη σοβαρή μου εφαρμογή :).Η ιδέα ήταν του Δημήτρη - Ηλία Γκανάτσιου (τον οποίο ευχαριστώ πολύ φυσικά :P :D).Μόλις μου το πρότεινε, έψαξα τα υπόλοιπα προγράμματα που κυκλοφορούσαν και προς μεγάλη μου έκπληξη είδα πως είχαν "στατικά" δεδομένα, με την έννοια οτι δεν μπορούσες να επεξεργαστείς τα μαθήματα, δηλαδή να κάνεις αλλαγές στα εξάμηνα, το όνομα κλπ.Επίσης δεν βρήκα και επιλογή για να προσθέτεις ελεύθερα μαθήματα!(Στο τμήμα μας επιτρέπεται να δηλωσεις μέχρι 3 μαθήματα απο άλλες σχολές και να τα πάρεις σαν επιλογής).Φυσικά όντως μπορεί να υπάρχει πρόγραμμα που να τα κάνει απλά εγώ δεν το βρήκα :).

Άς δούμε την εφαρμογή λίγο πιο αναλυτικά:

Την πρώτη φορά που θα την τρέξετε, θα σας βγεί ένα παράθυρο που θα ζητάει το ον/μο σας:

Capture

Μόλις τα συμπληρώσετε θα ανοίξει η κυρίως φόρμα:

Capture

Μόλις πατήσετε πάνω σε κάποιο απο τα εξάμηνα θα σας βγεί ένα ListBox με τα μαθήματα του εξαμήνου:

Capture

 

Για να δηλώσετε βαθμό σε κάποιο μάθημα, απλά πατήστε πάνω του και μετά πηγαίνετε στο TextBox δίπλα στο Label "Βαθμός" και πληκτρολογείτε τοιν βαθμό και μετά αποθήκευση.

Στο προφίλ σας, μπορείτε να δείτε τον τρέχων μέσο όρο σας, τον μέγιστο καθως και τον ελάχιστο μέσο όρο που μπορείτε να βγάλετε, πόσα μαθήματα κορμού, κατεύθυνσης κλπ έχετε περάσει καθώς και τους βαθμούς σας:

Capture

Μπορείτε να δηλώσετε Ελεύθερο μάθημα πατώντας στο Button "Δήλωση ελεύθερου μαθήματος".Θα σας εμφανηστέι η εξής φόρμα:

Capture

Απλά γράφεται το όνομα του μαθήματος και απο ποιό τμήμα είναι, πατάτε Αποθήκευση και όταν πάτε στο item "Ελεύθερα Μαθήματα" στο ListBox με τα εξάμηνα θα σας περιμένει εκει :P

Τώρα στο ζουμί :P Να σας δείξω πωςμπορείτε να επεξεργαστείτε την λίστα μαθημάτων (το οποίο είναι ένα XML αρχείο, δλδ XML serialization έκανα όπως δείχνω και στο πρώτο post του blog ;)) .Πατήστε "Επεξεργασία λίστας μαθημάτων" στην κύρια φόρμα και θα σας βγεί αυτό το παράθυρο:

 

Capture

Προσπάθησα να κάνω έτσι την διαδικασία ωστε κατα κάποιο τρόπο να σας καθοδηγεί η φόρμα.Δηλαδή, αν προσέξετε, σας αφήνει μόνο το ComboBox που λεει Εύρεση κατά, ωστε σαν πρώτο βήμα να διαλέξετε ποιό μάθημα θέλετε να επεξεργαστείτε, αργοτερα, μόλις επιλέξετε, θα "ξεθολώσει" το ComboBox που λέει "Επεξεργασία" βωστε να επιλέξετε τι θέλετε να επεξεργαστείτε στο μάθημα που επιλέξατε και αφου επιλέξετε θα "Ξεθολώσει" και το ανάλογο item που θα χρειαστείτε :)

Capture

Μπορείτε επίσης να προσθέσετε κάποιο μάθημα που πιθανον να προστεθεί αργότερα στον οδηγό σπουδών, ή που κάποιου παλιότεροι είχατε και βγήκε απο τον οδηγό.

Τέλος, πατώντας στο κουμπί "Υπολογισμός του μέσου όρου μου" θα σας βγεί μία φόρμα που αν δεν τηρείτε τις κατάλληλες προυποθέσεις θα σας "πεί" ποιες και αν τις τηρείτε απλά θα σας πεί τον μέσο όρο σας :) .Επίσης εκέι μπορείτε να δείτε ποιά κατεύηνση έχετε κατοχυρώσει:

 

Capture

Λοιπόν ένα θέμα που με απασχόλησε πολύ.Στο feedback που πήρα απο τα παιδιά που το έστειλα κατάλαβα πως δεν έχει όλος ο κόσμος το 3.5 Framework  εγκατεστειμένο.Οπότε μετά απο την επέμβαση του μέντορα-guru-απομηχανής θεό (:P) γκανάτσιο, διάβασα ένα blog που έλεγε για το (.NET client profile), δηλαδή πως με το service pack 1 για το visual studio είχες την δυνατότητα να βάλεις μία επιλογή στο setup project ώστε να εγκαθηστά αυτόματα τις βιβλιοθήκες που χρειάζεται η εφαρμογη ώστε να τρέχει.Στις επόμενες εκδόσεις που θα ανεβάσω, θέλω να μπορεί ο χρήστης να πατάει πάνω στο μάθημα δεξί κλίκ και να του βγαίνει ένα μενού, ώστε να επιλέγει έτσι τον βαθμό οτυ (γτ κάποιος απο τους feedbackers μου βαριέται :P ;)) καθώς και να "επικοινωνεί" με το facebook, και να μπορείς να στείλεις μύνημα στους φίλους σου, η να γράψεις στο wall τους και να τους "πειραξεις" αν έχεις παραπάνω τρέχον μέσο όρο η τελικό.Τέλος έχω κατα νού να μπορείς να εκτυπώσεις το προφίλ σου...

Θέλω να ευχαριστήσω ΘΕΡΜΟΤΑΤΑ τα εξής άτομα, τα οποία μου έδωσαν απίστευτο feedback με αποτέλεσμα να βγεί πολύ καλύτερη δουλειά σε σχέση με αυτο που είχα σχεδιάσει στην αρχή :

Γιώργος Κολοβέντζος
Γεωργία Δούκα,
Δημήτρης Μπάκας,
Δημήτρης Ραβιόλος,
Δημήτρης Ράπτης,
Μανόλης Πλατάκης,
Μίλτος Κανδίας,
Νόντας Ροντογιάννης,
Ρένα Τσαντούλη,
Στέλιος Καραμπασάκης,
Χρήστος Τσιγγενόπουλος
(άν ξεχνάω κάποιον θα τον βάλω μόλις τον θυμηθώ ;) )

Ανέβασα το zip με το setup στα downloads του student guru, στο φάκελο Τεχνολογία/Κώδικας καθώς και στα αρχεία του blog, οπότε κάντε μια εγγραφή (1 λεπτό υπόθεση), αν δεν έχετε κάνει και κατεβάστε το :).Περιμένω σχόλια και παρατηρήσεις ώστε να τις υλοποιήσω στις επόμενες εκδόσεις του :)

Τα λέμε!!!

Share/Bookmark
Posted by Panoylhs | 18 comment(s)
Filed under: , , ,

Λοιπόν, σήμερα ας πούμε πώς να κάνουμε τις εφαρμογές μας να τρέχουν αυτόματα με την εκκίνηση του υπολογιστή μας :)...Άν θυμάστε (που δεν το κόβω :P) είχα ανεβάσει ένα "τηλεφωνικό κατάλογο" (που είχα γράψει προκειμένου να χρησημοποιεί XML serialization, το οποίο το αναβάθμησα σε επόμενο ποστ).Στην προσπάθεια να το κάνω να τρέχει κατα την εκκίνηση για να τσεκάρει ποιές επαφές έχουν γενέθλια βρέθηκα αντιμέτωπος με το "Πώς θα το κάνω να τρέχει κατα την εκκίνηση?"...

Καταρχήν, προσθέστε το Microsoft.Win32 namespace ( δλδ using Microsoft.Win32;).Στη συνέχεια, ορίστε ένα RegistryKey αντικείμενο το οποίο θα το χρησιμοποιήσουμε για να έχουμε πρόσβαση στο Run registry key ως εξής:

RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

Σημείωση: Άν θέλετε, μπορείτε να αντικαταστήσετε το CurrentUser με LocalMachine, αν θέλετε να τρέχει για όλους τους χρήστες)

Για να κάνουμε την εφαρμογή να τρέχει κατα το άνοιγμα του υπολογιστή μας, πρέπει να προσθέσουμε την τιμή της στον καταχωρητή:

rkApp.SetValue("MyApp", Application.ExecutablePath.ToString());
(στο "MyApp" βάζετε όποιο όνομα θέλετε εσείς να εμφανίζεται System Configuration Utility.Το string Application.ExecutablePath.ToString()  επιστρέφει το μονοπάτι που τρέχει η εφαρμογή, οπότε δεν χρειάζεται να το κάνουμε μόνοι μας (πέρα απο το ότι δεν το ξέρουμε :P ) )

Οπότε το μόνο που κάναμε εδώ είναι να προσθέσουμε την τιμή στη registry key του Run, περιλαμβάνωντας το path του εκτελέσιμου.Αυτό αρκεί για να τρέξει η εφαρμογή μας όταν ανοιξει ο υπολογιστής... :)

Για να κάνουμε το αντίστροφο, προφανώς διαγράφουμε την τιμή που μόλις καταχωρήσαμε ως εξής:
rkApp.DeleteValue("MyApp", false);

 Τέλος, για να τσεκάρουμε την κύρια κατάσταση της εφαρμογής μας, σχετικά με το αν θα ξεκινήσει η όχι κατα την εκκίνηση.Άν η rkApp.GetValue("MyApp") επιστρέψει null, τότε δεν είναι καταχωρημένη η εφαρμογή μας :)...

Ελπίζω να σας γλύτωσα χρόνο απο μελλοντικό ψάξιμο.Αν οχι, τότε να έκανα ένα βήμα στο να καταλάβετε πώς στο .ΝΕΤ "Δε θέλει κόπο, θέλει τρόπο (ψαξιμο :P)" :PpP

Share/Bookmark
Posted by Panoylhs | 6 comment(s)
Filed under: ,

Αφού πήρα χαμπάρι ότι το blog μου είχε σαπήσει αποφάσησα να μοιράστω κάτι ακόμα με τα 3(+ - :P ) άτομα που το παρακολουθούν :P ..

Θα πώ δύο εισαγωγικά λόγια πάνω στα events του WPF και μετά ένα τρομερά απλό αλλά και ταυτόχρονα αρκετά όμορφο παράδειγμα ;)...

Το .ΝΕT Framework προσφέρει τα events, τα οποία μπορείτε να χρησιμοποιήσετε για να ορίσετε και να "παγηδεύσετε" ιδιαίτερες ενέργειες.Πολλές (για να μην πώ όλες :P) από τις κλάσεις του .ΝΕΤ εκθέτουν events.Τα περισσότερα απο τα controls που μπορείτε να τοποθετήσετε σε μια WPF φόρμα καθώς και η ίδια κλάση Window, χρησιμοποιούν events για να μπορείτε να τρέξετε κώδικα όταν πχ ο χρήστης της εφαρμογής κλικάρει πάνω σε ένα κουμπί η γράφει σε ένα πεδίο, η κάνει δεξί κλίκ κάπου κλπ.Φυσικά μπορείτε και οι ίδιοι να ορίσετε δικά σας events :) ;)...

..Για να κάνεις subscribe μια μέθοδο χρησιμοποιείτε ο τελεστης '+='. Πχ
 Window.Loaded += MyMethod;..αυτό είναι με μορφή κώδικα, το Visual Studio προσφέρει και την δυνατότηνα να το γράψεις στο *.xaml(Extensible Application Markup Language) (επομένως να κρατήσεις και πιο καθαρό τον κώδικα σου ;) ), με την εξης μορφη:

<Window x:Class="MyProject.MyWindow"
    xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="το όνομα του παραθύρου" Height="το ύψος" Width="το πλάτος" Icon="το path του εικονιδίου στο project" WindowStartupLocation="του λές αν θα ξεκίνησει πχ στο κέντρο της οθόνης η αλλού" WindowStyle="καθορίζεις το στίλ του παραθύρου" ResizeMode="δηλώνεις αν θα μπορεί ο χρήστης να αλλάξει το μέγεθος του παραθύρου ή όχι" FontStyle="δηλώνεις τι font Θα έχουν οι γραμματοσειρές Loaded="MyMethod">

Στο *.xaml μπορείς να προσθέσεις κι άλλα tags που δηλώνουν events, στo οποίο φυσικά βοηθάει και το IntelliSense του Visual Studio :D ;) ...

..Μία μέθοδος γίνεται unsubscribe απο το event με τον τελεστή '-='.Αυτό φυσικά αν θές να το κάνεις κατα την εκτέλεση του προγράμματος (δλδ αν το μετανιώσεις πιο πρίν απλα σβήνεις το αντίστοιχο tag ,στην προκειμένη περίπτωση το Loaded="MyMethod")..

Ένα ακόμα παράδειγμα, αυτή την φορά με ένα button.Έστω οτι θες να τυπώνεις ένα μύνημα σε ένα MessageBox όταν ο χρήστης της εφαρμογής πατήσει το κουμπί myButton.Το event που πυροδοτείτε μόλις ο χρήστης πατήσει το myButton είναι το myButton.Click. Επομένως μέσω κώδικα γίνεται ως εξής myButton.Click += MyMethod; οπου

private void MyMethod()
{

MessageBox.Show("Event triggered!!");

}

Ενώ μπορείτε (και το προτιμάω κι εγώ) να πάτε στο xaml της φόρμας που είναι το button, να βρείτε το tag του και να προσθέσετε Click="MyMethod".

πχ <Button Height="23" Margin="56,0,59,20" Name="editLessonListButton" Grid.Row="1" VerticalAlignment="Bottom" MaxWidth="199" MaxHeight="23" Click="MyMethod" >

Κλείνωντας, να μοιραστώ μαζί σας το παράδειγμα που σας υποσχέθηκα :).Όπως προχώραγα ένα project, μου καρφώθηκε να μπορεί ο χρήστης να πατάει πάνω σε μία εικόνα και να ανόιγει ο internet explorer σε μία συγγεκριμένη σελίδα.Το πώς καλείς τον IE να μπεί σε κάποια σελίδα το ήξερα.Αυτό που δεν ήξερα ήταν πως θα "εκφράσω" το "όταν κάποιος πατήσει πάνω σε αυτή την εικόνα".Κάθησα και σκέφτηκα και είπα να δοκιμάσω να δώ μήπως υπάρχει κάποιο event που να εκφράζει αυτό που ήθελα.Πήγα στο αντίστοιχο tag της εικόνας στο xaml αρχείο του παραθύρου που βρισκοταν και με την βοήθεια του IntelliSense βρήκα ένα event που λεγόταν MouseLeftButtonDown.Χαμογέλασα μέχρι τα αυτιά (όπως και σην φωτογραφία με την κανάτα της McFarland :$ :P) και κατάλαβα πως βρήκα αυτό που έψαχνα. οπότε στο tag της εικόνας πλ/σα MouseLeftButtonDown="image_MouseLeftButtonDown" οπότε το μόνο που έμενε ήταν στην μέθοδο
private void image_MouseLeftButtonDown(objectsender,MouseButtonEventArgse) να προσθέσω το System.Diagnostics.Process.Start("IExplore.exe", http://di.uoa.gr);

;)

Ελπίζω να βοήθησα και να έδωσα ιδέες.Αν θέλετε σχολιάστε τυχον παραλήψεις, ρωτήστε ότι θέλετε και πείτε αν κάτι σας μπέρδεψε :) ...Τα λέμε σε λίγες μέρες πάλι!!!

Share/Bookmark
Posted by Panoylhs | 1 comment(s)
Filed under: , , ,