none
Fermeture anormale de ma form RRS feed

  • Question

  • Bonjour,

    Je fais un DLL, j ai mis un textbox sur ma form et quand je lance la DLL lié à mon prog, je ne paux pas taper de texte dans la textbox et la form se ferme.

    Je ne comprend pas pourquoi. Merci de votre aide.

    Bro92

    mardi 17 mai 2011 09:06

Réponses

  • Bonjour,

    J ai solutionné mon problème, il fallait en effet appeler la form en modal et non en modless donc utiliser :

    fForm1.ShowDialog()

    et non :

    fForm1.Show()

    Merci et à bientôt

    mercredi 18 mai 2011 14:24

Toutes les réponses

  • Bonjour,

    on ne peut pas "lancer une dll", vous devez donc avoir un executable ?

    Par ailleurs insérer le code de votre application ( il y a eu fonction prévu à cette effet dans la barre d'outil) , sinon il nous sera impossible de vous aider.

    Cordialement

    mardi 17 mai 2011 10:16
    Modérateur
  • Oui effectivement, je n ai pas pris le temps d expliquer, désolé. Je débute et je n ai pas encore les bons réflexes.

    J ai un exe que je lance, puis ma dll est appelé à l aide d une fonction du menu déroulant de l exe. Ma form apparait. C est un lexique de mot clé avec un textbox et un button. Pour faire des recherches dans le lexique.

    Tout ce qu il y a de plus normal. Lorsque je met le curseur dans le textbox et que je tape une lettre au clavier, ma form se réduit dans la barre des tâches.

    Et rien ne s inscrit dans la textbox.

    Je ne trouve pas la fonction pour écrire le code de l'application. Et quel est ce code ?

    Cordialement,

    Bro92

    Option Explicit On
    
    Imports System.Windows.Forms
    
    Public Class Plugin
      '======================================================================
      Public Function OnAppStartAfter(ByVal lCallParamsBlock As Integer) As Boolean
        '======================================================================
    
        ' Creation of the GoAppli and GoScene objects
        GoAppli = CreateObject("KDSDK.Appli")
    
        ' Start session.
        GlSessionId = GoAppli.StartSessionFromCallParams(lCallParamsBlock)
    
        ' Insertion d'un menu
        bOk = GoAppli.InsertMobiScriptMenuItem(GlSessionId, "Lexique (Mots clés)...    F1", 0, 0, "", 1, 1, "TTlexique.dll", "Plugin", "Démarrages")
    
        ' End session.
        bOk = GoAppli.EndSession(GlSessionId)
    
        ' Destruction of the GoAppli objects
        GoAppli = Nothing
    
        OnAppStartAfter = True
    
      End Function
    
      Public Function Démarrages(ByVal lCallParamsBlock As Integer) As Boolean
    
        fForm1.Show()
        Démarrages = True
    
      End Function
    
    End Class
    
    mardi 17 mai 2011 12:30
  • - Quelle est le type de l'objet KDSDK.Appli ? Est ce un objet que l'on vous a fourni car votre code n'est le code "type" d'utilisation d'une winform. Par ailleurs il semble que vous créez l'objet GoAppli (CreateObject) et toute de suite après vous le détruisez (GoAppli = Nothing). Êtes vous sur que vous devez détruire l'objet GoAppli?

    - Je suppose que la fonction Démarrages est appelée depuis le menu. La fonction utilise un objet fForm1 que l'on imagine être la fenêtre winform. Ou est déclarée la variable fForm1 ? Ou est elle initialisée ( une ligne ou on verrait l'instruction New )

    Cordialement

     

     


    mardi 17 mai 2011 12:46
    Modérateur
  • Tous le reste fonctionne comme il faut, l'objet GoAppli est détruit pour finit la fonction d insertion de menu puis est réouvert.

    Les déclarations sont fait dans un module :

    Option Explicit On
    
    
    
    Module TTlexique_Module1
    
    
    
     Public GoAppli As Object
    
     Public GlSessionId As Integer
    
     Public fForm1 As New Form1
    
     Public bOk As Boolean
    
     Dim i As Integer
    
     Public NbLinesGrid1 As Integer
    
     Public NbLinesGrid2 As Integer
    
     Dim TiksR As Integer
    
     Dim TiksC As Integer
    
     Dim TksR As Integer
    
     Dim TksC As Integer
    
     Public ListeTokens(5, 9999) As String
    
     Public ListeTokensP(5, 9999) As String
    
     Public GsSearch As String
    
     Dim iRow As Integer
    
     Dim iCol As Integer
    
     Public iRo As Integer
    
     Public iCo As Integer
    
     Dim iRow2 As Integer
    
     Dim iCol2 As Integer
    
     Public iRo2 As Integer
    
     Public iCo2 As Integer
    
    
    
    End Module
    
    

     puis la form1 :

    Option Explicit On
    
    Public Class Form1
    
    
    
      Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    
    
      Dim AppFctLstTokens
    
    
    
      iRo = 1
    
      iCo = 1
    
      iRo2 = 1
    
      iCo2 = 1
    
    
    
      '=====================
    
      '==== FLEXGRID 1 =====
    
      '=====================
    
      'Grid1.ScrollBars = True
    
    
    
    
    
      'Nombres de lignes, de colonnes
    
      Grid1.RowCount = 24
    
      NbLinesGrid1 = Grid1.RowCount
    
      Grid1.ColumnCount = 6
    
      Grid1.ColumnHeadersHeight = 100
    
    
    
      'Numéro des lignes à gauche
    
      For i = 1 To NbLinesGrid1
    
       Grid1.CurrentCell = Grid1(0, i - 1)
    
       Grid1.CurrentCell.Value = i
    
      Next i
    
    
    
      'Format des colonnes
    
      Column1.Width = 40
    
      Column2.Width = 50
    
      Column3.Width = 70
    
      Column4.Width = 100
    
      Column5.Width = 300
    
      Column6.Width = 210
    
    
    
      'Ecriture des TOKENS dans FLEXGRID
    
      For TksR = 1 To NbLinesGrid1
    
       For TksC = 1 To 5
    
        Grid1.CurrentCell = Grid1(TksC, TksR - 1)
    
        AppFctLstTokens = FctLstTokensS(TksC, TksR)
    
        Grid1.CurrentCell.Value = ListeTokens(TksC, TksR)
    
       Next TksC
    
      Next TksR
    
    
    
      '=====================
    
      '==== FLEXGRID 2 =====
    
      '=====================
    
      'Grid2.ScrollBars = True
    
    
    
      'Nombres de lignes, de colonnes
    
      Grid2.RowCount = 148
    
      NbLinesGrid2 = Grid2.RowCount
    
      Grid2.ColumnCount = 6
    
      Grid2.ColumnHeadersHeight = 100
    
    
    
      'Numéro des lignes à gauche
    
      For i = 1 To NbLinesGrid2
    
       Grid2.CurrentCell = Grid2(0, i - 1)
    
       Grid2.CurrentCell.Value = i
    
      Next i
    
    
    
      'Format des colonnes
    
      Column7.Width = 40
    
      Column8.Width = 50
    
      Column9.Width = 70
    
      Column10.Width = 100
    
      Column11.Width = 300
    
      Column12.Width = 210
    
    
    
      'Ecriture des TOKENS dans FLEXGRID
    
      For TksR = 1 To NbLinesGrid2
    
       For TksC = 1 To 5
    
        Grid2.CurrentCell = Grid2(TksC, TksR - 1)
    
        AppFctLstTokens = FctLstTokensP(TksC, TksR)
    
        Grid2.CurrentCell.Value = ListeTokens(TksC, TksR)
    
       Next TksC
    
      Next TksR
    
    
    
     End Sub
    
     Public Function FctLstTokensS(ByVal TksR, ByVal TksC)
    
    
    
      'Liste des Tokens pour Mobiscript
    
      ListeTokens(1, 1) = "A"
    
      ListeTokens(2, 1) = "4"
    
      ...
        FctLstTokensS = True
    
    
     End Function
    
     
    
    End Class
    
    

     

    Voila, ceci dit je ne pense pas que cela intervienne sur la fermeture de la form quand je tape au clavier ?

     

    Cdt,

    Bro92


    mardi 17 mai 2011 13:31
  • Bonjour,

    essayer de voir si des évènement sont attaché à votre textbox. Dans la portions de code que vous nous avez donnez on voit qu'il il y a une grille qui est chargé dans Form1 mais rien qui ne se rapporte à une texbox ?

    Cordialement

    mercredi 18 mai 2011 12:10
    Modérateur
  • Bonjour,

     

    Merci de prendre le temps de m'aider...

    Voici la fin de la DLL.

    En fait je crois que ma form perd le focus au dépend du prog lancé au départ qui dès que l'on tape au clavier prend le focus pour le mettre dans une case à lui.

    Je ne sais pas comment retenir le focus dans la mienne .

     

    Cordialement,

    Bro92

    Public Sub SearchButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchButton.Click
    
        For iRow = iRo To NbLinesGrid1 - 1
          For iCol = iCo To 5
            Grid1.CurrentCell = Grid1(iCol, iRow)
            If InStr(1, Grid1.CurrentCell.Value, GsSearch, CompareMethod.Text) Then
              Grid1.CurrentCell = Grid1(iCol, iRow)
              Grid1.FirstDisplayedScrollingRowIndex = iRow
              Grid1.Refresh()
              iRo = iRow
              If iCol > 4 Then iCo = 1 : iRo = iRow + 1 Else iCo = iCol + 1
              GoTo Fin
            End If
            If iCol > 4 Then iCo = 1 : iRo = iRow + 1 Else iCo = iCol + 1
          Next iCol
        Next iRow
    
        For iRow2 = iRo2 To NbLinesGrid2 - 1
          For iCol2 = iCo2 To 5
            Grid2.CurrentCell = Grid2(iCol2, iRo2)
            If InStr(1, Grid2.CurrentCell.Value, GsSearch, CompareMethod.Text) Then
              Grid2.CurrentCell = Grid2(iCol2, iRow2)
              Grid2.FirstDisplayedScrollingRowIndex = iRow2
              Grid2.Refresh()
              iRo2 = iRow2
              If iCol2 > 4 Then iCo = 1 : iRo = iRow + 1 : iCo2 = 1 : iRo2 = iRow2 + 1 Else iCo2 = iCol2 + 1
              GoTo Fin
            End If
            If iCol2 > 4 Then iCo = 1 : iRo = iRow + 1 : iCo2 = 1 : iRo2 = iRow2 + 1 Else iCo2 = iCol2 + 1
          Next iCol2
        Next iRow2
    
    Fin:
        If iRow2 >= (NbLinesGrid2 - 1) Then iRo = 1 : iRo2 = 1 : iCo = 1 : iCo2 = 1 : iRow = 1 : iRow2 = 1
    
      End Sub
      Private Sub SearchBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles SearchBox.TextChanged
    
        GsSearch = SearchBox.Text
    
      End Sub
    
    mercredi 18 mai 2011 12:32
  • Bonjour,

    J ai solutionné mon problème, il fallait en effet appeler la form en modal et non en modless donc utiliser :

    fForm1.ShowDialog()

    et non :

    fForm1.Show()

    Merci et à bientôt

    mercredi 18 mai 2011 14:24
  • Bonjour,

    Merci pour tenir la communauté informée sur la suite de vos démarches.

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    jeudi 19 mai 2011 08:07