Newsgroup: it.comp.lang.visual-basic
Titolo: Guida

VB6 SP5
Ho provato a realizzare un guida in diversi modi, dall'uso di file .chm ad 
.html e i risultati ottenuti non mi sono mai realmente piaciuti. Poi, ho 
provato con i file .rtf, scrivendone uno per ciascuna maschera e usando 
un'unica RichTextBox su una form dedicata per caricarli all'occorrenza.
Nonostante abbia dovuto rinunciare ai collegamenti ipertestuali, il 
risultato mi è piaciuto. Insomma, mi sembra tutto molto semplice e veloce da 
realizzare e mantenere. Ma vorrei sapere che ne pensate.
Ciao.
eSQueL

eSQueL ha scritto:

Io preferisco la guida in HTML perchè consente di aggiungere una serie
di funzioni che in RTF non avrei (una su tutte i link di cui parlavi).
Magari per visualizzarla potresti usare un WebBrowser control invece
della RichTextBox.
In ogni caso de gustibus :)
Nicola

 ha scritto nel messaggio 
news:49d0cc99$0$6819$5fc...@news.tiscali.it...

Grazie per il feedback :)
eSQueL 

 della RichTextBox.
E' la stessa soluzione che implemento io: file html, embedded nell'exe
(
vb.net
), visibile in un pannello a richiesta che contiene un webbroser
control.
Inoltre in questo modo ottimizzo anche la realizzazione del manuale, che
derivo da questi file html (uno per form) e aggiungendo nel .doc qualche
immagine, il sommario, etc
PaF

 da realizzare e mantenere. Ma vorrei sapere che ne pensate.
Io preferisco il classico file CHM (html compilato).
Effettuo un 'Print Screen' dello schermo,
ritaglio la maschera/e con un programma di grafica.
Uso un editor HTML visuale per comporre le pagine
(praticamente fai conto di realizzare un sito).
Utilizzando la Map per i pulsanti,
richiamo le altre Schermate.
Visualizzo i contenuti in un determinato Frame.
La stessa cosa la faccio per i menů,
simulandone anche il funzionamento.
Viene fuori una guida molto carina e
veloce da preparare.
Piů facile farlo che non spiegarlo!
Le pagine cosě ottenute le compilo con HTML WorkShop.
Poi metto un pulsantino con ? con cui richiamo le varie pagine,
mentre con F1 carico tutta la guida.
Dim m_HtmlHelp As HtmlHelp
Private Sub Form_Load()
    Set m_HtmlHelp = New HtmlHelp
    App.HelpFile = ""
    With m_HtmlHelp
        .hWnd = hWnd
        .HelpFile = App.Path + "\" + App.Title + ".chm"
    End With
End Sub
Private Sub Pulsante_Click()
    m_HtmlHelp.DisplayTopic "schermata1.html"
End Sub
La classe:
Private Enum HH_COMMAND
    HH_DISPLAY_TOPIC = &H0
    HH_HELP_FINDER = &H0
    HH_DISPLAY_TOC = &H1
    HH_DISPLAY_INDEX = &H2
    HH_DISPLAY_SEARCH = &H3
    HH_SET_WIN_TYPE = &H4
    HH_GET_WIN_TYPE = &H5
    HH_GET_WIN_HANDLE = &H6
    HH_GET_INFO_TYPES = &H7
    HH_SET_INFO_TYPES = &H8
    HH_SYNC = &H9
    HH_ADD_NAV_UI = &HA
    HH_ADD_BUTTON = &HB
    HH_GETBROWSER_APP = &HC
    HH_KEYWORD_LOOKUP = &HD
    HH_DISPLAY_TEXT_POPUP = &HE
    HH_HELP_CONTEXT = &HF
    HH_TP_HELP_CONTEXTMENU
    HH_TP_HELP_WM_HELP = &H11
    HH_CLOSE_ALL = &H12
    HH_ALINK_LOOKUP = &H13
End Enum
Private Type HH_IDPAIR
    dwControlId     As Long
    dwTopicId       As Long
End Type
Private Type RECT
    Left            As Long
    Top             As Long
    Right           As Long
    Bottom          As Long
End Type
Private Type POINTAPI
    X               As Long
    Y               As Long
End Type
Private Type tagHH_POPUP
    cbStruct        As Long
    hinst           As Long
    idString        As Long
    pszText         As String
    pt              As POINTAPI
    clrForeground   As Long
    clrBackground   As Long
    rcMargins       As RECT
    pszFont         As String
End Type
Private Type tagHH_FTS_QUERY
    cbStruct        As Long
    fUniCodeStrings As Long
    pszSearchQuery  As String
    iProximity      As Long
    fStemmedSearch  As Long
    fTitleOnly      As Long
    fExecute        As Long
    pszWindow       As String
End Type
Private Declare Function GetDlgCtrlID Lib "user32" (ByVal hWnd As Long) As 
Long
Private Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal 
hWndCaller As Long, ByVal pszFile As String, ByVal uCommand As HH_COMMAND, 
dwData As Any) As Long
Private ids(0 To 1) As HH_IDPAIR
Public hWnd As Long, HelpFile As String
Public Function DisplayContext(Optional ByVal TopicNum As Long = 0&) As Long
    Dim sHelpFile As String
    sHelpFile = SoloCHM
    DisplayContext = HtmlHelp(hWnd, sHelpFile, HH_HELP_CONTEXT, ByVal 
TopicNum)
End Function
Public Function DisplayTopic(Optional ByVal TopicName As String = "") As 
Long
    Dim sHelpFile As String
    sHelpFile = SoloCHM
    If Len(TopicName) = 0 Then
        DisplayTopic = HtmlHelp(hWnd, sHelpFile, HH_DISPLAY_TOPIC, ByVal 0&)
    Else
        DisplayTopic = HtmlHelp(hWnd, sHelpFile, HH_DISPLAY_TOPIC, ByVal 
TopicName)
    End If
End Function
Public Function PopUp(ByVal Text As String) As Long
    Dim HH_POPUP As tagHH_POPUP, elForm As Form
    On Local Error Resume Next
    Set elForm = Screen.ActiveForm
    With HH_POPUP
        .cbStruct = Len(HH_POPUP)
        .clrBackground = -1
        .clrForeground = -1
        .pszFont = "Verdana,8"
        .pszText = Text
        .pt.X = (elForm.Left + 360) \ Screen.TwipsPerPixelX
        .pt.Y = (elForm.Top + (elForm.Height \ 2) + 240) \ 
Screen.TwipsPerPixelY
        .rcMargins.Bottom = -1
        .rcMargins.Left = -1
        .rcMargins.Right = -1
        .rcMargins.Top = -1
    End With
    PopUp = HtmlHelp(hWnd, HelpFile, HH_DISPLAY_TEXT_POPUP, HH_POPUP)
    Err = 0
End Function
Public Function DisplaySearch() As Long
    Dim sHelpFile As String, HH_FTS_QUERY As tagHH_FTS_QUERY
    With HH_FTS_QUERY
        .cbStruct = Len(HH_FTS_QUERY)
        .fStemmedSearch = 0&
        .fTitleOnly = 0&
        .fUniCodeStrings = 0&
        .iProximity = 0&
        .pszSearchQuery = ""
        .pszWindow = ""
        .fExecute = 1&
    End With
    sHelpFile = SoloCHM
    DisplaySearch = HtmlHelp(hWnd, sHelpFile, HH_DISPLAY_SEARCH, 
HH_FTS_QUERY)
End Function
Public Function DisplayTOC() As Long
    Dim sHelpFile As String
    sHelpFile = SoloCHM
    DisplayTOC = HtmlHelp(hWnd, sHelpFile, HH_DISPLAY_TOC, ByVal 0&)
End Function
Public Function DisplayIndex(Optional ByVal sKeyWord As String = "") As Long
    Dim sHelpFile As String
    sHelpFile = SoloCHM
    If Len(sKeyWord) = 0 Then
        DisplayIndex = HtmlHelp(hWnd, sHelpFile, HH_DISPLAY_INDEX, ByVal 0&)
    Else
        DisplayIndex = HtmlHelp(hWnd, sHelpFile, HH_DISPLAY_INDEX, ByVal 
sKeyWord)
    End If
End Function
Private Function SoloCHM() As String
    Dim i As Long, sHelpFile As String
    sHelpFile = HelpFile
    i = InStr(sHelpFile, "::/")
    If i Then sHelpFile = Trim$(Left$(sHelpFile, i - 1))
    SoloCHM = sHelpFile
End Function
Public Function HelpContextPop(Optional ByVal elControl As Control) As Long
    Dim vControl As Control
    On Local Error Resume Next
    If elControl Is Nothing Then
        Set vControl = Screen.ActiveControl
    Else
        Set vControl = elControl
    End If
    ids(0).dwTopicId = CLng(vControl.HelpContextID)
    ids(0).dwControlId = GetDlgCtrlID(vControl.hWnd)
    ids(1).dwControlId = 0
    ids(1).dwTopicId = 0
    If Err = 0 Then HelpContextPop = HtmlHelp(vControl.hWnd, HelpFile, 
HH_TP_HELP_WM_HELP, ids(0))
    Err = 0
End Function
Public Function HelpContext(Optional ByVal elControl As Control, Optional 
ByVal laVentana As String = "") As Long
    Dim vControl As Control, TopicNum As Long, sHelpFile As String
    On Local Error Resume Next
    If elControl Is Nothing Then
        Set vControl = Screen.ActiveControl
    Else
        Set vControl = elControl
    End If
    TopicNum = CLng(vControl.HelpContextID)
    If Err = 0 Then
        sHelpFile = SoloCHM
        If Len(laVentana) Then sHelpFile = sHelpFile & " >" & laVentana
        HelpContext = HtmlHelp(hWnd, sHelpFile, HH_HELP_CONTEXT, ByVal 
TopicNum)
    End If
    Err = 0
End Function
-- 
Ciao Fede
By Chicco Production
http://bcp.freetools.it

 richiamo le altre Schermate.
[cut]
Sě, ne ho fatta anch'io una con i .chm ma ho visto che, almeno per me, si 
tratta di uno strumento eccessivamente macchinoso, soprattutto in fase di 
mantenimento. Ma mi rendo conto che, probabilmente, č un fatto soggettivo 
(essendo io piuttosto disordinato e poco 'attrezzato' per procedure che si 
usano solo ogni tanto, nel senso che tendo a dimenticare uno o piů passaggi 
e, di conseguenza, devo perdere del tempo per ricostruire il tutto :))
Con gli .rtf č tutto estremamente semplice e veloce e mi evita un bel po' di 
stress.
In ogni caso, ti ringrazio per la risposta :)
Ciao.
eSQueL 

 di funzioni che in RTF non avrei (una su tutte i link di cui parlavi).
Con una SendMessage EM_AUTOURLDETECT si puņ far rilevare
i link anche ad una RichTextBox, perņ se ricordo bene mi pare che
poi si debba subclassare per rilevare il click sul link.
Frugando in rete si dovrebbe trovare il codice pronto.
Bye, G. 

 Frugando in rete si dovrebbe trovare il codice pronto.
Ritrovato:
http://www.xtremevbtalk.com/showthread.php?t=73845
Bye, G. 

"Paperino" <non...@lo.dico.invalid> ha scritto nel messaggio 
news:gr0m8g$agi$1...@nntp.motzarella.org...

Ma grazie :)
eSQueL 

 Ma grazie :)
 :-P
Bye, G.