Avatar billede Marting Forsker
03. marts 2004 - 22:05 Der er 16 kommentarer og
1 løsning

hvordan skriver jeg direkte i hvide felter i en MSFlexGrid??

Hej

hvordan kan jeg skrive direkte i hvide felter  MSFlexGrid?? og hvordan giver jeg de grå felter navne?

Håber i kan hjælp mig!
Avatar billede lokespas Nybegynder
04. marts 2004 - 09:29 #1
dette er en enkelt måde at gøre det på:
MSHFlexGrid1.TextMatrix(0, 1) = "header"
MSHFlexGrid1.TextMatrix(1, 0) = "1"
MSHFlexGrid1.TextMatrix(2, 0) = "2"
MSHFlexGrid1.TextMatrix(1, 1) = "yada"
MSHFlexGrid1.TextMatrix(2, 1) = "yada"

men vil du gøre det i designtime eller runtime???
Avatar billede lokespas Nybegynder
04. marts 2004 - 09:36 #2
hvis det er i runtime bliver du nød til at bruge en textbox og placerer den oven på det hvide felt du vil skrive i !!
Avatar billede lokespas Nybegynder
04. marts 2004 - 10:05 #3
her er lidt at lege med.

'for at skrive i et flexgrid i runtime skal du bruge en textbox,
'du kan bruge de her to til at finde ud af hvor du klikker henne
'i flexgrid´et

MSFlexGrid1.MouseCol
MSFlexGrid1.MouseRow


'du skal huske at sætte højde og bredde textboxen i forhold
'til den aktuelle celle
textbox1.Top = MSFlexGrid1.Top + MSFlexGrid1.CellTop
textbox1.Left = MSFlexGrid1.Left + MSFlexGrid1.CellLeft
textbox1.Width = MSFlexGrid1.CellWidth - 10
textbox1.Height = MSFlexGrid1.CellHeight - 10
textbox1.Visible = True
textbox1.SetFocus
Avatar billede Marting Forsker
04. marts 2004 - 11:27 #4
hej

Min ide var at man skulle kunne skrive direkte i de hvide felter i runtime, i en MSFlexGrid eller i en lignede komponent!!
Næste lige som man skriver i de hvide felter i Excel!!
Avatar billede lokespas Nybegynder
04. marts 2004 - 11:34 #5
hvis du skal skrive direkte i MSFlexgrid bliver du nød til at bruge en textbox ellers skal du bruge en anden komponent..  tror nok at datagrid kan det!!
Avatar billede Marting Forsker
04. marts 2004 - 20:28 #6
ok nu har jeg fundet datagrid ved du hvordan den fungere ??
jeg er ved at lave et meget lille faktur program!!
jeg har fået skrevet i de grå felter i en MSHFlexGrid nu!!
Avatar billede lokespas Nybegynder
05. marts 2004 - 10:10 #7
jeg har aldrig rodet med datagrid men jeg kan hjælpe med flexgrid..
Avatar billede Marting Forsker
07. marts 2004 - 21:48 #8
hej
så er jeg tilbage igen!
jo tak det må du godt!! hjælpe mig med!!, det kunne være bedst hvis man kunne bevæge sig rundt ligesom i Excel!!, hvis jeg laver alle felterne fra starten i designtime!,  både lodrette og vandrette!! er det så ikke muligt bevæge sig rundt i felterne i runtime!! ligesom Excel!!??
Avatar billede lokespas Nybegynder
09. marts 2004 - 09:54 #9
her er lidt kode du kan kigge lidt pä:

Private Sub Form_Load()
Dim s As String

'header i toppen
s = "|<Col 1|^Col 2|<Col 3|>Col 4"
'< = text til venstre
'^ = text i midten
'> = text til höjre

'header til venstre
s = s + ";|Row 1|Row 2|Row 3|Row 4"

MSHFlexGrid1.FormatString = s

Text1.TabStop = False
Text1.BorderStyle = 0

MSHFlexGrid1.TabStop = False
MSHFlexGrid1.FocusRect = flexFocusHeavy

End Sub

Private Sub MSHFlexGrid1_DblClick()

With MSHFlexGrid1
Text1.Width = .CellWidth
Text1.Height = .CellHeight
Text1.Left = .CellLeft + .Left - 10
Text1.Top = .CellTop + .Top - 10
Text1.Visible = True
Text1.Text = .Text
'SendKeys "{END}"
Text1.SetFocus
End With
End Sub

Private Sub MSHFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)

With MSHFlexGrid1

Select Case KeyCode
Case 37  'pil ned
Case 38  'pil op
Case 40  'venstre pile tast
Case 39 'höjre pile tast
Case 13 'Enter
Case 33 'side ned
Case 34 'side op
Case 36 'home
Case 35 'End

Case Shift = vbShiftMask And 9 'shift + tab
If .Col > 1 Then
    .Col = .Col - 1
ElseIf .Row > 1 Then
    .Col = .Cols - 1
    .Row = .Row - 1
End If

Case 9 'tab
If .Col < .Cols - 1 Then
    .Col = .Col + 1
ElseIf .Col = .Cols - 1 And .Row < .Rows - 1 Then
    .Col = 1
    .Row = .Row + 1
End If

Case Else

Text1.Width = .CellWidth
Text1.Height = .CellHeight
Text1.Left = .CellLeft + .Left - 10
Text1.Top = .CellTop + .Top - 10
Text1.Visible = True
Text1.Text = .Text
SendKeys "{END}"
Text1.SetFocus

End Select

End With
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)

With MSHFlexGrid1

Select Case KeyCode

Case 37  'venstre pile tast
.Text = Text1.Text
.SetFocus


If .Col > 1 Then
    .Col = .Col - 1
ElseIf .Row > 1 Then
    .Col = .Cols - 1
    .Row = .Row - 1
End If
Case 38  'opad pile tast

.SetFocus
.Text = Text1.Text

If .Row > 1 Then
    .Row = .Row - 1
End If
Case 40  'nedad pile tast
.SetFocus
.Text = Text1.Text

If .Row < .Rows - 1 Then
    .Row = .Row + 1
End If

Case 39 'højre pile tast

.SetFocus
.Text = Text1.Text

If .Col < .Cols - 1 Then
    .Col = .Col + 1
ElseIf .Col = .Cols - 1 And .Row < .Rows - 1 Then
    .Col = 1
    .Row = .Row + 1
End If

Case Shift = vbShiftMask And 9 'shift og tab

.SetFocus
.Text = Text1.Text
   
If .Col > 1 Then
    .Col = .Col - 1
ElseIf .Row > 1 Then
    .Col = .Cols - 1
    .Row = .Row - 1
End If

Case 9 'tab
.SetFocus
.Text = Text1.Text

If .Col < .Cols - 1 Then
    .Col = .Col + 1
ElseIf .Col = .Cols - 1 And .Row < .Rows - 1 Then
    .Col = 1
    .Row = .Row + 1
End If
Case Else

.Text = Text1.Text

End Select
End With
End Sub
Avatar billede lokespas Nybegynder
09. marts 2004 - 09:56 #10
du skal smide  en textbox der hedder Text1 og et MSHFlexgrid der hedder MSHFlexGrid1 pä formen!
Avatar billede lokespas Nybegynder
11. marts 2004 - 11:50 #11
har ændret lidt her og der, det kører lidt mere flydene

Private Sub Form_Load()
Dim s As String

'header i toppen
s = "|<  Col 1  |^  Col 2  |<  Col 3  |>  Col 4  "
'< = text til venstre
'^ = text i midten
'> = text til höjre

'header til venstre
s = s + ";"
For i = 1 To 500
s = s & "| " & CStr(i)
Next i


MSHFlexGrid1.FormatString = s

Text1.TabStop = False
Text1.BorderStyle = 0

MSHFlexGrid1.TabStop = False
MSHFlexGrid1.FocusRect = flexFocusLight
MSHFlexGrid1.HighLight = flexHighlightNever
bTab = False
End Sub


Private Sub MSHFlexGrid1_DblClick()
MSHFlexGrid1_KeyPress 32
End Sub

Private Sub MSHFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)

With MSHFlexGrid1

    Select Case KeyCode
        Case Shift = vbShiftMask And 9 'shift + tab

            If .Col > 1 Then
                .Col = .Col - 1
            ElseIf .Row > 1 Then
                .Col = .Cols - 1
                .Row = .Row - 1
            End If
        Case 9 'tab

            If .Col < .Cols - 1 Then
                .Col = .Col + 1
            ElseIf .Col = .Cols - 1 And .Row < .Rows - 1 Then
                .Col = 1
                .Row = .Row + 1
            End If
        Case Else
    End Select

End With

End Sub

Private Sub MSHFlexGrid1_KeyPress(KeyAscii As Integer)

    setTextbox

End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)

With MSHFlexGrid1

Select Case KeyCode
Case (Shift = vbShiftMask Or Shift = vbCtrlMask) And 37
Case (Shift = vbShiftMask Or Shift = vbCtrlMask) And 38
Case (Shift = vbShiftMask Or Shift = vbCtrlMask) And 39
Case (Shift = vbShiftMask Or Shift = vbCtrlMask) And 40

    Case 37  'venstre pile tast

        .Text = Text1.Text
        .SetFocus
        Text1.Visible = False

        If .Col > 1 Then
            .Col = .Col - 1
        ElseIf .Row > 1 Then
            .Col = .Cols - 1
            .Row = .Row - 1
        End If

            setTextbox

    Case 38  'opad pile tast

        .SetFocus
        .Text = Text1.Text
        Text1.Visible = False

        If .Row > 1 Then
            .Row = .Row - 1
        End If

            setTextbox

    Case 40  'nedad pile tast

        .SetFocus
        .Text = Text1.Text
        Text1.Visible = False

        If .Row < .Rows - 1 Then
            .Row = .Row + 1
        End If


            setTextbox
           
    Case 39 'højre pile tast

        .SetFocus
        .Text = Text1.Text
        Text1.Visible = False

        If .Col < .Cols - 1 Then
            .Col = .Col + 1
        ElseIf .Col = .Cols - 1 And .Row < .Rows - 1 Then
            .Col = 1
            .Row = .Row + 1
        End If

            setTextbox

    Case Shift = vbShiftMask And 9 'shift og tab

        .SetFocus
        .Text = Text1.Text
        Text1.Visible = False

        If .Col > 1 Then
            .Col = .Col - 1
        ElseIf .Row > 1 Then
            .Col = .Cols - 1
            .Row = .Row - 1
        End If


            setTextbox

    Case 9 'tab

        .SetFocus
        .Text = Text1.Text
        Text1.Visible = False

        If .Col < .Cols - 1 Then
            .Col = .Col + 1
        ElseIf .Col = .Cols - 1 And .Row < .Rows - 1 Then
            .Col = 1
            .Row = .Row + 1
        End If
           
            setTextbox

    Case Else

End Select

End With

End Sub

Private Sub Text1_Validate(Cancel As Boolean)
MSHFlexGrid1.Text = Text1.Text
End Sub
Private Function setTextbox()

    With MSHFlexGrid1
        Text1.Width = .CellWidth
        Text1.Height = .CellHeight
        Text1.Left = .CellLeft + .Left - 10
        Text1.Top = .CellTop + .Top - 10
        Text1.Text = .Text
        Text1.Visible = True
        Text1.SetFocus
    End With

End Function
Avatar billede Marting Forsker
03. april 2004 - 17:22 #12
tak for  hjælpen !! så er jeg tilbag igen!


når  jeg trykker med musen på et felt,  skal jeg trykke 2 gange på en  tast før den skrive et tegn?

jeg har lavet 4 kolonner i 

s = "|<Antal |<Beskrivelse |>Styk. pris |>pris "

hvor man ikke må skrive i pris kolonner!, den skal * Antal med Styk. pris og vis  i Pris resultat!
Avatar billede slapstick Nybegynder
13. april 2004 - 12:57 #13
istedet for at placere tekstbokse indover kontrollen kan man bruge extended listview control fra www.vcreations.net den er gratis og har en masse indbyggede ting som direkte editering og sorteringsmuligheder og en del andre ting :)
Avatar billede Marting Forsker
13. april 2004 - 21:43 #14
ok kan du ikke vise lidt kode ??

hvordan jeg gør det??
Avatar billede slapstick Nybegynder
13. april 2004 - 21:59 #15
jeg bruger to forskellige "events" til det
den første er når man klikker på et felt og kommer her

Private Sub LView_ItemClick(ByVal Item As MSComctlLib.IListItem, ByVal Button As Integer, ByVal SecondClick As Boolean)

If Button = vbLeftButton Then

        If SecondClick = True Then
       
               
                If LView.SubItemClicked = 1 Or LView.SubItemClicked = 2 Or LView.SubItemClicked = 7 Then
               
                    LView.ShowTextBox LView.SelectedItem.SubItems(LView.SubItemClicked)
               
                End If
                   
        End If
       
        If LView.SubItemClicked = 4 Or LView.SubItemClicked = 5 Or LView.SubItemClicked = 6 Then
       
            If LView.SubItemClicked = 4 Then
               
                LView.Clear
                LView.DropLines = 5
                LView.AddItem "0"
                LView.AddItem "1"
                LView.AddItem "2"
                LView.AddItem "3"
                LView.AddItem "4"
           
            ElseIf LView.SubItemClicked = 5 Then
                     
                LView.Clear
                LView.DropLines = 2
                LView.AddItem "yes"
                LView.AddItem "no"
           
            ElseIf LView.SubItemClicked = 6 Then
           
                LView.Clear
                LView.DropLines = 2
                LView.AddItem "yes"
                LView.AddItem "no"
           
            End If
           
            LView.ShowDropDown LView.SelectedItem.SubItems(LView.SubItemClicked)
       
        End If


End If

End Sub

det andet er når man klikker væk igen og kommer her

Private Sub LView_ChangeComplete(ByVal OrigText As String, ByVal NewText As String)
   
LView.SelectedItem.SubItems(LView.SubItemClicked) = NewText
   
   
End Sub

i mit eksempel foregår det sådan at der er nogle af felterne der skal kunne indtastes i og nogle af dem skal displaye en dropdown boks(kontrollen kan begge dele)
jeg vælger også det kun skal ske ved klik med venstre museknap

LView.ShowTextBox LView.SelectedItem.SubItems(LView.SubItemClicked) 'laver et tekstfelt

LView.ShowDropDown LView.SelectedItem.SubItems(LView.SubItemClicked) 'laver en drop down boks

jeg håber du ku bruge det
ellers har jeg lidt mere tid til at hjælpe imorgen

slapstick
Avatar billede Marting Forsker
14. april 2004 - 21:52 #16
hej og tak!

jeg har lave en ListView på Form1

og døbet name om til LView men det uder ikke??

hvorfor??
Avatar billede Marting Forsker
14. april 2004 - 22:00 #17
hej igen!!

kan du ikke lige snide det på en E-mail  MBG@GET2NET.DK
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