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

Merikes erotiseis gia thn visual basic..


Exoskeletor

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

Δημοσ.

gia na mhn kano synexeia kainourgia posts kai me bannari o ultra moderator:

1. Ginete ena DriveListBox sthn visual basic na deixnei mono ta cd-rom? (enoo na exei na epilekeis mono ta cd-rom pou exeis ston ypologisth sou kai oxi sklirous diskous,floppy disk drives klp)

2. Pos mporo otan kano add ena item se ena listbox na epilegete kiolas?(diladi na eine sinexeia epilegmeno to teleyteo item)

ilpiza pos tha ginotan kapos etsi: set list1.list(i)= selected alla..

Δημοσ.

Λοιπόν για το (1) δεν νομίζω να υπάρχει τέτοια επιλογή, αν δεν ξέρει και κάποιος άλλος κάτι που εμένα μπορεί να μου διαφεύγει, υλοποίησε ένα customized combobox στα μέτρα σου...! :D

 

Όσο για το (2) αυτό που θες είναι το

> List1.Selected(List1.ListCount - 1) = True 

 

 

 

[/code]

Δημοσ.

mamas file mamas.se eyxaristo poly

(yparxh tropos na paro plirofories gia ta cd-rom pou exei ena pc? opos onoma dvd version ktl..)

 

pos mporo na oriso na kanei kati leitourgies otan pataei kapoios to x(otan kleinei tin forma diladi) se mia forma?

nomizo ginotan orizontas ena sub Form_close() i kati paromoio alla den thimame akribos...

Δημοσ.

afto pou zhtas ginetai sto unload event ths formas.

epelekse form apo thn object list panw aristera kai deksia sthn event list epelekse unload.

kai grafeis kwdika kanonika.

gia ta cd rom 8a to psaksw kai 8a sou pw.

alla prepei na ginetai me thn active directory services library.

Δημοσ.

Δεν χρειάζεται Active Directory, υπάρχει ένα API, το οποίο επιστρέφει τον τύπο της συσκευής για δοσμένο Drive Letter... Έτσι με ένα Loop για όλα τα κεφαλαία γράμματα ψάχνεις να βρεις τον τύπο κάθε συσκευής που υπάρχει στο σύστημα.

Σου έχω υλοποιήσει και μία ρουτίνα η οποία γεμίζει ένα ComboBox (Combo1 το όνομα αυτού). Κάλεσε την ή στο Form_Load μιας φόρμας ή από οπουδήποτε αλλού θέλεις

 

 

>

Private Declare Function GetDriveType Lib "kernel32" Alias _
       "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Const DRIVE_CDROM = 5

Private Sub LoadCDROMDrives()
Dim i As Integer
Dim tmpDrive As String

On Error GoTo errorh

With Combo1
   .Clear
   .AddItem "Επιλέξτε CD-ROM"
   
   For i = 0 To 25
       tmpDrive = Chr(65 + i) & ":\"
       If GetDriveType(tmpDrive) = DRIVE_CDROM Then .AddItem tmpDrive
   Next
   .ListIndex = 0
End With

Exit Sub

errorh:
MsgBox Err.Description
End Sub

Δημοσ.

nase kala file mou.eyxaristo.

 

2 mono erotiseis mou exoun meinei:

 

1. pos mporo na sigentroso oles ths formes se mia? tora etsi opos exo ftiaksei to programa mou otan patas next,kribete mia forma kai emfanizete mia allh.pos ginete na sigentrothoun oles se mia? (px san na exo mono mia forma kai kathe fora na alazoun ta objects pou exei mesa.an kai den thelo ayto.ego thelo me kapoion tropo na mporo na bazo se ena plaisio pou eine san forma alles formes mesa.)

 

2.to diskolo eine na ftiakso ena kodika pou tha bazeis to cd-rom kai to fakelo pou thes na sou kani copy ta files kai tous ipofakelous.

Δημοσ.

Λοιποοοοοοοοοοοοόν! grrrrrr@#(&%#$(&%$(%#

έγραφα τόση ώρα τι να κάνεις και πάτησα Submit και χάθηκαν όλα!! :evil: :evil:

 

Τέσπα, άντε παμε πάλι!

Λοιπόν υπάρχει μια βιβλιοθήκη η Microsoft Scripting Runtime. Θα την κάνεις reference στο Project... Σου έχω υλοποιήσει μια ρουτίνα η οποία θα κάνει αντιγραφή από ένα Drive σε κάποιο Folder. Ο κώδικας είναι παρακάτω. Με μικροαλλαγές μπορείς να αντιγράψεις και από Folder σε Folder, οπότε απλά ψάξε λίγο τις μεθόδους της Scripting.FileSystemObject, φαντάζομαι ότι έχει αυτά που ζητάς.

 

>
Private Sub CopyDrive(ByVal ISrcDrive As String, ByVal IDFolder As String)
Dim cl          As Scripting.FileSystemObject
Dim IFile       As Scripting.File
Dim IRootFolder As Scripting.Folder
Dim IDstFolder  As Scripting.Folder
Dim IFolder     As Scripting.Folder


On Error GoTo errorh

Set cl = New Scripting.FileSystemObject

If cl.DriveExists(ISrcDrive) Then
   If Not cl.FolderExists(IDFolder) Then
       Set IDstFolder = cl.CreateFolder(IDFolder)
   Else
       Set IDstFolder = cl.GetFolder(IDFolder)
   End If
   
   Set IRootFolder = cl.GetDrive(ISrcDrive).RootFolder
   
   For Each IFolder In IRootFolder.SubFolders
       cl.CopyFolder IFolder.Path, IDstFolder.Path + "\" + IFolder.Name
   Next

   For Each IFile In IRootFolder.Files
       cl.CopyFile IFile.Path, IDstFolder.Path + "\" + IFile.Name
   Next
End If

If Not IFile Is Nothing Then Set IFile = Nothing
If Not IFolder Is Nothing Then Set IFolder = Nothing
If Not IRootFolder Is Nothing Then Set IRootFolder = Nothing
If Not IDstFolder Is Nothing Then Set IDstFolder = Nothing

Exit Sub
errorh:
MsgBox Err.Description
If Not IFile Is Nothing Then Set IFile = Nothing
If Not IFolder Is Nothing Then Set IFolder = Nothing
If Not IRootFolder Is Nothing Then Set IRootFolder = Nothing
If Not IDstFolder Is Nothing Then Set IDstFolder = Nothing
End Sub

 

Έτσι αν θες να αντιγράψεις από το E:\ στο folder C:\Lakis

θα γράψεις > CopyDrive "E:\", "C:\Lakis".

 

Παρατήρησα επίσης, μιας και δεν είχα ασχοληθεί ξανά με Drives ότι η Srcipting.FileSystemObject έχει την δυνατότητα να κανει browse τα Drives και να δεις ποια από αυτά ειναι τα CDRom χωρίς να χρειάζεσαι να βάλεις API στην φόρμα σου. 8)

 

>
Private Sub LoadCDROMDrives() 
Dim cl          As Scripting.FileSystemObject
Dim i           As Integer
Dim tmpDrive    As String

On Error GoTo errorh

Set cl = New Scripting.FileSystemObject

With Combo1
   .Clear
   .AddItem "Επιλέξτε CD-ROM"
   
   For i = 0 To 25
       tmpDrive = Chr(65 + i) & ":\"
       If cl.DriveExists(tmpDrive) Then
           If cl.GetDrive(tmpDrive).DriveType = CDRom Then .AddItem tmpDrive
       End If
   Next
   .ListIndex = 0
End With

Exit Sub

errorh:
MsgBox Err.Description
End Sub 

 

Όσο για το 1ο ερώτημα σου, το να έχεις μια φόρμα και να κάνει όλη την δουλειά θα πρέπει να υλοποιείς κάθε φορά τα Controls της φόρμας δυναμικά, πράγμα που είναι χρονοβόρο και δύσκολο. :twisted: Βέβαια το αποτέλεσμα μπορεί να σε δικαιώσει. :lol: Όσον αφορά όμως το πως θα κάνεις τις φόρμες σου να ανήκουν σε μία άλλη Parent, θα πρέπει να προσθέσεις στο Project σου μια MDI Form και να αλλάξεις το project και να ξεκινάει με αυτήν. Άπο εκεί και πέρα θα αλλάξεις το Property MDIChild σε όλες τις υπόλοιπες φόρμες σε True ok!??!

 

 

/* ΠΙΠΙΝΙΑΑΑΑΑ, STRINGAKIAAAAA, ΣΑΝΤΟΡΙΝΗ ΕΡΧΟΜΑΣΤΕ!!!! */

Δημοσ.

Επειδή τώρα είδα το 1ο μήνυμα σου πάλι, μέσω της Srcipting.FileSystemObject μπορείς να βρεις πληροφορίες για το CDRom version etc etc!! ok??! 8)

 

/* Δεν ξαναλέω πάλι για πιπίνια!! Έχετε καταλάβει οτι θέλω επειγόντως διακοπές!!!! :D */

Δημοσ.

nase kala friend.tha to dokiomaso argotera.tha alakso ligo ton kodika giati thelo me kapoio tropo na metrao ola ta arxeia pou exei to cd. (etsi oste otan antigrafonte na anebenei kai mia progress bar.)

 

ayto enoo:

number_of_files = progressbar1.max

ProgressBar1.value = ProgressBar1.value + 1

Label3.Caption = Int(ProgressBar1.value * 100 / ProgressBar1.Max) & " % Complete"

Δημοσ.
nase kala file mou.eyxaristo.

1. pos mporo na sigentroso oles ths formes se mia? tora etsi opos exo ftiaksei to programa mou otan patas next' date='kribete mia forma kai emfanizete mia allh.pos ginete na sigentrothoun oles se mia? (px san na exo mono mia forma kai kathe fora na alazoun ta objects pou exei mesa.an kai den thelo ayto.ego thelo me kapoion tropo na mporo na bazo se ena plaisio pou eine san forma alles formes mesa.)

[/quote']

 

Φιλε, μπορεις να βαλεις ολα τα controls μιας φορμας σε ενα frame και να το κανεις invisible και μετα να κανεις visible το frame2 που θα πeριεχει τα controls μιας αλλης φορμας και παει λεγοντας.... :D

Δημοσ.

Ναι μπορείς να το κάνεις και έτσι αρκεί να μην έχεις πολλές φόρμες να βάλεις και γίνει ένας πανικός εκεί μέσα!!!! 8) Το καλό είναι να μπορείς εύκολα να συντηρείς τον κώδικά σου...

 

Όσο για την απόλυτη τιμή ABS(Variable) είναι η function που ζητάς..

Δημοσ.

eyxaristo gia thn apolyth timh.to xriazomoun gia ena programa pou aferei xronous..exo se mia metablhth mia ora ths morfhs "15:23:54" kai se mia allh to idio ligo poio meta "16:45:45"

thelo na afero me enan tropo thn deyterh apo thn proth ora.prospatho na ftiakso ton kodika alla den mou ginete teleios sosta re gmto..

o kodikas pros to paron eine(text1=ora prin,text2=ora meta):

 

hoursbegin = Left$(Text1, 2)

hoursend = Left$(Text2, 2)

 

minutesbegin_ = Left$(Text1, 5)

minutesbegin = Right$(minutesbegin_, 2)

minutesend_ = Left$(Text2, 5)

minutesend = Right$(minutesend_, 2)

 

secondsbegin = Right$(Text1, 2)

secondsend = Right$(Text2, 2)

 

If hoursend > hoursbegin Or hoursend = hoursbegin Then

hours = hoursend - hoursbegin

Else

If hoursend < hoursbegin Then

hours = hoursend + 1

End If

End If

 

If minutesend > minutesbegin Or minutesend = minutesbegin Then

minutes = Abs(minutesend - minutesbegin)

 

Else

hours = hours - 1

minutes = Abs(60 - (minutesbegin - minutesend))

 

End If

 

If secondsend > secondsbegin Then

seconds = Abs(secondsbegin - secondsend)

 

Else

seconds = Abs(60 - (secondsbegin - secondsend))

minutes = minutes - 1

End If

 

If hours > 12 Then

hours = hours - 12

End If

 

If seconds = 60 Then

minutes = minutes + 1

seconds = seconds - 60

End If

 

 

duration = hours & ":" & minutes & ":" & seconds

MsgBox duration

 

nomizo pos eine mia xara o kodikas.ton xrisimopoio gia na do posi ora ekane na oloklhrothi mia diadikasia.douleyei sosta ektos ean h diadikasia pari pano apo 24 ores.elpizo na mhn ipirxe allos tropos poio eukolos :)

 

kserei kaneis pos mporo na to kano module h kati tetoio?na grafo as poume (timestart=time1,timeend=time2):

msgbox Duration(timestart,timeend)

kai na mou bgazei ton xrono?

Δημοσ.

Μπορείς βέβαια να ψάχνεις και στο msdn για κάτι τέτοια ζητήματα.

 

Και δεν το λέω για να στην πω, αλλά το "ψάξιμο" είναι βασικό συστατικό στον προγραμματισμό, και πρέπει να μάθεις να το κάνεις και αυτό σωστά... Τα fora θα πρέπει να είναι η τελευταία σου επιλογή για την λύση στα προβλήματα σου, και ειδικά για τα ζητήματα που έχουν να κάνουν με τις βασικές λειτουργίες (πχ system functions) στις γλώσσες προγραμματισμού.

 

Εάν πχ έψαχνες στο msdn για το τελευταίο σου πρόβλημα χρησιμοποιώντας keywords όπως "date datatype" και "date functions", θα έβρισκες πολλά ενδιαφέροντα πράγματα (πχ Datediff function), και δεν θα έγραφες πάλι όλα αυτά τα "κουλά", συν ότι δεν θα ήσουν 5 μέρες κολλημένος να περιμένεις μία απάντηση....

 

Μπορείς να χρησιμοποιήσεις την Datediff function για να κάνεις αυτό που λες και να πάρεις τον αριθμό των δευτερολέπτων που έχουν περάσει. Διαιρείς (χρησιμοποιώντας το "\" αντί για το "/" - περισσότερες πληροφορίες πάλι στο msdn) με 3600 και έχεις τις ώρες!!! Διαιρείς το υπόλοιπο με το 60 (με τον ίδιο πάλι τρόπο) και έχεις τα λεπτά!!! Το υπόλοιπο είναι τα δευτερόλεπτα!!

 

Το άλλο που λες λέγεται Function (και όχι module). Πληροφορίες πολλές για το πώς φτιάχνεις function, στο msdn.

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

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

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