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

Composants VCL Delphi Discussion :

Hauteur de la zone de saisie effective


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut Hauteur de la zone de saisie effective
    Salut à tous

    Voila, je cherche à récupérer, dans un TEdit, la hauteur de la zone de saisie. Je m'explique:
    Si vous mettez un TEdit sur une fiche, exécutez et écrivez du texte. Sélectionnez ensuite la totalité ou quelques caractères, vous remarquerez que cette "bande" de sélection a une hauteur différente de celle de la police quelque soit ce qu'il y a d'écrit.
    Je cherche à trouver cette hauteur à l'exécution!
    En d'autres termes, trouver la hauteur du caret!

    Merci d'avance
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  2. #2
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Si ton problème est d'obtenir la hauteur de la sélection courante, je ne crois pas que ce soit possible. Windows ajuste cette hauteur en fonction de la police de caractères courante, et je n'ai pas vu de fonction pour ça non plus.

    http://msdn.microsoft.com/en-us/libr...68(VS.85).aspx

    Tu peux toujours essayer de modifier la hauteur du caret en rusant avec CreateCaret, mais tu ne pourras que changer l'apparence du curseur, je ne crois pas que ça changera quelque chose à la hauteur de la sélection... enfin, pas testé... à voir.

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Justement, je ne cherche pas à le modifier mais bien à récupérer sa hauteur.
    Bon bah va encore falloir ruser A moins que quelqu'un ait une solution?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut Pedro

    En examinant la procédure AdjustHeight de TCustomEdit, je pense qu'on peut s'en sortir comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function GetCaretHeight(AEdit: TEdit): Integer;
    var
      I: Integer;
    begin
      if AEdit.Ctl3D then
        I := 8
      else
        I := 6;
      I := GetSystemMetrics(SM_CYBORDER) * I;
      Result := AEdit.Height - I;
    end;
    @+ Claudius

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut Cl@udius

    Merci pour ta réponse

    Ton code ne fonctionne (la hauteur renvoyée n'est pas bonne) pas en revanche, cela me donne une sérieuse piste à suivre!
    Je vais essayer de fouiller dans ce sens-là!
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    J'ai trouvé
    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
     
    function GetCaretHeight(aEdit: TCustomEdit): integer;
    var
      DC: HDC;
      SaveFont: HFONT;
      aFont: HFONT;
      Metrics: TTextMetric;
    begin
      DC := GetDC(0);
      try
        aFont := SendMessage(aEdit.Handle, WM_GETFONT, 0, 0);
        SaveFont := SelectObject(DC, aFont);
        GetTextMetrics(DC, Metrics);
        SelectObject(DC, SaveFont);
      finally
        ReleaseDC(0, DC);
      end;
      Result := Metrics.tmHeight;
    end;
    Voila
    Merci Cl@udius de m'avoir mis sur la voie
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/01/2006, 00h08
  2. Réponses: 4
    Dernier message: 22/12/2005, 16h46
  3. Réponses: 4
    Dernier message: 31/10/2005, 18h37
  4. [FLASH MX2004] Zone de saisie avec scrollbar
    Par carlito dans le forum Flash
    Réponses: 3
    Dernier message: 29/11/2004, 14h30
  5. explo de BD : zone de saisie SQL invisible dans
    Par sebitor dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/03/2004, 17h39

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