vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen & Antworten rund um sev-Komponenten
Re: sevDataGrid .RowCopy Methode im ListMode 
Autor: Callimero
Datum: 22.10.11 12:34

Hallo Dieter

Danke für deine Antwort. Hab dies zwischenzeitlich auch getan. Falls jemand das gleiche Problem hat hier der Code zum verschieben einer Datenzeile in einem sevDataGrid im ListMode über Button nach OBEN bzw. nach UNTEN :

Private Sub btnUp_Click()  
' nach oben verschieben
  With lstTarget
  ' Neue Datenzeile einfügen und mit den Daten (Spalten) der zuvor ausgewählten 
  ' Zeile füllen ..., "vRow - 1" ist dabei die Position an der die neue 
  ' Datenzeile eingefügt werden soll, nähmlich eine Zeile über der ausgewählten 
  ' Datenzeile
  .AddItem lstTarget.Text(vRow, 1) & vbTab & lstTarget.Text(vRow, 2) & vbTab & _
    lstTarget.Text(vRow, 3) & vbTab & lstTarget.Text(vRow, 4) & vbTab & _
    lstTarget.Text(vRow, 5) & vbTab & 
  lstTarget.Text(vRow, 6), vRow - 1
  ' in die neue Zeile wechseln
  .Row = vRow - 1
  ' alte Zeile löschen
  .DeleteRow vRow + 2
  End With
End Sub
Private Sub btnDown_Click()
' nach unten verschieben
  With lstTarget
    .AddItem lstTarget.Text(vRow, 1) & vbTab & lstTarget.Text(vRow, 2) & vbTab _
      & lstTarget.Text(vRow, 3) & vbTab & lstTarget.Text(vRow, 4) & vbTab & _
      lstTarget.Text(vRow, 5) & vbTab & lstTarget.Text(vRow, 6), vRow + 2
    .DeleteRow vRow
    .Row = vRow + 1
  End With
End Sub
vRow wird dabei beim RowChange Ereignis übergeben...

Private Sub lstTarget_RowChange(ByVal nRow As Long)
  vRow = nRow
  ' Button Ein- bzw. Ausschalten
  If nRow = 1 Then btnUp.Enabled = False Else btnUp.Enabled = True
  If nRow = lstTarget.Rows Then btnDown.Enabled = False Else btnDown.Enabled = _
    True
End Sub
Damit das ganze beim verschieben nicht "flackert", kann man mit dem nachfolgenden Code jedes Control einer Form - oder die Form selbst - "einfrieren", dann den Code ausführen und anschliessend das Control wieder freigeben.

Private Sub btnDown_Click()
  LockControl lstTarget, True
  ...
  LockControl lstTarget, False
End Sub
Dafür benötigt man diesen Funktion in einem Modul:

' Modulname modLockControl
 
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
  hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
 
Public Const WM_SETREDRAW = &HB
 
Public Function LockControl(objX As Object, bLock As Boolean)
  If bLock Then
    ' Disable the Redraw flag for the specified window
    Call SendMessage(objX.hwnd, WM_SETREDRAW, False, 0)
  Else
    ' Enable the Redraw flag for the specified window, and repaint
    Call SendMessage(objX.hwnd, WM_SETREDRAW, True, 0)
    objX.Refresh
  End If
End Function
Gruß Andreas
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
sevDataGrid .RowCopy Methode im ListMode2.126Callimero21.10.11 16:54
Re: sevDataGrid .RowCopy Methode im ListMode1.032ModeratorDieter21.10.11 19:14
Re: sevDataGrid .RowCopy Methode im ListMode1.206Callimero22.10.11 12:34

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel