IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB 2.0] Quels conseils pour progresser dans mon implémentation ?


Sujet :

Windows Forms

  1. #1
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut [VB 2.0] Quels conseils pour progresser dans mon implémentation ?
    Bonjour à toutes et à tous !

    Je suis en train de développer pour l'association dont je suis bénévole une petite appli de gestion, fonctionnant avec une petite base de données Access.
    Elle gère principalemet les contacts de l'assoc ainsi que les adoptions d'animaux (c'est un refuge pour animaux, comme une spa koi lol).

    Pour les adoptions, l'appli permet des créer une fiche et de l'imprimer, avec les données relatives à l'animal ainsi que celles de l'adoptant.
    J'utilise pour ce faire un fichier RTF qui me sert de modele pour cette fiche. J'y ai introduit des "balises" qui seront remplacées par les données correspondantes, balises de type [Nom] [Prénom] etc...

    Mon soucis est que je dois remplacer ces balises par les données que je récupere dans des variables String. Et là, je ne sais pas comment faire... Ma fiche s'affiche correctement dans une RichTextBox, mais je ne sais pas quelle fonction utiliser pour remplacer ces balises par mes variables. Il existe des méthode Copy, CopyTo, Replace, Insert... mais je ne sais pas de quelle façon les utiliser, il y a souvent des index.
    J'utilise les fonctions héritées du contrôle RichTextBox, peut être n'est-ce pas la bonne maniere.

    Mon second soucis est pour l'impression, ma fiche modèle (au format enrichi RTF toujours) s'affiche correctement dans ma RichtextBox comme dit plus haut, mais à l'impression je perd mes mise en forme (Taille, gras, tabulations, etc). J'ai juste mon texte brut et les saut de lignes qui s'imprime...

    Voilà la partie de code pour l'impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As
     System.EventArgs) Handles btnPrint.Click
            printFiche.Print()
        End Sub
     
        Private Sub printFiche_PrintPage(ByVal sender As System.Object, ByVal
     e As System.Drawing.Printing.PrintPageEventArgs) Handles
     printFiche.PrintPage
            e.Graphics.DrawString(rtbAdopt.Text, rtbAdopt.Font, Brushes.Black,
     1, 1)
        End Sub
    rtbAdopt étant ma RichTextBox

    C'est tres brouillon je sais, surtout pour les paramètres du e.Graphics.DrawString , mais j'inaugure dans le domaine de l'impression.

    J'ai cherché un peu sur les forums DotNet, en vain...

    Avez vous la solution pour mes 2 problèmes actuels ??

    D'avance, je vous remercie !

    JFKen

  2. #2
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    Salut,

    Je vais te montrer ma solution, qui est en fait celle expliquée avec le richtextbox (de souvenir).

    C'est du C#, je supose que tu arriveras à le traduire en VB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    InitializeComponent();
     
    this.printDocument1.BeginPrint += new
     System.Drawing.Printing.PrintEventHandler
    (this.printDocument1_BeginPrint);
    this.printDocument1.PrintPage += new
     System.Drawing.Printing.PrintPageEventHandler
    (this.printDocument1_PrintPage);
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    private void printDocument1_BeginPrint(object sender,
     System.Drawing.Printing.PrintEventArgs e)
    {
        checkPrint = 0;
    }
     
    private void printDocument1_PrintPage(object sender,
     System.Drawing.Printing.PrintPageEventArgs e)
    {
        // Print the content of RichTextBox. Store the last character printed.
        checkPrint = richTextBoxPrintPrev.Print(checkPrint,
     richTextBoxPrintPrev.TextLength, e);
     
        // Check for more pages
        if (checkPrint < richTextBoxPrintPrev.TextLength)
            e.HasMorePages = true;
        else
            e.HasMorePages = false;
    }
    Pour ton problème de remplacer des tags par des valeurs, un ptit exemple;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    richTextBoxPrintPrev.Text.Replace("[Prénom]", "François");
    J'espere que ca t'aidera

    ++

  3. #3
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Super !!

    Merci pour ton aide, je vais voir ça ce we.

  4. #4
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Bon, j'ai pas beaucoup avancé sur cette appli depuis que je suis sur un projet bien plus conséquant, mais je m'y remet pour ne pas perdre le fil !
    Mon problème actuel est l'accès à ma base de donnée, après avoir résolu le problème du pilote ISAM manquant, j'obtient une nouvelle erreur empêchant mon appli de se connecter à ma base de donnée ACCESS.

    Mon exception levée sur la connection est que le format de ma base de donnée n'est pas reconnue...

    Voilà le bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Public Class Form2
     
      Dim cnnConnection As New System.Data.OleDb.OleDbConnection
     
      Private Sub btnValider_Click_1(ByVal sender As System.Object, ByVal e
     As System.EventArgs) Handles btnValider.Click
            cnnConnection.ConnectionString =
     "Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\System Files\Arche.accdb"
     
            Try
     
                cnnConnection.Open()
     
            Catch ex As Exception
                MessageBox.Show("Une erreur s'est produite." & vbNewLine &
     "Impossible de se connecter à la base de données." & vbNewLine &
     vbNewLine & "Détail de l'erreur :" & vbNewLine & vbNewLine & "A " &
     Now.TimeOfDay.Hours.ToString & ":" & Now.TimeOfDay.Minutes.ToString
     & ", cette erreur est survenue : " & ex.Message, "Erreur",
     MessageBoxButtons.OK, MessageBoxIcon.Error)
                Exit Sub
            End Try
     
        End Sub
     
    End Class
    Je pense que ma version du Provider que j'utilise ne reconnait pas les base de données .accdb . Mais ce n'est peut être pas ça... Une référence manquante à importer ? Pour info j'ai vérifié dans WINDOWS\System32 la précence de mes dll relatives à ACCESS ainsi que la validité des chemins dans le repertoire JET du registre, tout est ok à ce niveau.

    Une idée du problème ? Je n'ai rien trouvé sur MSDN, Google ...

    Merci !!

  5. #5
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    accdb c'est l'extension des fichiers access 2007 non ?

    essaye d'enregistrer la base au format 2003 pour voir

  6. #6
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Oui, c'est bien le format qui ne convenait pas... Apres conversion en .mdb (Office 2003) plus de problèmes !!
    Ce que je pensais, mais j'avais pas trouvé où ça se faisait dans Access 2007 Saloperie d'interface moderne !! lol

    Merci à toi Badger Man !!

    Bon, j'ai pas mal avancé dans mon code (vive l'organisation de travail ) mais je bute maintenant sur une partie de l'appli. Na sachant pas où posée la question, j'ai créé un topic dans la section multimedia.
    Voilà ma "requete" :

    Bonsoir à toutes et à tous !

    Je suis en train de réaliser une application en DotNet (VB et C#) assez 'lourde' (3 mois de dev. environs) pour un projet à réaliser dans le cursus de ma formation . Je ne vais pas détailler ici cette application, juste la partie sur laquelle je travaille actuellement et qui utilise donc DirectX.

    Cette partie est en fait un petit lecteur audio, qui pour l'instant fonctionne à merveille (à 2/3 choses près) mais qui est encore trop limité, tout comme mes connaissances en DirectX et en API.
    Donc voilà où en est ce petit lecteur :
    ¤ Lecture, arrêt, mise en pause de la lecture OK
    ¤ Gestion du volume sonore OK
    ¤ Balance gauche/droite OK

    Voilà ce que je voudrais ajouter/arranger :

    ¤ Pour le volume sonore, la valeur où le son est à 100% est 0, et s'attennue en baissant cette valeur à -10.000. Bizaremment, à -3.000/-4.000 je n'ai plus de son, comme si les 70% d'attenuation du volume restants sont sans effets, est-ce normal ?
    ¤ Je voudrais créer une sorte d'égaliseur graphique (basique, 4 à 5 barres maxi) ainsi que quelques contrôles pour rêgler les fréquances sonores (basses/graves). DirectX permet t'il ces réglages ?
    ¤ Il me faudrait aussi récupérer les tag's de mes fichiers audio (mp3, wma, etc).

    Voilà en gros les points où je bute... j'ai DL la FAQ DirectX, mais niveau audio je n'ai rien appris de plus que ce que j'ai fait, de même pour qq sources.

    Je rappelle que cette partie "multimedia" n'est qu'une infime partie de mon projet, mais je bloque dessus depuis qq jours sans trouver de solution. J'essai peut etre de faire ce lecteur sans le bon outil (DirectX), mais n'ayant jamais touché aux sons et vidéos en prog, je patauge sévère !
    Donc si vous avez une réponse, une idée, un lien, une critique, une insulte, je suis preneur !

    Merci d'avance à tous pour votre aide !

    PS : si ce topic est mieux placé dans la partie DotNet, qu'1 modo le déplace
    Et le lien vers le topic en question : http://www.developpez.net/forums/sho...d.php?t=172370

    Merci !

  7. #7
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par frechy

    Pour ton problème de remplacer des tags par des valeurs, un ptit exemple;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    richTextBoxPrintPrev.Text.Replace("[Prénom]", "François");
    J'espere que ca t'aidera

    ++
    Salut Frechy !!

    Je n'arrive pas à utiliser la fonction replace de la RichTextBox...

    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        Private Sub btnValidclient_Click(ByVal sender As System.Object,
     ByVal e As System.EventArgs) Handles btnValidclient.Click
     
            Dim sClient As String
     
            sClient = cmbNomClient.Text & " " & lsbPrenomClient.Text
     
            rtbCommande.ReadOnly = False
            rtbCommande.Text.Replace("[NomClient]", sClient)
            rtbCommande.Refresh()
            rtbCommande.ReadOnly = True
     
            grbArticles.Enabled = True
            grbClients.Enabled = False
        End Sub
    Ma balise dans mon fichier RTF est bien NomClient entre crochets ( [NomClient] ).

    J'ai testé en laissant la propriété ReadOnly à False, sans changements.
    Je pense qu'il doit manquer qqch apres la fonction REPLACE, mais koi ?
    Le RichTextBox.refresh est sans effets non plus.

    Merci à vous si vous voyez ce que c'est !

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par JFKen
    Salut Frechy !!

    Je n'arrive pas à utiliser la fonction replace de la RichTextBox...
    Bon en attendant que Frechy te éponde, tu devras te contenter de moi
    Tout d'abord la fonction Replace concerne System.String et non le RichTextBox (donc plutôt au travers de sa propriété .Text notamment).

    Sinon, il me semble que tu veux agir sur le balisage rtf donc as-tu essayé avec la propriété RichTextBox.Rtf plutôt ?
    Sinon, lorsque l'on veut forcer un contrôle à se redessiner, il est plus courant d'utiliser dans les applications Windows la méthode héritée Invalidate .
    Enfin puisqu'il s'agit de soucis concernant le developpement d'une application Windows, je déplace ton sujet dans le forum dédié à ce thème > [Infos] Veillez à poster vos questions dans les sous-forums consacrés

  9. #9
    Membre du Club Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Salutation Neguib !

    En fait j'ai réeussi a trouver la solution, il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RichTextBox.Text = RichTextBox.Text.Replace("[Tag]", "Nouvelle Valeur")
    Mais comme tu le précise, cette façon de faire enlève la mise en forme... il faut spécifier que l'on travaille en RTF pour la garder, soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RichTextBox.RTF = RichTextBox.RTF.Replace("[Tag]", "Nouvelle Valeur")
    La fonction REFRESH est apparement inutile...
    Bon, maintenant faut que j'arrive à mettre des valeurs dans un tableau de 10x3 présent dans mon fichier "modèle" !

    Merci à toi pour tes renseignements !!

    PS : désolé, mais je savais même pas qu'il y avait ses sous-sous-rubrique de forums !

    PS 2 : en format RTF, les accentuations sont codés avec des balises, ainsi [PrénomClient] équivaut à [Pr\'e9nomClient] , pensez y lors du travail sur les chaines de caracteres en RTF !!

Discussions similaires

  1. Conseils pour debuter dans mon projet
    Par diamanz dans le forum Débuter
    Réponses: 6
    Dernier message: 19/07/2009, 18h52
  2. Réponses: 4
    Dernier message: 06/03/2006, 17h54
  3. Quels conseils pour app de reconnaissance par Empreinte ?
    Par WOLO Laurent dans le forum Windows
    Réponses: 6
    Dernier message: 31/01/2006, 14h52
  4. Réponses: 4
    Dernier message: 26/01/2006, 10h35
  5. [Systeme d'Information] Quels conseils pour une refonte ?
    Par jejefeds dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 07/12/2005, 18h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo