Erotisi gia forma...

Συζητήσεις για τις γλώσσες του dot Net και για του Visual Studio της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
bariemai
Δημοσιεύσεις: 155
Εγγραφή: 28 Δεκ 2002 23:09

Erotisi gia forma...

Δημοσίευση από bariemai » 12 Ιαν 2003 13:49

Hi pos mporo na kano mia forma na einai synexeia OnTop????

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Erotisi gia forma...

Δημοσίευση από agrippas » 12 Ιαν 2003 14:10

Σε μια λειτουργική μονάδα δώσε:

Κώδικας: Επιλογή όλων

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, y, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const TOPMOST_FLAGS = SWP_NOMOVE (ή SWP_NOSIZE)

Public Sub FormaNormal(hwnd As Long)
   SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub

Public Sub FormaOnTop(hwnd As Long)
   SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub
Και στο συμβάν φορτώματος της φόρμας:

Κώδικας: Επιλογή όλων

Call FormaOnTop(hwnd) 
Για να την ξαναγυρίσεις στα κανονικά της:

Κώδικας: Επιλογή όλων

Call FormaNormal(hwnd) 
Λίγο API δε βλάπτει :lol: :wink:

Άβαταρ μέλους
bariemai
Δημοσιεύσεις: 155
Εγγραφή: 28 Δεκ 2002 23:09

Erotisi gia forma...

Δημοσίευση από bariemai » 14 Ιαν 2003 00:12

Thnx agrippas.

:arrow: kati akoma:
Exo 1 arxeio .exe ftiagmeno se vb, otan to klikarei o xrhsths auto anoigei, to 8ema omos einai pos kata thn diarkia pou afto einai open otan o xristis to 3anaklikarei tote auto 3ananigei gia 2h fora.
Yparxei kapia sinartisi h kati pou na mporo na tsekaro px if to arxeio trexei then mh to 3anani3eis 2h fora?????

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Erotisi gia forma...

Δημοσίευση από agrippas » 14 Ιαν 2003 01:16

Αν θες απλά να μην την ανοίγει δεύτερη φορά, βάλε σε μια λειτουργική μονάδα μια sub main()

Κώδικας: Επιλογή όλων

Sub Main()

     If App.PrevInstance then
         End
     End If 

     Onomaprwthsformas.Show

End Sub
Μην ξεχάσεις να δηλώσεις στις ιδιότητες του project να ξεκινάει εκτελώντας τη Sub Main και όχι από κάποια φόρμα. H Sub Main καλό είναι να βρίσκεται ως πρώτη υπορουτίνα σε μια ξεχωριστή λειτουργκή μονάδα.

Άβαταρ μέλους
bariemai
Δημοσιεύσεις: 155
Εγγραφή: 28 Δεκ 2002 23:09

Erotisi gia forma...

Δημοσίευση από bariemai » 14 Ιαν 2003 14:46

Thanks k pali ;)

To perasa se module k kano call apo thn proth forma pou exo
diladi sto form1_load kano call.

Doulevei ala einai autos o sostos tropos?
Otan les "λειτουργική μονάδα " enoeeis module h kati alo?
Episis otan les:"στις διότητες του project να ξεκινάει εκτελώντας τη Sub Main " mporeis na gineis ligo pio analitikos????
Enoeis stis idiotites(tou make) otan pao na kano to project make???
sorry ala epidi eimai neos sthn vb kapia pragmata de ta anagnorizo. :roll:

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Erotisi gia forma...

Δημοσίευση από agrippas » 15 Ιαν 2003 01:04

Module = Λειτουργική μονάδα.

Όταν ξεκινάει ένα compiled (.exe) της vb το πρώτο που ανοίγει είναι η κύρια φόρμα ή η υπορουτίνα Sub Main(). Το τι θα διαβάσει πρώτο το καθορίζεις από το μενού Project -> Properties.

Σε πολύ μεγάλα projects, συνήθως φτιάχνουμε μια Sub Main() που κάνει όλο το "βασικό" φόρτωμα του προγράμματος, πριν εμφανιστεί η βασική φόρμα, θα το δεις όσο δουλεύεις με το χρόνο.

Πάντως κι αυτό που έκανες καλό είναι αλλά καθυστερεί ελάχιστα μέχρι να επικοινωνήσει η φόρμα με τη λειτουργική μονάδα. Αν θες να είσαι τυπικός, βάλ' το στη Sub Main ή βάλ' το στο συμβάν Form_Load() πρώτο πρώτο.

TIP: Η Sub Main() συνήθως μπαίνει πρώτη αμέσως μετά τα Declarations σε μια λειτουργική μονάδα, για να κερδίζεις σε χρόνο εκτέλεσης. :wink:

Απάντηση

Επιστροφή στο “dot Net και Visual Studio”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης