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"
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!!
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!!
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!!
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!!??
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
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
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 :)
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
kan du ikke lige snide det på en E-mail MBG@GET2NET.DK
Synes godt om
Ny brugerNybegynder
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.