HTML в форме

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

HTML в форме

Сообщение Akella » 21.09.2004 (Вт) 14:22

Добрые человеки отвектьте на ВОПРОСик.
У меня есть HTML-файл в котором находиться АНКЕТА.
КАК, да как мне этот файл вставить в форму и после
заполнения АНКЕТЫ сохранить данные в файл. Ну тоесть
взять данные из HTML файла.
ВСЕМ СПАСИБО. :wink:
Не бойся что не знаешь, бойся что не учишься.

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 21.09.2004 (Вт) 18:02

Уточни, что означает "вставить файл в форму"?
Страничку на форму вставить - используй WebBrowser
А если поля заполнить - открывай HTML через open filename as… for…
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 21.09.2004 (Вт) 18:32

Дополню также, что для считывания данных из полей формы на web-странице используеться Msicrosoft Html library(подключаеться в referencies)
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 22.09.2004 (Ср) 9:06

Спасибо за инфу, НО, Больше инфы мне бы непомешало бы:
Shurup'а, не тормози :wink: , вставить это значит (ПОМЕСТИТЬ не форме, Открыть формой, ЧТОБЫ HTML находился открытый на форме).
А
Код: Выделить всё
open filename as… for…
здесь не помощник.
И скажи поподробнее о WEBBrowser'е.
ANDLL, круто, пирсоеденил Msicrosoft Html Object library.
написал: Dim a As HTMLDocument
а дальше что делать ??? :roll:
Не бойся что не знаешь, бойся что не учишься.

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 22.09.2004 (Ср) 10:48

'Ссылки:
'C:\WINDOWS\System32\shdocvw.oca
'Компоненты:
'Microsoft Internet Controls (C:\WINDOWS\System32\shdocvw.dll)
'На форме WebBrowser1 и Command1

Private Sub Command1_Click()
    MsgBox (WebBrowser1.Document.All.txtName1.Value)
End Sub

Private Sub Form_Load()
    WebBrowser1.Navigate "about:blank"
    While WebBrowser1.Document Is Nothing
         DoEvents
    Wend
    WebBrowser1.Document.write "<input id=txtName1>"
End Sub

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 22.09.2004 (Ср) 15:10

Выполняешь в форм_лоаде то, что писал
marvan, вместо about:blank пишешь имя своего html-файла. Вместо WebBrowser1.Document.write пишешь Set a=WebBrowser.Document
Ясно?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 22.09.2004 (Ср) 15:19

2ANDLL
ну и зачем в этой задаче пользовать HTMLDocument, если я показал, как получить значение строки по её id (WebBrowser1.Document.All.txtName1.Value)

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 22.09.2004 (Ср) 16:17

marvan писал(а):2ANDLL
ну и зачем в этой задаче пользовать HTMLDocument, если я показал, как получить значение строки по её id (WebBrowser1.Document.All.txtName1.Value)
Затем, мой милый marvan, что
а) так понятней, ибо видны все свойства и методы объекта
б) вызывовы через vtable раз в десять быстрее, чем вызовы Invoke(как у тебя). А скорость, на мой взгляд, тоже кое-что играет.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 22.09.2004 (Ср) 17:11

а) так понятней, ибо видны все свойства и методы объекта

когда писал пример, сначала тоже использовал HTMLDocument, но потом убрал его, так как по сути это лишнее. Чем короче - тем понятней.
б) вызывовы через vtable раз в десять быстрее, чем вызовы Invoke(как у тебя). А скорость, на мой взгляд, тоже кое-что играет.

Если я всё правильно понял.
скорость равна!
Private Sub Command1_Click()
    Dim s As String
    Set tmr = New CTimingPC
    With WebBrowser1.document.All
    tmr.Reset
    For i = 1 To 10000
        s = .txtName1.Value
    Next
    MsgBox (tmr.sElapsed)
    End With
End Sub

Private Sub Command2_Click()
    Dim mDoc As MSHTML.HTMLDocument
    Dim s As String
    Set tmr = New CTimingPC
    
    Set mDoc = WebBrowser1.document
    With mDoc.All
    tmr.Reset
    For i = 1 To 10000
        s = .txtName1.Value
    Next
    MsgBox (tmr.sElapsed)
    End With
End Sub

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 22.09.2004 (Ср) 18:12

Вы, marvan, видимо забыли про Option Explicit. Но суть не в этом. Вы опять же используете Invoke.
И что Вы скажете на это(чистый vtable):
Код: Выделить всё
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Command1_Click()
    Dim s As String, i As Long, o As Object
    SelectTime
        For i = 1 To 100000
        Set o = WebBrowser1.document.All.txtName1
            s = o.Value
        Next
    MsgBox SelectTime
End Sub

Private Sub Command2_Click()
    Dim mDoc As MSHTML.HTMLDocument
    Dim s As String, i As Long, o As IHTMLInputTextElement
    Set mDoc = WebBrowser1.document
    SelectTime
    For i = 1 To 100000
        Set o = mDoc.getElementById("txtName1")
        s = o.Value
    Next
    MsgBox (SelectTime)
End Sub

Private Function SelectTime() As Long
Static nOld As Long
Dim nNew As Long
nNew = GetTickCount
SelectTime = nNew - nOld
nOld = nNew
End Function

Private Sub Form_Load()
WebBrowser1.Navigate "about:<input type=text id=""txtName1"">"
End Sub


Или это:

Код: Выделить всё
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Command1_Click()
    Dim s As String, i As Long, o As Object
    Set o = WebBrowser1.document.All.txtName1
    SelectTime
        For i = 1 To 100000
            s = o.Value
        Next
    MsgBox SelectTime
End Sub

Private Sub Command2_Click()
    Dim mDoc As MSHTML.HTMLDocument
    Dim s As String, i As Long, o As IHTMLInputTextElement
    Set mDoc = WebBrowser1.document
    Set o = mDoc.getElementById("txtName1")
    SelectTime
    For i = 1 To 100000
        s = o.Value
    Next
    MsgBox (SelectTime)
End Sub

Private Function SelectTime() As Long
Static nOld As Long
Dim nNew As Long
nNew = GetTickCount
SelectTime = nNew - nOld
nOld = nNew
End Function

Private Sub Form_Load()
WebBrowser1.Navigate "about:<input type=text id=""txtName1"">"
End Sub

:?: :arrow:
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 23.09.2004 (Чт) 10:07

вот и вышло неплохое продолжение этого топика относительно седьмого вопроса.
Итак в порядке роста производительности

s=WebBrowser1.document.All.txtName1.Value
...
Dim mDoc As MSHTML.HTMLDocument
Dim o As HTMLInputTextElement
Set mDoc = WebBrowser1.document
Set o = mDoc.getElementById("txtName1")
s = o.Value
...
Dim mDoc As MSHTML.HTMLDocument
Dim o As IHTMLInputTextElement
Set mDoc = WebBrowser1.document
Set o = mDoc.getElementById("txtName1")
s = o.Value

т.е.
Set o = mDoc.getElementById("txtName1") быстрее чем
Set o = mDoc.All.txtName1
и обращение к
IHTMLInputTextElement быстрее (почти в 6 раз для s = o.Value) чем к
HTMLInputTextElement
что есть загадка - ведь IHTMLInputTextElement сам работает с HTMLInputTextElement?

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 23.09.2004 (Чт) 13:56

marvan писал(а):т.е.
Set o = mDoc.getElementById("txtName1") быстрее чем
Set o = mDoc.All.txtName1

А я про что говорил?
marvan писал(а):IHTMLInputTextElement быстрее (почти в 6 раз для s = o.Value) чем к
HTMLInputTextElement
что есть загадка - ведь IHTMLInputTextElement сам работает с HTMLInputTextElement?


Гм. Tiomitch, я в трансе. В декомпилированом варианте tlb присутствует некий interface IHTMLInputElement и точно такой же dispinterface. Названия у них одинаковые, а вот метлды разные! И есть еще некий dipsinterface DispIHTMLInputFileElement. У которого еще один набор методов... При этом coclass HTMLInputTextElement наследует всем трем этим интерфейсам. В общем я слабо въезжаю...
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: С.Т., Google-бот и гости: 4

    TopList