Показать полную графическую версию : Visual Basic 2008
Страниц :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
15]
16
17
18
У меня стоит Aero. »
Разработчики вдоль и поперёк написали все функции в своей оболочке. По этому добились таких результатов. Любое окно запущенное под данной оболочкой ищет системные библиотеки, а они уже переписаны и выходит они строятся по новым правилам.
За прозрачность отвечает Me.Opacity, значения от 0 до 1.
http://s41.radikal.ru/i091/0810/26/c623c3d03b7d.jpg
Вот пример : http://www.gotdotnet.ru/Forums/Windows/581428.aspx
А тут их куча, только с переводом траблы : http://weblogs.asp.net/kennykerr/archive/2006/08/10/Windows-Vista-for-Developers-_1320_-Part-3-_1320_-The-Desktop-Window-Manager.aspx
+ немогу добавить объект на прозрачную область. Нет, он добавляется, но некорректно.
Uzvern, класные ссылки и примеры. :clapping:
Возможно глюки GDI+. Тут уже ничего не сделаешь, разве что свою реализацию писать.
Admiral, ни одного слова не понял, но спасибо.
Uzvern, в приведённой статье сказано Therefore, if you are serious about transparency and translucency on Windows you need to use GDI+ (or some other graphics library). Before we look at GDI+ however, let us see what can be done with good old GDI. >> (http://weblogs.asp.net/kennykerr/archive/2006/08/10/Windows-Vista-for-Developers-_1320_-Part-3-_1320_-The-Desktop-Window-Manager.aspx)
то есть рассмотрен ранее вопрос с применением GDI+ или другой (в том числе и самостоятельной написанной). Так же указанно, что можно организовать и с помощью "старой доброй GDI".
Без кода по вопросу + немогу добавить объект на прозрачную область. Нет, он добавляется, но некорректно. » можно говорить только в общих чертах, ведь даже не указанна с помощью какой технологии (GDI, GDI+, etc) отрисована форма c объектом. Я высказал своё предположение, на случай если это GDI+, так как даже в базовых примерах бывают глюки отображения.
Помогите запустить следующую программу, находясь в документе Word. Заранее благодарю.
Option Explicit
Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Sub Form_Load()
Const TEXT = "Привет, я текст!"
Dim hRgn As Long
Font.Name = "Times New Roman"
Font.Bold = True
Font.Size = 70
Width = TextWidth(TEXT)
Height = TextHeight(TEXT)
BeginPath hdc
Print TEXT
EndPath hdc
hRgn = PathToRegion(hdc)
SetWindowRgn hWnd, hRgn, False
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
End Sub
Delirium
08-10-2008, 01:21
Во первых, нет описания функций TextWidth, TextHeight. Во вторых, не совсем понятен смысл данного кода.
Delirium Нашел эту процедуру в И-нете "Вывод на экран текста, форма приобретает вид текста". Пытался ее вставлять в форму, но ее делит на процедуру (макрос), первую часть до "Private Sub..." отделяет. Не знаю как обьединить. Хотя и не уверен, но думаю, что фнкции TextWidth, TextHeight смогу расписать. Программированием уже лет 12-ть не занимался, хотя в VBA совсем иной принцип заложен.
Delirium
08-10-2008, 01:56
первую часть до "Private Sub..." отделяет »
Так и должно быть, в VBA option explicit означает определение глобальных переменных.
Private Sub Form_Load() »
Процедура вызывалась в Visual Basic (не VBA), и срабатывала при загрузке формы. В Word ее запустить не удастся.
Delirium , и что делать, ни как нельзя приспособить? вроде бы программа была расписана для VBA. Уж больно идея понравилась.
Идея в том, что хочу разместить рисунок и рядом с ним текст, который изменялся бы при выделении разных областей рисунка. Все это хочеться разместить просто на листе, либо на форме развернутой во весь экран.
Delirium
08-10-2008, 02:31
В смысле что то типа picker'а? Т.е. написал я текст, а потом ткнул мышкой, и текст стал цвета пикселя на картинке? Можешь пример хоть примерно нарисовать?
Помогите отловить сообщение Windows о подтверждении удаления файла/папки и нажать кнопку "Нет".
Delirium
29-10-2008, 01:38
Uzvern, а в когда оно появляется? Имеется в виду, в вашей программе или где? Это же по сути простой MessageBox с vbYesNo.
сообщение Windows »
Не в моей программе, а в самом Windows когда удаляешь какой - либо файл.
Delirium
30-10-2008, 02:22
хмм. а отслеживать необходимо через свою программу? Единственный вариант, который приходит в голову - отслеживать появление окон с заголовком "подтверждение удаления файла" и программно нажимать "нет". AutoIT работает по такому принципу.
Uzvern, есть исходник на С++ http://ja.pastebin.ca/raw/890971
http://i061.radikal.ru/0810/ae/32cbe60f23e9.png,
а в теме есть примеры использования WinApi функций в VB.NET, которые присутствуют в данном C++ исходнике.
Данную защиту можно обойти использовав не Експлоре, например через FAR, TotalCommander и другие файловые менеджеры удалить файл всё же получится.
Admiral, а обход мне неочень интересен, т.к. человек все-равно до этого не додумается. Щас буду пробовать переводить код с С++ в VB :)
Доброго времени суток, Уважаемые обитатели форума!
Я начал изучать VB совсем недавно, примерно 1,5 месяца назад.
Поиск на форуме мне к сожалению не помог, т.к. проблема видимо слишком простая и скорее всего не обсуждалась. А суть проблемы такова: нужно при нажатии кнопки Button2 сохранить данные из ListBox1в файл с расширением *.xls, ну или хотя бы в *.txt
На машине установлено:
Visual Studio 2008 Express, а в качестве офисного приложения OpenOffice 3.0 (MSOffice нет.)
Собственно, если нет прямой возможности сохранить в *.xls, текстовый файл вполне подойдет.
Вот текст приложения:
Public Class Form2
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'ЗАПОЛНЕНИЕ ФОРМЫ СИСТЕМНОГО БЛОКА
'Системный блок
ListBox1.Items.Add(GroupBox7.Text)
ListBox1.Items.Add(Label4.Text)
ListBox1.Items.Add(TextBox4.Text)
ListBox1.Items.Add(Label17.Text)
ListBox1.Items.Add(TextBox5.Text)
'Материнская плата
ListBox1.Items.Add(GroupBox1.Text)
ListBox1.Items.Add(Label5.Text)
ListBox1.Items.Add(ComboBox1.Text)
ListBox1.Items.Add(Label6.Text)
ListBox1.Items.Add(TextBox7.Text)
'Блок питания
ListBox1.Items.Add(GroupBox2.Text)
ListBox1.Items.Add(Label8.Text)
ListBox1.Items.Add(ComboBox2.Text)
ListBox1.Items.Add(Label7.Text)
ListBox1.Items.Add(TextBox9.Text)
'HDD
ListBox1.Items.Add(GroupBox3.Text)
ListBox1.Items.Add(Label10.Text)
ListBox1.Items.Add(ComboBox3.Text)
ListBox1.Items.Add(Label9.Text)
ListBox1.Items.Add(TextBox11.Text)
'FDD
ListBox1.Items.Add(GroupBox4.Text)
ListBox1.Items.Add(Label12.Text)
ListBox1.Items.Add(ComboBox4.Text)
ListBox1.Items.Add(Label11.Text)
ListBox1.Items.Add(TextBox13.Text)
'DVD
ListBox1.Items.Add(GroupBox5.Text)
ListBox1.Items.Add(Label14.Text)
ListBox1.Items.Add(ComboBox5.Text)
ListBox1.Items.Add(Label13.Text)
ListBox1.Items.Add(TextBox15.Text)
'Сетевая карта
ListBox1.Items.Add(GroupBox6.Text)
ListBox1.Items.Add(Label16.Text)
ListBox1.Items.Add(ComboBox6.Text)
ListBox1.Items.Add(Label15.Text)
ListBox1.Items.Add(TextBox17.Text)
'Видеокарта
ListBox1.Items.Add(GroupBox7.Text)
ListBox1.Items.Add(Label18.Text)
ListBox1.Items.Add(ComboBox7.Text)
ListBox1.Items.Add(Label19.Text)
ListBox1.Items.Add(TextBox19.Text)
'Очистка заполненных строк
TextBox4.Clear()
TextBox5.Clear()
TextBox7.Clear()
TextBox9.Clear()
TextBox11.Clear()
TextBox13.Clear()
TextBox15.Clear()
TextBox17.Clear()
TextBox19.Clear()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Заполнение формы заказа
ListBox1.Items.Add(Label1.Text)
ListBox1.Items.Add(TextBox1.Text)
ListBox1.Items.Add(Label2.Text)
ListBox1.Items.Add(TextBox2.Text)
ListBox1.Items.Add(Label3.Text)
ListBox1.Items.Add(TextBox3.Text)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
End Sub
Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
End Sub
Private Sub GroupBox8_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox8.Enter
End Sub
End Class
Спасибо.
paul_p, приветствую.
нужно при нажатии кнопки Button2 сохранить данные из ListBox1в файл с расширением *.xls»
на первый взгляд, если установка Excel не предусмотрена, всё вроде просто Creating an Excel spreadsheet XLS file direct from your .Net app with SpeadsheetGear (http://www.devdirect.com/ALL/spreadsheetgearfornet_SOLN_00010012.aspx) да вот только SpeadsheetGear стоит денег :(
ну или хотя бы в *.txt »
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim File As Integer = FreeFile()
FileOpen(File, "MyFile.txt", OpenMode.Append)
For i As Integer = 0 To ListBox1.Items.Count - 1
PrintLine(File, ListBox1.Items.Item(i))
Next i
FileClose(File)
End Sub
в теме уже было рассказано про сохранение в файл.
А компоненты GroupBox1, GroupBox2, .., GroupBox7, TextBox, Label1, Label2, .., Label19, TextBox1, TextBox2, .., TextBox19 нужны именно в таком количестве?
Между прочим код можно немного преобразовать с помощью операторов With и End With что уже было показано (http://forum.oszone.net/post-836663.html#post836663) в теме
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'ЗАПОЛНЕНИЕ ФОРМЫ СИСТЕМНОГО БЛОКА
'Системный блок
With ListBox1.Items
.Add(GroupBox7.Text)
.Add(Label4.Text)
.Add(TextBox4.Text)
.Add(Label17.Text)
.Add(TextBox5.Text)
'Материнская плата
.Add(GroupBox1.Text)
.Add(Label5.Text)
.Add(ComboBox1.Text)
.Add(Label6.Text)
.Add(TextBox7.Text)
'Блок питания
.Add(GroupBox2.Text)
.Add(Label8.Text)
.Add(ComboBox2.Text)
.Add(Label7.Text)
.Add(TextBox9.Text)
'HDD
.Add(GroupBox3.Text)
.Add(Label10.Text)
.Add(ComboBox3.Text)
.Add(Label9.Text)
.Add(TextBox11.Text)
'FDD
.Add(GroupBox4.Text)
.Add(Label12.Text)
.Add(ComboBox4.Text)
.Add(Label11.Text)
.Add(TextBox13.Text)
'DVD
.Add(GroupBox5.Text)
.Add(Label14.Text)
.Add(ComboBox5.Text)
.Add(Label13.Text)
.Add(TextBox15.Text)
'Сетевая карта
.Add(GroupBox6.Text)
.Add(Label16.Text)
.Add(ComboBox6.Text)
.Add(Label15.Text)
.Add(TextBox17.Text)
'Видеокарта
.Add(GroupBox7.Text)
.Add(Label18.Text)
.Add(ComboBox7.Text)
.Add(Label19.Text)
.Add(TextBox19.Text)
'Очистка заполненных строк
End With
'...
End Sub
'...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Заполнение формы заказа
With ListBox1.Items
.Add(Label1.Text)
.Add(TextBox1.Text)
.Add(Label2.Text)
.Add(TextBox2.Text)
.Add(Label3.Text)
.Add(TextBox3.Text)
End With
End Sub
На форуме код рекомендуется помещать между тегами 'здесь код (http://forum.oszone.net/misc.php?do=bbcode#code) http://forum.oszone.net/images/editor/code.gif.
Admiral! Большое спасибо!
По всей видимости, я не совсем корректно воспользовался сервисом поиска (учту на будущее)
Тегом "code" тоже буду пользоваться обязательно, действительно удобно отделять код от текста.
Что же касается большого количества TextBox, то это обусловлено самой формой. Дело в том, что тот кто будет заполнять форму должен видеть все поля сразу, т.к. приходится их заполнять одновременно. А выбирать пункт из меню менее удобно, чем заполнять видимый.
Данная форма предназначена для многократного заполнения однотипной информации: №системного блока, серийный номер материнской платы и.т.д...
Немного доработал код сохранения в файл. Вот что получилось:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SaveFileDialog1.Filter = "Текстовые файлы (*.txt)|*.txt"
SaveFileDialog1.ShowDialog()
If SaveFileDialog1.FileName <> "" Then
FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
For i As Integer = 0 To ListBox1.Items.Count - 1
PrintLine(1, ListBox1.Items.Item(i)) 'копируем текст на диск
Next i
FileClose(1)
End If
End Sub
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.