Et par problemer

Tags:    visual-basic

Problem 1:
Kan ikke få det til at se pænt ud når jeg bruger listbox, vil gerne have at det står pænt i rækker, men det arrangerer sig efter hvor lang den tekst der står er.

Løsning 1: Håber i kan komme med den!


Problem 2:
Vil gerne have en funktion der kan lave noget i stil 00001, 00002 ... 01489.
Kan godt få den til at tælle op med bare et tal ad gangen. Men ikke når der skal de der nuller foran!

Løsning 2: Håber også i kan hjælpe med det!


Point gives til den med svar på begge, eller et godt svar på bare det ene! :)




7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Public Function NullerForanTal(ByVal Tal As Long, Optional ByVal AntalNuller As Long = 5) As String

Hej.

Er det muligt at få uddybet svaret?? Hvordan den bruges osv.


Ved ikke om i har misforstået mit spørgsmål ang. listbox. Det jeg vil have er at det skal sorterer det i faste colums. hvis man sætter den til sorted i properties, lister den bare alfabetisk.

Tak!


OK, lad os sige, at du gerne vil have to tal formatterede, så de har mindst 3 cifre, selv om de måske er under 100. Lad os sige at tallene ligger i variablene lngTalEt og lngTalTo:
<pre>Dim lngTalEt As Long
Dim lngTalTo As Long

Let lngTalEt = 18
Let lngTalTo = 129

Debug.Print NullerForanTal(lngTalEt, 3) ' udskriver 018
Debug.Print NullerForanTal(lngTalTo, 3) ' udskriver 129</pre>
Det første parameter (Tal) er tallet, som skal formatteres. Det andet parameter (AntalNuller - burde måske hedde MinimumCiffre i stedet) er minimum antal ciffre, der skal være i tallet. Hvis du ikke angiver noget, antager funktionen, at du vil have 5 ciffre. Ellers bruger den det antal ciffre, du angiver.
<pre>' Denne gang vil vi først prøve
' med 5 ciffre, siden med 7.
Debug.Print NullerForanTal(lngTalEt) ' udskriver "00018"
Debug.Print NullerForanTal(lngTalTo) ' udskriver "00129"

Debug.Print NullerForanTal(lngTalEt, 7) ' udskriver "0000018"
Debug.Print NullerForanTal(lngTalTo, 7) ' udskriver "0000129"</pre>

NullerForanTal giver dig en String som returværdi, da du sandsynligvis vil bruge værdien i tekstbokse eller list boxe og lignende.

Håber det besvarer dit spørgsmål nogenlunde. Ellers må du sige til.

Software is here and now but rock and roll is forever.



Problem 1:
Kan ikke få det til at se pænt ud når jeg bruger listbox, vil gerne have at det står pænt i rækker, men det arrangerer sig efter hvor lang den tekst der står er.

Løsning 1: Håber i kan komme med den!


Problem 2:
Vil gerne have en funktion der kan lave noget i stil 00001, 00002 ... 01489.
Kan godt få den til at tælle op med bare et tal ad gangen. Men ikke når der skal de der nuller foran!

Løsning 2: Håber også i kan hjælpe med det!


Point gives til den med svar på begge, eller et godt svar på bare det ene! :)


Her er en mulig løsning på Problem 1:

Ovre i Properties på listboxen vil du kunne finde "Sorted" den skal du bare sætte til "True" og så skulle den være der :)

Altså: Properties > Sorted > Sæt til True


www.andreaslinks.tk - Company Site
www.ournameclan.tk - AA : O Clan site




Problem 2:
Vil gerne have en funktion der kan lave noget i stil 00001, 00002 ... 01489.
Kan godt få den til at tælle op med bare et tal ad gangen. Men ikke når der skal de der nuller foran!

Løsning 2: Håber også i kan hjælpe med det!


Jeg er nybegynder, men det betyder ikke at jeg er dårlig. Jeg har aldrig arbejdet med listbox så her får du koden lavet til almindelig textbox.
Nu ved jeg ikke hvordan du tæller fra 1 til 1489 men du kan gøre nogenlunde sådan her:
Fold kodeboks ind/udKode 


Denne kode skriver alle tal fra 001 til 999 og bruger altid 3 tal f.eks. 045[Redigeret d. 15/01-03 20:01:59 af HAP]



2:
Dim I as Integer
Dim S as String
For I = 1 to 100
s = Right("00000" + CStr(i),5)
MsgBox s
Next


Mvh,

Thomas Nielsen



2:
Dim I as Integer
Dim S as String
For I = 1 to 100
s = Right("00000" + CStr(i),5)
MsgBox s
Next


Mvh,

Thomas Nielsen



Thomas' ting virker, så det er ikke ligefrem forkert, men hvis du vil have en mere "rigtig" løsning, så er den her:

<pre>
Public Function NullerForanTal(ByVal Tal As Long, Optional ByVal AntalNuller As Long = 5) As String

Dim strFormat As String

Let strFormat = String$(AntalNuller, "0")
Let NullerForanTal = Format$(Tal, strFormat)

End Function
</pre>

Der har du ihvertfald en løsning som ALTID virker. Thomas løsning virker ikke, når du kommer højt op i tallene, da den kun giver de fem mindste cifre.

Software is here and now but rock and roll is forever.



2:
Dim I as Integer
Dim S as String
For I = 1 to 100
s = Right("00000" + CStr(i),5)
MsgBox s
Next


Mvh,

Thomas Nielsen


Thomas' ting virker, så det er ikke ligefrem forkert, men hvis du vil have en mere "rigtig" løsning, så er den her:

<pre>
Public Function NullerForanTal(ByVal Tal As Long, Optional ByVal AntalNuller As Long = 5) As String

Dim strFormat As String

Let strFormat = String$(AntalNuller, "0")
Let NullerForanTal = Format$(Tal, strFormat)

End Function
</pre>

Der har du ihvertfald en løsning som ALTID virker. Thomas løsning virker ikke, når du kommer højt op i tallene, da den kun giver de fem mindste cifre.

Software is here and now but rock and roll is forever.


Hej.

Er det muligt at få uddybet svaret?? Hvordan den bruges osv.


Ved ikke om i har misforstået mit spørgsmål ang. listbox. Det jeg vil have er at det skal sorterer det i faste colums. hvis man sætter den til sorted i properties, lister den bare alfabetisk.

Tak!




Problem 1:
Kan ikke få det til at se pænt ud når jeg bruger listbox, vil gerne have at det står pænt i rækker, men det arrangerer sig efter hvor lang den tekst der står er.

Løsning 1: Håber i kan komme med den!


HAr ikke testet med dette eksempel, men plejer at gøre sig gældende i de fleste controls.
Fyld lortet i din dropdown box ( så ændrede den sin størrelse ) og bagefter sætte du
MyFuckingControl.width = 300

og voila. Måske (?) det er nok at bare sætte width i properties i design'eren. men ellers gør som jeg skrev.



t