Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Ширина столбцов в DataGrid? Добавлено: 26.09.03 15:36  

Автор вопроса:  Atma | ICQ: 161504457 
1. Есть ли пример сохранения длин полей таблиц DataGrid в реестре? (Например пользователь сделал именения в разерах выводимых для нехо столбцов, и как это дело сохранять, чтобы внось при открытии формы он видел так как сделал изменения сам)
2. Как узнать количество столбцов в DataGrid каждой?  

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Irina_M



Вопросов: 4
Ответов: 10
 Профиль | | #1 Добавлено: 01.10.03 14:03

Вообще говоря, в VB есть стандартные функции для работы с реестром: GetSetting, SaveSetting, GetAllSettings и DeleteSetting. Но, поскольку они не дают возможности записи в любое место реестра, то я сохраняю ширину столбцов в таблице вот так:

Private Sub it_saveColumnsWidth(ByVal psFRegValue As String)

'

' Сохраняет ширину столбцов таблицы в реестре

' psFRegValue - полный путь к параметру реестра.

'

Dim j1 As Long 'Счетчик цикла

Dim lLastColumn As Long 'N последнего столбца

Dim sColumnsWidth As String 'Ширина столбцов

sColumnsWidth = ""

With Me.DataGrid1

lLastColumn = .Columns.Count - 1

For j1 = 0 To lLastColumn

sColumnsWidth = sColumnsWidth & Int(.Columns(j1).Width) & ","

Next

sColumnsWidth = Left$(sColumnsWidth, Len(sColumnsWidth) - 1)

End With

it_setRegStr psFRegValue, sColumnsWidth

End Sub

Ответить

Номер ответа: 2
Автор ответа:
 Irina_M



Вопросов: 4
Ответов: 10
 Профиль | | #2 Добавлено: 01.10.03 14:13

(продолжение ответа)

Здесь:

[code]

Private Function it_setRegStr(ByVal psFValueName As String, _
                              ByVal psValueData As String, _
                     Optional ByVal plRootHandle As EROOTKEY _
                                   = HKEY_CURRENT_USER) _
                 As Boolean
'
'  Устанавливает значение строкового параметра реестра
'  по заданным наименованию раздела и наименованию параметра реестра
'
'  Результат: fMore          - признак успешного завершения
'  Параметры: psFValueName   - полное наименование параметра реестра
'             psValueData    - значение строкового параметра
'             [plRootHandle] - указатель на корневой раздел
'
   Dim lAccessRights As Long   'Права доступа
   Dim lErrNom       As Long   'Код ошибки
   Dim lKeyHandle    As Long   'Указатель на раздел реестра
   Dim lLen          As Long   'Длина строки
   Dim lPos          As Long   'Позиция подстроки
   Dim lValueType    As Long   'Тип данных для параметра
   Dim sKeyName      As String 'Наименование раздела реестра
   Dim sValueName    As String 'Наименование параметра реестра
   
   lErrNom = 0
  
   If Right$(psFValueName, 1) = sBSlash Then
      lLen = Len(psFValueName)
      psFValueName = Left$(psFValueName, lLen - 1)
   End If
  
   lPos = InStrRev(psFValueName, sBSlash)
   If lPos > 0 Then
         sKeyName = Left$(psFValueName, lPos - 1)
         sValueName = Mid$(psFValueName, lPos + 1)
         lAccessRights = KEY_ALL_ACCESS
        
         lErrNom = RegOpenKeyEx(plRootHandle, sKeyName, 0&, _
                                 lAccessRights, lKeyHandle)
         If lErrNom Then
        
            lErrNom = it_createRegKey(plRootHandle, sKeyName, _
                                             lKeyHandle)
            If lErrNom = 0 Then
           
               lErrNom = RegOpenKeyEx(plRootHandle, sKeyName, 0&, _
                                       lAccessRights, lKeyHandle)
            End If
         End If
   Else
         sValueName = psFValueName
         lKeyHandle = plRootHandle
   End If
  
   If lErrNom = 0 Then
      lValueType = REG_SZ
     
      lPos = InStr(psValueData, "%")
      If lPos Then If InStr(lPos + 2, psValueData, "%") Then lValueType = REG_EXPAND_SZ
     
      lLen = Len(psValueData) + 1
      lErrNom = RegSetValueExStr(lKeyHandle, sValueName, _
                                  pNull, lValueType, psValueData, lLen)
   End If
  
   it_setRegStr = (lErrNom = 0)
   
End Function


[/code]

Ответить

Номер ответа: 3
Автор ответа:
 Irina_M



Вопросов: 4
Ответов: 10
 Профиль | | #3 Добавлено: 01.10.03 14:16

И, наконец:

 

Public Function it_createRegKey(plParentHandle As Long, _
                                psNewkeyName As String, _
                                plNewkeyHandle As Long, _
                       Optional pfExisted As Boolean = False, _
                       Optional ByVal plAccessRights As Long = KEY_ALL_ACCESS) _
                As Long
'
'  Создает раздел реестра
'
   Dim lDisposition As Long '1-создан новый,2-открыт существующий
   Dim lErrNom     As Long 'Код ошибки
   
   lErrNom = RegCreateKeyEx(plParentHandle, psNewkeyName, _
                               0&, sEmpty, _
                               REG_OPTION_NON_VOLATILE, _
                               plAccessRights, pNull, _
                               plNewkeyHandle, lDisposition)
   it_createRegKey = lErrNom
                                
   pfExisted = (lDisposition = REG_OPENED_EXISTING_KEY)
   
End Function

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам