Meilleur auteur de réponses
Fermeture anormale de ma form

Question
-
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
- Proposé comme réponse nikhoModerator mercredi 18 mai 2011 14:38
- Marqué comme réponse Ciprian Duduiala jeudi 19 mai 2011 08:07
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
-
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
-
- 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
-
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
-
-
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
-
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
- Proposé comme réponse nikhoModerator mercredi 18 mai 2011 14:38
- Marqué comme réponse Ciprian Duduiala jeudi 19 mai 2011 08:07
-
Bonjour,
Merci pour tenir la communauté informée sur la suite de vos démarches.
Cordialement,
Cipri
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.