[VB.NET] Leading Zero in Tijd

Pagina: 1
Acties:

  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 15-05 12:18
Ik heb een poosje verschillende mogelijkheden met Format() bekeken en uitgeprobeerd. Maar het lukt me maar niet om de tijd gewoon als 13:03 te krijgen, hij maakt er dan van: 13:3.
Op dit moment gebruik ik de volgende (basic) code.
code:
1
2
3
4
5
Dim intUur, intMinuut As Integer
Dim strTijd As String
intUur = Now.Hour
intMinuut = Now.Minute
strTijd = Format("HH:mm", intUur & ":" & intMinuut)


Iemand een suggestie ?

EDIT:

Tevens ook nog een andere vraag.
Ik maak gebruik in mijn programma van een ListView, in deze listview komen diverse items te staan. Wat ik graag zou willen is dat de antwoorden over meerdere 'lines' verdeelt worden. Kan dit uberhaupt met de ListView ?
Heb tevens ook de TreeView geprobeerd, hier kan je een item hoogte instellen, maar de items die verschijnen niet op de volgende regel.
code:
1
2
3
4
5
6
7
8
tvtest.Nodes.Add("Van: M.J. van Engelen" & vbCrLf & _
"Datum: 30-12-2004 om 12:59" & Chr(13) & "Bericht: Ik houd ook van jou ;)")
of
lvCallAntwoorden.Items.Add("Van: M.J. van Engelen" & vbCrLf & _
"Datum: 30-12-2004 om 12:59" & Chr(13) & "Bericht: Ik houd ook van jou ;)")
in de label geeft het wel het 'gewilde' effect:
 lblVraagResult.Text = "Van: M.J. van Engelen" & vbCrLf & _
 "Datum: 30-12-2004 om 12:59" & Chr(13) & "Bericht: Ik houd ook van jou ;)"

[ Voor 63% gewijzigd door MikevanEngelen op 30-12-2004 14:13 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Kijk een naar de DateTimeFormatInfo klasse

klik

Oops! Google Chrome could not find www.rijks%20museum.nl


  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

Visual Basic .NET:
1
Console.WriteLine(DateTime.Now.ToString("HH:mm"))

Zoiets :?

Wat jij doet zou je kunnen doen met
Visual Basic .NET:
1
strTijd=intUur.ToString("00")+":"+intMinuut.ToString("00")

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 15-05 12:18
Chief.NET schreef op donderdag 30 december 2004 @ 14:10:
Visual Basic .NET:
1
Console.WriteLine(DateTime.Now.ToString("HH:mm"))

Zoiets :?

Wat jij doet zou je kunnen doen met
Visual Basic .NET:
1
strTijd=intUur.ToString("00")+":"+intMinuut.ToString("00")
Dat laaste doet inderdaad wat ik wil, ik wist niet dat je dat kon doen met .ToString. Oftewel dat geval heeft dus een soort ingebouwde 'Format()' property inzich. Erg handig.
En bedankt voor het antwoorden :D

  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 15-05 12:18
Ik ben inmiddels een stapje verder met het probleem wat ik met de listview ondervond (eigelijk nog steeds ondervind.)
Het ziet er nu namelijk als volgende uit:
Afbeeldingslocatie: http://www.perfect-id.com/screen/screen_prlmlistview.jpg

Met de volgende code heb ik dit gerealiseerd:
code:
1
2
3
4
5
        ListView1.Columns.Add("chheader")
        ListView1.Items.Add("Van: M.J. van Engelen" & vbCrLf & "Datum: 30-12-2004
  om 12:51" _
        & vbCrLf & "Bericht: Dit is een heel lang bericht dat zich automatisch zou 
 moeten verplaatsen binnen de ")


Het is natuurlijk de bedoeling waar die blokjes staan. (Bij bericht) dat daar dus een enter komt.
Ik heb dit resultaat trouwens behaald door dat ding (de listview) als "Tile" te configureren, maar echt verder kom ik er ook niet bij.

  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 18:32
Nou in een listview kan je niet zomaar een enter geven, dat zou een nieuw item moeten maken.

Wat je dan moet doen is de tekst splitten op het aantal enters wat er in staat en zoveel keer een Items.Add() doen.

  • J2pc
  • Registratie: Oktober 2002
  • Niet online

J2pc

UT Tux Edition

punt 1. Om een newline (enter) in een string te geven, gebruik je een ecape-character [\] gevolgd door het newline character [n] zou dus [\n] worden. (zoek op msdn maar 's naar escape-characters)

punt2. denk ik dat 't wel kan, omdat er al een newline in zit. wat is ' vbCrLf ' ?

(moet er wel bijzeggen dat ik nog nooit met een listview gewerkt heb. Doe meer asp.net met datagrids)

[ Voor 20% gewijzigd door J2pc op 31-12-2004 09:30 ]

"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 18:32
vb Clear Line Feed

het is een soort van defined const als ik het goed heb (hoe noem je dat in VB ?). Maar volgens mij gaat dat echt niet werken (ook niet met \n oid) in een listview... toch ?

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

J2pc schreef op vrijdag 31 december 2004 @ 09:28:
punt 1. Om een newline (enter) in een string te geven, gebruik je een ecape-character [\] gevolgd door het newline character [n] zou dus [\n] worden. (zoek op msdn maar 's naar escape-characters)
VB.NET != C#.NET; dat werkt dus niet
punt2. denk ik dat 't wel kan, omdat er al een newline in zit. wat is ' vbCrLf ' ?

(moet er wel bijzeggen dat ik nog nooit met een listview gewerkt heb. Doe meer asp.net met datagrids)
(Microsoft.Visualbasic).vbCrLf is de code voor een carriage return en een line feed.
Dus in vb is dat Chr(13) en Chr(10) achter elkaar.
Maar aangezien het uit Microsoft.Visualbasic komt, is het eigenlijk een beetje achterhaald (het zijn vb6 codes).

In ieder geval is een ListView niet voor dit soort zaken bedoeld. Meer voor een overzicht zoals in Verkenner (weergave van de files en dirs enzo).
Wat jij wilt moet eerder in een RichTextBox o.i.d., maar dan moet je een hoop zelf in de gaten houden.

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • J2pc
  • Registratie: Oktober 2002
  • Niet online

J2pc

UT Tux Edition

sorted.bits schreef op vrijdag 31 december 2004 @ 09:30:
vb Clear Line Feed

het is een soort van defined const als ik het goed heb (hoe noem je dat in VB ?). Maar volgens mij gaat dat echt niet werken (ook niet met \n oid) in een listview... toch ?
als ik 't voorbeeld zie denk ik van wel... de eerste keer (na de naam) is 't toch ook gelukt....
Moet 't trouwens voor het aan-mekaar plakken van strings over meerdere regels 't volgende zijn?
code:
1
2
String1 = "bla bla bla " & _
              "bla bla bla "


dat gebruik ik altijd...

over escape-characters gesproken, probeer maar 's een " (dubbele quote) in een string te krijgen.. da's niet gewoon \" neee, da's "" (2x dubbele quotes)...
Chief.NET schreef op vrijdag 31 december 2004 @ 09:35:
[...]

VB.NET != C#.NET; dat werkt dus niet
ik had 't uit de MSDN-general refrence... En volgens mij geld die voor alle .net talen (dacht ik)

[ Voor 20% gewijzigd door J2pc op 31-12-2004 09:39 ]

"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:23
In .NET heb je Environment.NewLine die je beter kunt gebruiken als je een NewLine wilt (ipv die vbCrLf VB constante).

In een (standaard) ListView kan je geen item maken dat meerdere lijnen omvat; misschien kan je wel een custom control zoeken die dat wel kan.

https://fgheysels.github.io/


  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 15-05 12:18
Misschien onlogisch, maar waarom doet hij dat de eerste keer dat dan wel ?

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

MikevanEngelen schreef op zaterdag 01 januari 2005 @ 22:38:
Misschien onlogisch, maar waarom doet hij dat de eerste keer dat dan wel ?
Dat vroeg ik me ook al af. Misschien een bug.
Het is iig niet de bedoeling van het een ListView.
J2pc schreef op vrijdag 31 december 2004 @ 09:35:
[...]

als ik 't voorbeeld zie denk ik van wel... de eerste keer (na de naam) is 't toch ook gelukt....
Moet 't trouwens voor het aan-mekaar plakken van strings over meerdere regels 't volgende zijn?
code:
1
2
String1 = "bla bla bla " & _
              "bla bla bla "


dat gebruik ik altijd...
In de code kan je zo regels code aan elkaar plakken. Maar dat heeft niets met het ListView-gebeuren te maken, toch :?
over escape-characters gesproken, probeer maar 's een " (dubbele quote) in een string te krijgen.. da's niet gewoon \" neee, da's "" (2x dubbele quotes)...

[...]

ik had 't uit de MSDN-general refrence... En volgens mij geld die voor alle .net talen (dacht ik)
Nope. \n en dergelijke werken niet in VB.NET en zijn typisch voor C#/C++/etc -talen.
Ik vind het persoonlijk erg irritant dat een normale string er anders uitziet dan als ik 'm invoer.
Er wordt als het ware gewoon een template/oid overheen gezet.

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 15-05 12:18
Maar heb je misschien anders een andere suggestie hoe ik dit probleem zou kunnen aanpakken ?
Ik probeer dus een helpdesk systeem te maken. Die listview dient voor de antwoorden, en logischer wijs wil ik een compleet selectable veld hebben per antwoord. Het aantal antwoorden is onbekend, dit komt uit de database.

Listview en Treeview zijn dus, blijkbaar, geen (goede) opties.
Is het anders mogelijk de Listview aan te passen dat je er labels in kan stoppen ? Dan kan ik namelijk gewoon 3 labels onder mekaar toevoegen in die listview, waar ik dan die data in laad ?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:23
MikevanEngelen schreef op zaterdag 01 januari 2005 @ 22:38:
Misschien onlogisch, maar waarom doet hij dat de eerste keer dat dan wel ?
Omdat je 'm dan in 'Tile' mode oid gezet hebt; in Details mode kan een ListView iig geen Items over meerdere 'rows' gaan tonen.
Als je dat toch wilt, zal je een andere control moeten zoeken (evt een 3rd party listview oid), of zal je zelf een control moeten bouwen.

https://fgheysels.github.io/


  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 15-05 12:18
whoami heb je evt tips of ebooks oid hoe je zelf controls maakt ?
of een bestaande .net control kan uitbreiden met de functionaliteit die ik nodig heb ?

edit: mede omdat ik dat dan voor de eerste keer zou doen, en ik niet precies weet waar ik dan zou moeten beginnen

[ Voor 28% gewijzigd door MikevanEngelen op 03-01-2005 00:50 ]


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
offtopic:
CR = carriage return. ;)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

MikevanEngelen schreef op zondag 02 januari 2005 @ 13:15:
Maar heb je misschien anders een andere suggestie hoe ik dit probleem zou kunnen aanpakken ?
Ik probeer dus een helpdesk systeem te maken. Die listview dient voor de antwoorden, en logischer wijs wil ik een compleet selectable veld hebben per antwoord. Het aantal antwoorden is onbekend, dit komt uit de database.

Listview en Treeview zijn dus, blijkbaar, geen (goede) opties.
Is het anders mogelijk de Listview aan te passen dat je er labels in kan stoppen ? Dan kan ik namelijk gewoon 3 labels onder mekaar toevoegen in die listview, waar ik dan die data in laad ?
Ik begrijp niet helemaal waar je dan met die Listview naar toegaat. Wil je alle antwoorden tegelijk laten zien?
Als het een Q&A is, dan kan je volgens mij beter voor een combinatie van Listviews gaan (Listview voor filter op onderwerp, Listview voor een lijstje met vragen) en een (Rich)TextBox voor het antwoord op de geselecteerde vraag.

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 15-05 12:18
Ik wil het volgende maken:
Afbeeldingslocatie: http://www.perfect-id.com/screen/screenshot-listview2.jpg

Het is de bedoeling dat een volledig antwoord per selectie beschikbaar is. (met daarin de datum, de naam van contactpersoon, en het berichtzelf).
Ook is dus de bedoeling dat ik in die listview 2x een enter mag plaatsen (dus niet 1x zoals in het screenshot te zien is).

Men selecteerd een antwoord, en daarna een bepaalde (onafhankelijke) actie hier door verrichten, bijvoorbeeld het antwoord aanpassen of verwijderen. Dit is echter puur toekomst verhaal. Het gaat mijn puur om het laten zien van de info. Dat ook lekker gemakkelijk dynamisch werkt.

EDIT: om in dit scherm te kijken heeft men al een helpdesk call aangeklikt. Hierna kan men alle antwoorden zien, en later besluiten om te antwoorden.
Het is dus niet duidelijk hoeveel antwoorden er zijn van te voren.

[ Voor 15% gewijzigd door MikevanEngelen op 04-01-2005 00:05 . Reden: toevoeging aan tekst ]


  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

MikevanEngelen schreef op dinsdag 04 januari 2005 @ 00:02:
Ik wil het volgende maken:
[afbeelding]

Het is de bedoeling dat een volledig antwoord per selectie beschikbaar is. (met daarin de datum, de naam van contactpersoon, en het berichtzelf).
Ook is dus de bedoeling dat ik in die listview 2x een enter mag plaatsen (dus niet 1x zoals in het screenshot te zien is).

Men selecteerd een antwoord, en daarna een bepaalde (onafhankelijke) actie hier door verrichten, bijvoorbeeld het antwoord aanpassen of verwijderen. Dit is echter puur toekomst verhaal. Het gaat mijn puur om het laten zien van de info. Dat ook lekker gemakkelijk dynamisch werkt.

EDIT: om in dit scherm te kijken heeft men al een helpdesk call aangeklikt. Hierna kan men alle antwoorden zien, en later besluiten om te antwoorden.
Het is dus niet duidelijk hoeveel antwoorden er zijn van te voren.
Als ik het dus goed begrijp heb je een berg vragen. Die heb je al uitgefilterd.
Je hebt nu alleen één vraag en meerdere antwoorden. Of het is een soort follow-up-gebeuren (aantal vraag/antwoorden naar één persoon heen en weer).

Persoonlijk zou ik dan toch voor de Eudora/Outlook-opzet gaan:
Je neemt een Listview waar je de eerste regel van het antwoord in zet (de "belangrijke" info als datum, afzender, onderwerp/De eerste zoveel karakters...).
Als je daar een antwoord van selecteert, dan zet je het echte antwoord in een RichTextbox (daar kan je ook wat meer in kwijt en kan je andere lettertypes e.d. in selecteren).

Je kan zo best snel door alle antwoorden heenlopen en als er lange antwoorden tussenzitten, leiden die niet af.
En je hoeft geen eigen Control te maken :) (da's pas echt lui).

Een eigen Control houdt in dat je gewoon overerft van iets (kan een Textbox zijn, of een UserControl, Form, Component, etc.; daar zijn een hoop dingen over te vinden.
Kijk anders even op www.codeproject.com voor uitgebreide info/voorbeelden/etc.

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 15-05 12:18
Nou mensen ik heb het opgelost.

Met de volgende code:

Hierbij kijk ik wat de breedte is van de listview (na het resizen vanwege het anchor). Om dat vervolgens als breedte in te stellen voor de TileSize property van de Listview.
Ik heb ook bij de listview "OwnerDraw = true" aangegeven bij propertys.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Sub doCallview()
        tcHelpdesk.SelectedIndex = 1

        'antwoorden scherm aanpassen (selectieveld)
        Try
            lvCallAntwoorden.Columns.Clear()
            Dim w As Integer
            w = lvCallAntwoorden.Size.Width
            lvCallAntwoorden.TileSize = New Size(w, 45)
        Catch ex As Exception
            System.Diagnostics.Debug.WriteLine(ex.Message)
        End Try
        lvCallAntwoorden.Items.Clear()

        lvCallAntwoorden.Items.Add("Van: M.J. van Engelen" & Chr(13) + Chr(10) & _
"Datum: 31-12-2004 om 14:00" & Chr(13) + Chr(10) & "Bericht: Antwoord 1")
        lvCallAntwoorden.Items.Add("Van: M.J. van Engelen" & Chr(13) + Chr(10) & _ 
"Datum: 02-01-2005 om 12:03" & Chr(13) + Chr(10) & "Bericht: Antwoord 2")
    End Sub


Als je verder geen code gebruikt, zal hij niets laten zien omdat je alles opnieuw moet defineren als je "OwnerDraw = true" gebruikt.
Hiervoor de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub ListView1_Drawitem(ByVal sender As Object, ByVal e As
System.Windows.Forms.DrawListViewItemEventArgs) Handles lvCallAntwoorden.DrawItem

        Dim g As Graphics = e.Graphics
        Dim s As String
        Dim br As Brush = SystemBrushes.WindowText
        Dim brBack As Brush
        Dim rDraw As Rectangle
        Dim bSelected As Boolean = CBool(e.State And DrawItemState.Selected)

        rDraw = e.Bounds
        rDraw.Inflate(-1, -1)

        If bSelected Then
            brBack = Brushes.LightBlue
            g.FillRectangle(Brushes.LightBlue, rDraw)
            g.DrawRectangle(Pens.Blue, rDraw)
        Else
            brBack = Brushes.White
            g.FillRectangle(brBack, e.Bounds)
        End If

        br = Nothing
        brBack = Nothing
        rDraw = Nothing
        Try
            s = lvCallAntwoorden.Items.Item(e.ItemIndex).Text
        Catch
            s = ""
        End Try

        g.DrawString(s, lvCallAntwoorden.Font, Brushes.Black, RectangleF.op_Implicit
(e.Bounds))
    End Sub


Dit ziet er als volgende uit:
Afbeeldingslocatie: http://www.perfect-id.com/screen/screenshot-listview3.jpg

Allemaal bedankt voor de antwoorden, en suggesties !

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

MikevanEngelen schreef op dinsdag 04 januari 2005 @ 14:00:
Nou mensen ik heb het opgelost.

Met de volgende code:

Hierbij kijk ik wat de breedte is van de listview (na het resizen vanwege het anchor). Om dat vervolgens als breedte in te stellen voor de TileSize property van de Listview.
Ik heb ook bij de listview "OwnerDraw = true" aangegeven bij propertys.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Sub doCallview()
        tcHelpdesk.SelectedIndex = 1

        'antwoorden scherm aanpassen (selectieveld)
        Try
            lvCallAntwoorden.Columns.Clear()
            Dim w As Integer
            w = lvCallAntwoorden.Size.Width
            lvCallAntwoorden.TileSize = New Size(w, 45)
        Catch ex As Exception
            System.Diagnostics.Debug.WriteLine(ex.Message)
        End Try
        lvCallAntwoorden.Items.Clear()

        lvCallAntwoorden.Items.Add("Van: M.J. van Engelen" & Chr(13) + Chr(10) & _
"Datum: 31-12-2004 om 14:00" & Chr(13) + Chr(10) & "Bericht: Antwoord 1")
        lvCallAntwoorden.Items.Add("Van: M.J. van Engelen" & Chr(13) + Chr(10) & _ 
"Datum: 02-01-2005 om 12:03" & Chr(13) + Chr(10) & "Bericht: Antwoord 2")
    End Sub


.....
Best mooie oplossing zo!
Maare,.... wat is/doet TileSize? Zegt me namelijk niets en zie ik ook niet in Index staan. :?
Is het VS 2005?

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • MikevanEngelen
  • Registratie: Mei 2001
  • Laatst online: 15-05 12:18
Het is inderdaad Visual Studio 2005, dus weet niet of het iets property is die bij .NET 2.0 hoort.
Echter de TileSize kan je aangeven hoe groot het geselecteerde stuk mag/kan zijn en dus ook hoeveel tekst hier kan staan.

Als je dus de .TileSize zou veranderen naar bijvoorbeeld 400(w) naar 16(h), dan kan je maar een item kwijt op een redelijke breedte. Je selectie die je dan doet, is gelijk aan een 'icoon' aanklikken. (in de verkenner)

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

MikevanEngelen schreef op dinsdag 04 januari 2005 @ 15:03:
Het is inderdaad Visual Studio 2005, dus weet niet of het iets property is die bij .NET 2.0 hoort.
Echter de TileSize kan je aangeven hoe groot het geselecteerde stuk mag/kan zijn en dus ook hoeveel tekst hier kan staan.

Als je dus de .TileSize zou veranderen naar bijvoorbeeld 400(w) naar 16(h), dan kan je maar een item kwijt op een redelijke breedte. Je selectie die je dan doet, is gelijk aan een 'icoon' aanklikken. (in de verkenner)
Dat vermoeden had ik al. Is dus typisch .NET 2.0. Heb ik alleen thuis om mee te spelen. :)

30Drie Web Design & IT Consultancy | Raven Consultancy Services

Pagina: 1