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

Lazarus Pascal Discussion :

Utilisation de TMaskEdit


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Utilisation de TMaskEdit
    Bonjour,

    Je découvre les TMaskEdit... J'essaie de me faire une idée de ce qu'ils permettent de faire. Une adresse web contenant une doc exhaustive ?

    Je cherche à rentrer une masse au format (999.999) [De 0 à 999.999 Kg].

    Pour l'instant, là où j'en suis, la saisie "naturelle" (ie avec l'ergonomie d'une machine à calculer) de 1.202 par exemple me semble impossible directement par un masque... La gestion du point (ou mieux du DecimalSeparator) ? cela nécessite de la programmation après chaque key et... je trouve cette dernière beaucoup moins sympa qu'avec un simple Edit, notamment à cause du masque et du retour après traitement dans ce dernier. Cette infaisabilité directe est un mauvais usage des masques de ma part ou une réalité ?

    Merci. Cordialement.
    Gilles
    Dernière modification par Invité ; 17/12/2010 à 16h46.

  2. #2
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 389
    Par défaut
    Bonjour,
    Je ne suis qu'un petit programmeur venant de delphi 4 sous Xp et maintenant sous lazarus 0.929 et sous linux. Utilisateur des Maskedit sous delphi je n'ai pas retrouvé tous mes repères sous lazarus, alors avec des réponses sut les forum et mes propres réflexions j'en suis arrivé à écrire ses petites routines pour mon usage des Maskedit.
    Les résultats je l'ai transmet à un Edit car j'ai trouvé plus simple pour écrire dans mes bases sqlite d'utiliser du texte.
    Mon principal problème était à l'époque (environ 18 mois) le positionnement de la virgule décimale dans l'écriture d'une valeur avec décimales dans un Maskedit. Le résultat comportait des espaces inutiles et apportant des erreurs dans l'utilisation des données.
    Ce n'est surement pas très pro mais cela répond à mon besoin.
    L'usage que je fais de ces routines c'est la mise en forme de l'écriture dans le Maskedit en supprimant les espaces puis je mets le résultat en forme pour l'utilisation après.
    Je les utilise pour entrer des montants, des numéros de chèque, des kilomètres etc..
    Alors si cela peut être utile
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    function LongueurMontant(Entree: String): String;
      {Donne une longueur au montant d'une valeur}
    Const
      XESPACES='          '; // 10 espaces
    begin
    Entree:=(copy(XESPACES+Entree,Length(XESPACES+Entree)-8,9));
    LongueurMontant:=Entree;
    end;
     
    function LongueurDonnee(Entree:String;longueur:Integer):String;
    Const
      MESPACE='                              '; // 30 espaces
    begin
    Entree:=copy(MESPACE+Entree,Length(MESPACE+Entree)-longueur+1,Length(MESPACE+Entree));
    LongueurDonnee:=Entree;
    end;
     
    function DeuxDecimales(Entree: String): String;
    var
      virgule,point:Integer;
    begin
    point:=Pos('.',Entree);
      if point<>0 then  // remplacement du point par une virgule
      begin
      Delete(Entree,point,1);
      Insert(',',Entree,point);
      end;
    virgule:=Pos(',',Entree);
      if virgule=0 then Entree:=Entree+',00' // pas de décimale
      else if virgule=Length(Entree) then Entree:=Entree+'00'
           else if virgule=Length(Entree)-1 then Entree:=Entree+'0';
    DeuxDecimales:=Entree;
    end;
     
    function TraitementMasque(Entree: String): String;
    var
      blanc:Integer;
    begin
    // mise en forme résultat d'un MaskEdit numérique
    blanc:=Pos (' ',Entree);
      while blanc<>0 do
      begin
      Delete (Entree,blanc,1);
      blanc:=Pos(' ',Entree);
      end;
    TraitementMasque:=Entree;
    end;
    Je reste à ta disposition.
    A+

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ovni76 Voir le message
    Bonjour,
    Je ne suis qu'un petit programmeur venant de delphi 4 sous Xp et maintenant sous lazarus 0.929 et sous linux. [...]
    Bonjour Ovni,

    Malgré nos efforts, on reste toujours petit. Heureusement ! Cela nous encourage à persister à comprendre et apprendre... et cela évite la grosse tête

    Pour le reste c'est toujours un plaisir de parler à un Delphien ou à un Lazarusien. Les extra-terrestes (Ovni), je pratique moins. Mais heureusement dans ce cas précis, on a un langage commun : le Pascal.

    Alors pour les TMaskEdits, je ne connais pas du tout. Je pensais que la gestion du point par exemple dans les formats numériques était plus élaborée. J'ai essayé en vain mon approche avec le positionnement du curseur comme je le fais avec les TEdits pensant me débarasser du contrôle (ie l'interdiction) des Keys saisis et bénéficier justement d'un reformatage auto à chaque touche. Ce n'est pas le cas. Mais, comme au fil des versions et suivant les OS, la gestion du curseur a fonctionné de manière plus ou moins aléatoire (correction puis réapparition puis recorrection...), je n'ai aucune certitude sur la question. Donc, je vais essayer d'utiliser votre formatage Text qui finalement ne demandera qu'un seul repositionnement du curseur...

    Merci pour votre aide.
    A bientôt. Gilles

  4. #4
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 389
    Par défaut
    C'est bien le but de ce forum, chacun apporte sa pierre en fonction de ses connaissances et oude ses préférences.
    Content d'avoir été utile.
    Précision sur l'usage du format texte, sous delphi j'utilisais des tables dbase avec différents format de champ texte, numérique, date, sans difficulté car j'ai débuté dans mes petites application avec le langage de dbase avant de venir vers delphi et toujours des tables dbase quue je manipulais assez bien depuis dbase iii+...la préhistoire pour certains.
    Lors de mon passage sous linux et lazarus il m'a été conseillé d'utiliser sqlite. Ayant suivi ce conseil j'avance doucement avec ce gestionnaire de base mais la documentation étant en anglais mon avancement est très lent d'où l'usage du format texte qui me semble simple et qui répond à mes besoins avec les différentes routines de mise en forme existantes dans lazarus.
    Voila toute mon histoire.
    A+

  5. #5
    Invité
    Invité(e)
    Par défaut
    Hors sujet par rapport au thème de la discussion... L'utilisation de la messagerie interne serait plus adaptée mais bavard comme je suis, je me heutre trop souvent à sa limite du nombre de caractères... Néanmoins, cela me semble être une suite "acceptable" à la discussion engagée avec Ovni. Merci de votre compréhension. Gilles

    Bonjour Ovni,

    Dbase III : il y a quelques semaines, j'ai jeté un excellent (mais antique) bouquin sur le pilotage 'en dur" de dBase à partir de Delphi. Certes il commençait à dater mais "cela" fonctionnait très bien à l'époque. Hum... Pascalissime... Toute une époque !

    Avec SQLite, sous Lazarus, j'avais commencé un travail d'évaluation pendant les dernières grandes vacances scolaires. Je cherchais une base embarquée... SQLite pouvait être une alternative (et l'est effectivement, y compris avec les connecteurs natifs). Mais en terme d'accès concurrentiels, SQLite ne peut pas remplacer dBase.

    J'ai voulu vérifier le périmètre d'utilisation de SQLite3. Une base embarquée n'a normalement pas besoin (ie lieu) de gérer des accès concurrentiels mais il était précisé que dans certains cas (en lecture) SQLite3 le permettait... donc pouvait éventuellement faire mieux (par exemple permettre de centraliser un fichier de paramétrage de stations sur un serveur) ... sans prétendre atteindre évidemment les possibilités d'un mySQL Standard par exemple.

    En réalité, il faut différencier ce que peut théoriquement faire (ce que fait) le moteur de la base... de l'interaction (le "pilotage") réalisée par les connecteurs et Datasets : déception (en août 2010 - mais cela a pu progresser) avec les composants natifs. Mieux (à défaut d'affirmer RAS, car il faudrait peaufiner l'étude) avec Zeos (même version stable actuellemment que celle du test : 6.6.6). Autrement dit, lire toute la documentation sur SQLite ne garantit pas d'obtenir le résultat prévu par celle-ci si la chaîne de connection utilisée avec Lazarus (ou n'importe quel autre IDE d'ailleurs) ne respecte pas exactement le protocole et les spécifications de fonctionnement...

    Je dois encore avoir les sources des tests que j'ai réalisés... La suite de l'étude et surtout son CR -seule existe la partie concernant les accès "natifs"- n'ont pas été publiés faute d'aide (notamment la partie Zeos)... Visiblement cela n'intéressait pas grand monde... ou "tout le monde" était content de ce qu'il obtenait... ou "tout le monde" avait une solution alternative... Ce n'est qu'une simple constatation pas un regret : j'ai arrêté là où se terminait la partie utile pour moi [SQLite 3 : oui avec Natif et Zeos si pas d'accès concurrentiels (même en lecture)... et non en Natif, oui avec Zeos 6.6.6 avec des accès concurrentiels dans les conditions définies par la documentation SQLite3.

    Je peux vous transmettre le source des tests [ils sont commentés]. Et éventuellement (ce n'est pas lié), les affiner avec vous... Sinon, sans engagement de sa part, pour gagner du temps et trouver une information fiable et "directe", vous pourriez certainement faire appel à notre "Windevien Productif" et néanmoins spécialiste Lazarusien (Chris37).

    Cordialement. Gilles
    Dernière modification par Invité ; 22/12/2010 à 12h24. Motif: Utilisation incorrecte des balises [url]

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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