Avatar billede doctorpurple Nybegynder
21. marts 2002 - 08:14 Der er 14 kommentarer og
1 løsning

Få text til at stå i kollonner

hej jeg er ved at lave et program med en database og når jeg trykker på en knap smider den alle data i tabellerne ned på en linie i en richtextbox men jeg ville gerne ha at navne stod lige over hinanden og adresser lige over hinanden ligesom et excel regneark
Avatar billede tubber Juniormester
21. marts 2002 - 09:10 #1
Sæt dine data ind manuelt, lav en line som følge:

RichTextBox1.Text = record1 + chr$(13) + record2 + chr$(13)....osv....

chr$(13) er ASCII koden for return.......

du kan også bruge vbKeyReturn istedet for chr$(13)....

Tubber
Avatar billede tubber Juniormester
21. marts 2002 - 09:38 #2
Men nemmere ville det da være med en listbox....

list1.additem rsNavn
list1.additem rsAdress
osv....

Så er det i kolonner
Avatar billede kaffe Nybegynder
21. marts 2002 - 16:47 #3
Bedre ville være med et listview så kan du selv definere dine kolonneoverskrifter, sortere kolonner mv.
Det kræver lidt mere at sætte op men virker meget bedre.

Listview ligger i Microsoft Windows Common Controls 6.0

Her laves 3 kolonner.

Private Sub Command1_Click()
  Dim intNr As Integer
  intNr = 1
  rs.MoveFirst
  While Not rs.EOF
    ListView1.ListItems.Add intNr, , rs.Fields(0) ' første kolonne
    ListView1.ListItems(intNr).SubItems(1) = rs.Fields(1) ' anden kolonne
    ListView1.ListItems(intNr).SubItems(2) = rs.Fields(2) ' tredje kolonne
    ' osv osv
    intNr = intNr + 1
    rs.MoveNext
  Wend
End Sub

Højreklik først på listview og sæt "view" til 3 - lvwReport, gå ind under fanebladet columnheaders og lav 3 columns. Her kan du også skrive kolonne overskrifter.

God fornøjelse
Avatar billede doctorpurple Nybegynder
22. marts 2002 - 08:35 #4
hvad er det der rs? det svar fra kaffe tror jeg jeg holder mig til men kan ikke lige se hvad det der rs er til
Avatar billede tubber Juniormester
22. marts 2002 - 08:47 #5
rs = recordset

Du kan se under http://www.eksperten.dk/spm/187650 der viser jeg hvordan det virker med sql (sådan som jeg gør når jeg arbejder med databaser.......
Avatar billede doctorpurple Nybegynder
22. marts 2002 - 10:44 #6
jeg takker mange gange for den gode hjælp jeg har dog et spørgsmål til hvordan printer jeg den listview ud og gemmer i text så jeg kan åbne den gemte liste for det var temmelig let i richtextbox
Avatar billede doctorpurple Nybegynder
22. marts 2002 - 10:45 #7
nu har i begge hjulpet mig men hvem skal have pointet den der svare først på det nye indlæg for point
Avatar billede tubber Juniormester
22. marts 2002 - 14:18 #8
Så må pointene gå til kaffe, for jeg kan ikke svare på det andet :O)
Avatar billede kaffe Nybegynder
22. marts 2002 - 14:47 #9
Skal jeg nu også til at arbejde for pointene :)

Den første rutine gemmer alle poster i en tekstfil kaldet listview.txt og den anden henter dem igen....

Private Sub Command2_Click()
  ' Gem alle poster i tekstfil
  Dim intFF As Integer
  Dim strFilNavn As String
  Dim intCount As Integer
  Dim intAntal As Integer
  Dim strTekst As String
 
  intFF = FreeFile
  strFilNavn = "C:\listview.txt"
  intAntal = ListView1.ListItems.Count
 
  With ListView1
    Open strFilNavn For Output As #intFF
      For intCount = 1 To intAntal
        strTekst = .ListItems(intCount).Text
        strTekst = strTekst & "," & .ListItems(intCount).SubItems(1)
        strTekst = strTekst & "," & .ListItems(intCount).SubItems(2)
        Print #intFF, strTekst
      Next intCount
    Close #intFF
  End With
End Sub


Private Sub Command3_Click()
  ' Hent poster fra tekstfil
  Dim intFF As Integer
  Dim strFilNavn As String
  Dim intCount As Integer
  Dim strTekst As String
  Dim arrTekst() As String
 
  intFF = FreeFile
  strFilNavn = "C:\listview.txt"
 
  ' Sletter data i listview:
  ListView1.ListItems.Clear
  ' Listview har base 1:
  intCount = 1
 
  With ListView1
    Open strFilNavn For Input As #intFF
      Do While Not EOF(intFF)
        Line Input #intFF, strTekst
        arrTekst() = Split(strTekst, ",")
        .ListItems.Add intCount, , arrTekst(0)
        .ListItems(intCount).SubItems(1) = arrTekst(1)
        .ListItems(intCount).SubItems(2) = arrTekst(2)
        intCount = intCount + 1
      Loop
    Close #1
  End With
End Sub

God fornøjelse :)
Avatar billede tubber Juniormester
23. marts 2002 - 10:44 #10
Godt gået kaffe :O)
syntes du har fortjent de point, for nu har jeg også lært lidt :O)

Tubber
Avatar billede kaffe Nybegynder
23. marts 2002 - 12:50 #11
Tak tubber...
doctorpurple> kan du bruge det?
Avatar billede doctorpurple Nybegynder
23. marts 2002 - 16:40 #12
nu har kaffe fået point da jeg har et udemærket program nu... jeg takker
Avatar billede kaffe Nybegynder
23. marts 2002 - 21:53 #13
Selvtak - og tak for points :)
Avatar billede doctorpurple Nybegynder
25. marts 2002 - 09:56 #14
jeg mangler stadig en funktion der printer boxen i den ( pæne form ) det der tekst doc er ikke sat pænt op lige som boxen er.... jeg vil håbe du har lyst til at vise mig det jeg har sku lært noget af det her.. takker på forhånd og er det muligt at få overskrifterne med i udskriften
Avatar billede kaffe Nybegynder
27. marts 2002 - 22:57 #15
Håber du kan bruge det her. Du er selv nødt til at lege lidt med opsætningen.

Private Sub Command4_Click()
  ' Udskriv tekst fra listview
  Dim intLinieNr As Integer
  Dim intSideNr As Integer
  Dim intAntalLinier As Integer
  Dim intCounter As Integer
  Dim intKolonne As Integer
  Const intStarty As Integer = 20
  Dim arrKol(2) As Integer
  ' Kolonnernes startposition i millimeter
  arrKol(0) = 20
  arrKol(1) = 50
  arrKol(2) = 100
  ' Sæt printer til millimeter
  Printer.ScaleMode = vbMillimeters
  Printer.Scale (0, 0)-(210, 297)
  ' Starter på side 1
  intSideNr = 1
  ' Hvor mange linier skal der udskrives i alt
  intAntalLinier = ListView1.ListItems.Count
  intLinieNr = 1
  For intCounter = 1 To intAntalLinier
    ' Er vi øverst på siden?
    If intLinieNr = 1 Then
      ' Så skriv kolonneoverskrifter med fed skrift
      Printer.Font.Bold = True
      For intKolonne = 0 To 2
        Printer.CurrentY = intStarty - 5
        Printer.CurrentX = arrKol(intKolonne)
        Printer.Print ListView1.ColumnHeaders(intKolonne + 1).Text
      Next intKolonne
      Printer.Font.Bold = False
    End If
    Printer.Line (20, intStarty)-(200, intStarty)
    ' Skriv 70 liniers tekst under kolonneoverskrifterne
    Printer.CurrentY = intStarty + (intLinieNr * 3)
    Printer.CurrentX = arrKol(0)
    Printer.Print ListView1.ListItems(intCounter).Text
    For intKolonne = 1 To 2
      Printer.CurrentY = intStarty + (intLinieNr * 3)
      Printer.CurrentX = arrKol(intKolonne)
      Printer.Print ListView1.ListItems(intCounter).SubItems(intKolonne)
    Next intKolonne
    intLinieNr = intLinieNr + 1
    ' Skifte til næste side?
    If intLinieNr = 71 Then
      intLinieNr = 1
      Printer.CurrentY = 290
      Printer.CurrentX = 105
      Printer.Print "Side " & intSideNr
      intSideNr = intSideNr + 1
      Printer.NewPage
    End If
  Next intCounter
  ' Hvis udskriften stopper midt på en side kommer
  ' sidenummer ikke med...
  If intLinieNr < 71 Then
    Printer.CurrentY = 290
    Printer.CurrentX = 105
    Printer.Print "Side " & intSideNr
  End If
  ' Husk enddoc ellers sker der ikke så meget...
  Printer.EndDoc
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester