NT, такие хорошие примеры, спасибо.
Обязательно будут полезны. Конвертировались в VS2010.
Только библиотека для преобразования в pdf потребовала регистрации, напрягаться не стала.
MS Visual Studio 2010
MS Visual Studio 2010
Последний раз редактировалось OlgaI 28 ноя 2019, 18:09, всего редактировалось 1 раз.
Причина: test
Причина: test
MS Visual Studio 2010
Создается публикация для приложения, сборка выкладывается в локальной сети в общедоступное место на сервере. Приложение у пользователя работает в режиме автоматического обновления. Обновление запускается само при старте приложения, после обнаружения новой версии на сервере. Это выглядит как картинка поиска, потом вопрос, обновление доступно, обновить? Потом в окошке показан Bar, видно как происходит копирование, окошко исчезает и совершенно пустая пауза на несколько десятков секунд, затем неожиданно для пользователя запускается приложение. Можно ли установить свою заставку на место пустой паузы и как?
Заставка при обычном запуске приложения делается очень просто, а как сделать заставку для обновления?
Заставка при обычном запуске приложения делается очень просто, а как сделать заставку для обновления?
Последний раз редактировалось OlgaI 28 ноя 2019, 18:09, всего редактировалось 1 раз.
Причина: test
Причина: test
MS Visual Studio 2010
OlgaI писал(а):Source of the post
Тогда вместо одного структурного массива M, делаю 3 простых M1, M2, M3.
Пишу аналогичную процедуру выбора, которая ищет соответствующие элементы в массивах M1, M2, M3. И начальное присваивание:
Combobox1.DataSource = M1.clone
Combobox2.DataSource = M2.clone
Combobox3.DataSource = M3.clone
Запускаю. Список Combobox1 раскрывется, а списки Combobox2 и Combobox3 не раскрываются вообще. Решила что где-то ошибка, все возвращаю назад.
На другой день опять создаю новое окно, пишу все еще раз - опять точно так же не работает.
Немного разгрузился и посмотрел код.
Вы не правильно используете свойства DataSource для обьектов ComboBox i DataGridView.
Свойство DataSource расчитанo на загрузку обьектов типа DataTable.
Для ComboBox-ов загрузка массива еще проходит, только там "внутри в DataSource" будет использован указатель одного и того же массива.
Вы этот "пустячок" обходите методой Clone.
Но на DataGridView массив загружать в качестве DataSource - уже не правильно. Будет каша.
DataGridView на Clone не обращает внимания.
На DataGridView.DataSource жуть много чего заворочено.
Последний раз редактировалось NT 28 ноя 2019, 18:09, всего редактировалось 1 раз.
Причина: test
Причина: test
MS Visual Studio 2010
NT писал(а):Source of the post
Но на DataGridView массив загружать в качестве DataSource - уже не правильно. Будет каша.
DataGridView на Clone не обращает внимания.
На DataGridView.DataSource жуть много чего заворочено.
Спасибо.
А для одного нового столбца DataGridViewComboColumn можно загружать массив?
Может быть неприятности п.1 начались из-за этого? (он там был загружен при добавлении столбца)
Последний раз редактировалось OlgaI 28 ноя 2019, 18:09, всего редактировалось 1 раз.
Причина: test
Причина: test
MS Visual Studio 2010
Вот такие у меня процедуры по п. 1) проблемы с ComboBox. Все работает, но понадобилась _Combo1_0_MouseUp для разрешения проблемы ухода фокуса. И я не понимаю, прочему возникает проблема форматирования, которая решилась с помощью dgData_CellFormatting.
dgData - таблица DataGridView
dgData - таблица DataGridView
Последний раз редактировалось OlgaI 28 ноя 2019, 18:09, всего редактировалось 1 раз.
Причина: test
Причина: test
MS Visual Studio 2010
Сегодня я разобралась со всеми фокусами ComboBox. А ларчик просто открывался.
ComboBox и некоторые другие поля находятся в SplitContainer, который имеет такой же цвет, что и фон формы, и практически невидим, обнаруживается только по изменению формы указателя мыши на краю поля ComboBox, которое надо раздвинуть в ширину. А когда кликается мышкой ComboBox, фокус устанавливается не на нем, а на SplitContainer, и визуально это трудно заметить. Если до того в SplitContainer было сфокусировано текстовое поле TextBox на другой панели, и текст вводится с клавиатуры, то он вводится в TextBox, а не в ComboBox. И дальше тому подобное, и куда попало.
Проблема решается просто: на событиях MouseClick для элементов управления в SplitContainer'e пишем одну строчку вида:
If Not Sender.Focused then Sender.Focus()
И все.
Вот такое оно, визуальное программирование.
ComboBox и некоторые другие поля находятся в SplitContainer, который имеет такой же цвет, что и фон формы, и практически невидим, обнаруживается только по изменению формы указателя мыши на краю поля ComboBox, которое надо раздвинуть в ширину. А когда кликается мышкой ComboBox, фокус устанавливается не на нем, а на SplitContainer, и визуально это трудно заметить. Если до того в SplitContainer было сфокусировано текстовое поле TextBox на другой панели, и текст вводится с клавиатуры, то он вводится в TextBox, а не в ComboBox. И дальше тому подобное, и куда попало.
Проблема решается просто: на событиях MouseClick для элементов управления в SplitContainer'e пишем одну строчку вида:
If Not Sender.Focused then Sender.Focus()
И все.
Вот такое оно, визуальное программирование.
Последний раз редактировалось OlgaI 28 ноя 2019, 18:09, всего редактировалось 1 раз.
Причина: test
Причина: test
MS Visual Studio 2010
Для БД MS Access, в DAO было написано обновление ссылок для связанных таблиц из другого файла .mdb (диспетчер связанных таблиц):
Dim wrkArea As dao.Workspace ' рабочая область
Dim dbsBase As dao.Database ' база данных
Dim s As String = "" ' рабочая строка
Dim DAODBEngine_definst As dao.DBEngineClass = New dao.DBEngineClass
' создаем рабочую область
wrkArea = DAODBEngine_definst.CreateWorkspace("", "admin", "",dao.WorkspaceTypeEnum.dbUseJet)
' открываем базу данных
dbsBase = wrkArea.OpenDatabase(FileMdb)
s = ";DATABASE=" & ProdMdb
For i = 0 To dbsBase.TableDefs.Count - 1
If dbsBase.TableDefs(i).Name = "Table1" Then
dbsBase.TableDefs(i).Connect = s
dbsBase.TableDefs(i).RefreshLink()
End If
Next i
dbsBase.Close()
wrkArea.Close()
Можно ли это сделать в ADO.NET?
Dim wrkArea As dao.Workspace ' рабочая область
Dim dbsBase As dao.Database ' база данных
Dim s As String = "" ' рабочая строка
Dim DAODBEngine_definst As dao.DBEngineClass = New dao.DBEngineClass
' создаем рабочую область
wrkArea = DAODBEngine_definst.CreateWorkspace("", "admin", "",dao.WorkspaceTypeEnum.dbUseJet)
' открываем базу данных
dbsBase = wrkArea.OpenDatabase(FileMdb)
s = ";DATABASE=" & ProdMdb
For i = 0 To dbsBase.TableDefs.Count - 1
If dbsBase.TableDefs(i).Name = "Table1" Then
dbsBase.TableDefs(i).Connect = s
dbsBase.TableDefs(i).RefreshLink()
End If
Next i
dbsBase.Close()
wrkArea.Close()
Можно ли это сделать в ADO.NET?
Последний раз редактировалось OlgaI 28 ноя 2019, 18:09, всего редактировалось 1 раз.
Причина: test
Причина: test
MS Visual Studio 2010
Можно сделать обновления ссылок на внешние таблицы, используя COM, но не хочется из-за двух строчек включать в сборку 2 библиотеки Active-X. Неужели ничего нет в System.Data?
Ссылки на MS ActiveX Data Objects 2.8 Library Interop.ADODB.dll (msado15.dll)
MS ADO Ext. 2.8 for DDL and Secrurity Interop.ADOХ.dll (msadoх.dll)
Ссылки на MS ActiveX Data Objects 2.8 Library Interop.ADODB.dll (msado15.dll)
MS ADO Ext. 2.8 for DDL and Secrurity Interop.ADOХ.dll (msadoх.dll)
Код: Выбрать все
Try
Dim cnn As New ADODB.Connection
Dim adoxCat As ADOX.Catalog
Dim adoxTbl As ADOX.Table
adoxCat = New ADOX.Catalog
cnn.Open("Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source='" & FileMdb & "';")
adoxCat.ActiveConnection = cnn
For Each adoxTbl In adoxCat.Tables
' если таблица, связанная таблица JET
If adoxTbl.Type = "LINK" Then
adoxTbl.Properties("Jet OLEDB:Link Datasource").Value = ProdMdb
End If
Next
adoxCat = Nothing
adoxTbl = Nothing
cnn.Close()
Return True
Catch ex As Exception
MsgBoxE("RefreshConnectionDB: " & ex.Message)
Return False
End Try
Последний раз редактировалось OlgaI 28 ноя 2019, 18:09, всего редактировалось 1 раз.
Причина: test
Причина: test
Вернуться в «Computer Science»
Кто сейчас на форуме
Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 1 гость