Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Μία εφαρμογή - Ένα άνοιγμα

Îåêßíçóå áðü ôï ìÝëïò pantelee. Τελευταία δημοσίευση από το μέλος pantelee στις 21-10-2006, 10:07. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-10-2006, 04:29 18945

    Confused [*-)] Μία εφαρμογή - Ένα άνοιγμα

    Γενικά:
    Έστω ότι εχουμε φτιάξει μία εφαρμογή. Πάμε στο εικονίδιο της εφαρμογής και (διπλό-κλικ) ζητάμε άνοιγμα (ανοίγει το παράθυρο της εφαρμογής). Ξαναπάμε στο εικονίδιο (χωρίς να έχουμε κλείσει την προηγούμενη) και ξαναζητάμε άνοιγμα (ανοίγει δεύτερο παράθυρο της ίδιας εφαρμογής). Το τελευταίο είναι που δε θέλω και σας ρωτάω:
    Τι πρέπει να κάνω ώστε ζητώντας άνοιγμα από την εφαρμογή και εφόσον αυτή είναι ανοιχτή να μην ανοίγει για δεύτερη φορά αλλά να εμφανίζεται η ήδη ανοιχτή σε πρώτο πλάνο;

    Συγκεκριμένα:
    Έχω φτιάξει ένα παιχνιδάκι (λέγεται Απόδραση). Με τη βοήθεια του Installer (και μίας συζήτησης του παρόντος site από την οποία ξετρύπωσα τον Installer) έχω κάνει το Setup του και μάλιστα με file association (κατά το Setup καταχωρείται η κατάληξη .esc ως "Αρχείο Απόδρασης" και σ' αυτήν την κατάληξη καταχωρείται εικονίδιο, ενέργειες, και πρόγραμμα με το οποίο θα ανοίγουν τα αρχεία). Πρωτιά για τα δεδομένα μου.
    Σε ένα αρχείο .esc ζητάω άνοιγμα και (καλώς) ανοίγει η Απόδραση η οποία με τη σειρά της ανοίγει το αρχείο. Αν τώρα σε κάποιο άλλο αρχείο .esc (ή και στο ίδιο) ζητήσω να ανοίξει τότε (κακώς) θα ανοίξει καινούργιο παράθυρο Απόδρασης.

    Η γενική περίπτωση αφορά πιο άμεσα το διπλό άνοιγμα της εφαρμογής, ενώ η ειδική το διπλό ανοιγμα ενός αρχείου το οποίο προκαλεί έμμεσα πλέον το διπλό άνοιγμα της εφαρμογής. Νομίζω όμως ότι οι δύο περιπτώσεις είναι παρόμοιες ώς προς το πρόβλημα και ως προς την αντιμετώπιση. Από εσάς ζητάω την αντιμετώπιση.

    Ευχαριστώ εκ των προτέρων
    Παντελής
  •  21-10-2006, 08:47 18949 σε απάντηση της 18945

    Απ: Μία εφαρμογή - Ένα άνοιγμα

    Χρησιμοποίησε το App.PrevInstance για να δεις αν τρέχει ήδη η εφαρμογή σου και κατόπιν μπορείς να αποφασίσεις τι θα κάνεις. Πχ να κλείνει το προηγούμενο .esc αρχείο και να ανοίγει το νέο ή να κάνεις ένα End και να τελειώνει η εκτέλεση.


    Vir prudens non contra ventum mingit
  •  21-10-2006, 10:07 18952 σε απάντηση της 18945

    Απ: Μία εφαρμογή - Ένα άνοιγμα

    KelMan σ' ευχαριστώ πολύ. Ήταν αυτό που έψαχνα και ήταν και πολύ απλό τελικά.
    Απ' ότι είδα το App.PrevInstance επιστρέφει True ή False αν η εφαρμογή είναι ήδη ανοιχτή ή όχι αντίστοιχα.

    Έχω μία ακόμη απορία σ' αυτό που λές: "Πχ να κλείνει το προηγούμενο .esc αρχείο και να ανοίγει το νέο ή να κάνεις ένα End και να τελειώνει η εκτέλεση".
    Ποια θα είναι η εντολή και ποιο event θα προκαλεί στην ήδη ανοιχτή φόρμα να ανοίξει το αρχείο;

    Π.χ.

    Κώδικας για την φόρμα που θα κληθεί να ανοίξει για δεύτερη φορά:
    Private Sub Form_Load()
      If App.PrevInstance Then
        If Command<>"" then DoubleOpenedFile = mid(Command,2,len(Command)-2)
        'Κάλεσε το event DoubleOpen
        End
      End If
    ...
    End Sub


    Κώδικας για τη φόρμα που ενώ ήταν ανοιχτή κλήθηκε από την προηγούμενη φόρμα
    Private Sub Form_DoubleOpen()
      'Άνοιξε το αρχείο DoubleOpenedFile (ή για το γενικό παράδειγμα επανέφερε το παράθυρο)
    End Sub


    Όπως βλέπεις το μόνο που ξέρω είναι ότι το Command δίνει τη διαδρομή του αρχείου που προκάλεσε το άνοιγμα της εφαρμογής (αν δίνει σε άλλες περιπτώσεις και άλλα πράγματα τότε δεν ξέρω ούτε κι αυτό τόσο καλά), και μάλιστα (κάτι που με είχε ταλαιπωρήσει αρχικά μέχρι να το μάθω και στη συνέχεια μου έκανε εντύπωση) μέσα σε εισαγωγικά.
    Ίσως στην απάντησή σου θεώρησες δεδομένα ότι τα ξέρω περισσότερα από το Command.

    Τελικά:
    Ποιό θα είναι το DoubleOpen event; Η εντολή που θα το καλεί; Η μεταβλητή DoubleOpenedFile;
    Μεσολαβητή Event ή μεσολαβήτρια μεταβλητή μεταξύ δύο ανοιχτών εφαρμογών μού είναι τελείως καινούργιο.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems