Question

J'ai un autre problème que je ne peux pas résoudre

J'ai un code suivant qui ajoute un utilisateur (prénom, nom de famille et âge) dans un TreeView. Tout fonctionne bien, sauf pour une petite chose: cela ne fonctionne bien que lorsque vous ajoutez un utilisateur pour la première fois. Lorsque vous appuyez sur ADD, puis essayez d'ajouter un autre utilisateur, il tentera d'ajouter 2 utilisateurs, puis 3, 4 et ainsi de suite, augmentant avec chaque ajout. Voici le code qui attrape l'événement de clic:

onClicked (dodajUczBt gui) (dodajUcz gui dbh stores)

Et voici la fonction dodajUcz Cela gère le clic:

dodajUcz gui dbh stores =
    do  entrySetText (nImie gui) ""
        entrySetText (nNazwisko gui) ""
        entrySetText (nWiek gui) ""
        onClicked (cancelAddUczBt gui) (widgetHide (dodajUzDialog gui))
        onClicked (zapiszUczBtn gui) procADD
        windowPresent (dodajUzDialog gui)
    where procADD = do
            ucz <- getUczestnik
            let store = uczestnicy stores
            New.listStoreAppend store ucz
            dlugosc <- New.listStoreGetSize store
            labelSetText (lblLiczbaUcz gui) $ "Liczba uczestników: "++ show dlugosc 
            widgetHide (dodajUzDialog gui)
            addUser ucz dbh
          getUczestnik = do
                                imie <- entryGetText (nImie gui)
                                nazwisko <- entryGetText (nNazwisko gui)
                                wiek <- entryGetText (nWiek gui)
                                let wiek' = read wiek :: Integer
                                return $ Uczestnik 0 imie nazwisko wiek' False

Uczestnik est un type de données algébrique et addUser est une fonction qui ajoute un Uczestnik dans la base de données. GUI est également un type de données algébrique GUI, qui contient tous les éléments de l'interface graphique créés par castToXml

Il me semble que widgetHide est le principal problème, car même si vous ne faites rien (ouvrez simplement la boîte de dialogue, puis fermez-le), il essaiera d'ajouter 2 utilisateurs la prochaine fois que vous l'ouvrez.

Des idées sur la façon de résoudre ce problème? Toute aide serait grandement appréciée :)

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top