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

Delphi Discussion :

Comment changer l'apparence du curseur dans un TRichEdit


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Sans emploi
    Inscrit en
    Novembre 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 46
    Points : 26
    Points
    26
    Par défaut Comment changer l'apparence du curseur dans un TRichEdit
    Bonjour à tous !

    Je désirerais savoir si quelqu'un sait comment changer l'apparence du curseur dans un RicheEdit. En effet, je désirerais remplacer le curseur habituel par un autre de mon choix. Je ne parle pas du pointeur de la souris mais bel et bien du curseur.

    Je remercie d'avance tous ceux qui sauront me fournir le renseignement.

    Bonne continuation à tous.

  2. #2
    Membre confirmé

    Homme Profil pro
    Autre
    Inscrit en
    Novembre 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Novembre 2015
    Messages : 145
    Points : 625
    Points
    625
    Par défaut
    Je ne sais quel type de Pascal votre question concerne (Delphi, Lazarus, ...) ni quel OS, mais voici éventuellement un début de réponse ...

    Je ne suis pas sûr que Lazarus permette de faire ce genre de chose (mais je reconnais que je ne connais pas les composants concernés -RichEdit ou RichMemo-).

    Il est cependant possible de faire ce genre de chose sous Windows, en utilisant directement les API de Windows: cf. (lien en anglais) https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

    Ce qui donne -ce n'est qu'un exemple écrit très rapidement- pour un composant plus "classique" tel qu'un TMemo:

    Code suivante pour une forme "Form1" avec un TButton "Button1", création dynamique d'un composant TMemo modifié pour avoir un "caret" noir et plus épais.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, Forms, Controls, StdCtrls,
      Windows;
     
    type
      TMyMemo = class(TMemo)
      protected
        procedure WMSetFocus(var Msg: TWMSetFocus); message WM_SETFOCUS;
        procedure WMKillFocus(var Msg: TWMKillFocus); message WM_KILLFOCUS;
      end;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        MyMemo: TMyMemo;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      MyMemo := TMyMemo.Create(Self);
      MyMemo.SetBounds(10, 10, 200, 150);
      MyMemo.Parent := Self;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Application.Terminate;
    end;
     
    procedure TMyMemo.WMSetFocus(var Msg: TWMSetFocus);
    begin
      inherited;
      CreateCaret(Handle, HBITMAP(0), 10, 20);
      ShowCaret(Handle);
    end;
     
    procedure TMyMemo.WMKillFocus(var Msg: TWMKillFocus);
    begin
      inherited;
      DestroyCaret();
    end;
     
    end.
    Nom : TMemoCaret.png
Affichages : 374
Taille : 19,2 Ko

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Sans emploi
    Inscrit en
    Novembre 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 46
    Points : 26
    Points
    26
    Par défaut Comment changer l'appararence du curseur dans un TRichEdit
    Bonjour,

    Je vous remercie de vos renseignements. Cependant, j'utilise Delphi 7 dans une machine virtuelle sous Windows 10. J'ai installé Windows 7 dans la machine virtuelle. Je vous remercie donc pour votre code. Cependant, ce dernier est trop compliqué pour moi. Vous utilisez des choses qui ne figurent pas dans l'aide de Delphi. Si j'utilisais votre code, j'aurais la sensation de ne pas être l'auteur de mon application. De plus, je ne comprends rien au code que vous m'indiquez.

    Je désirerais quelque chose de plus simple (je suis débutant en programmation). Si vous ou quelqu'un d'autre avez des renseignements plus faciles à comprendre et à intégrer à mon application, je vous en remercie vivement. Je continue donc de poser ma question au sujet du curseur. Si ce sujet n'est pas résolu, ce n'est pas bien grave. Je vais poster une autre discussion qui concerne davantage un autre souci que j'ai avec les paragraphes.

    Je voudrais préciser que j'utilise un composant semblable au TRichEdit mais de la bibliothèque JVCL et qui s'appelle JVRichEdit. Dans un précédent post j'avais indiqué que ce composant permet l'intégration d'images à l'inverse de TRichEdit qui ne le permet pas.

    Merci encore d'être intervenu. Je vous souhaite une agréable journée !

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par orca29 Voir le message
    Je vous remercie de vos renseignements. Cependant, j'utilise Delphi 7 dans une machine virtuelle sous Windows 10. J'ai installé Windows 7 dans la machine virtuelle. Je vous remercie donc pour votre code. Cependant, ce dernier est trop compliqué pour moi. Vous utilisez des choses qui ne figurent pas dans l'aide de Delphi. Si j'utilisais votre code, j'aurais la sensation de ne pas être l'auteur de mon application. De plus, je ne comprends rien au code que vous m'indiquez.
    Le "curseur" dont vous parlez est un "Caret" dans le monde Windows, que ce soit un TRichEdit ou un TJVRichEdit, c'est toujours le même composant de Windows qui est utilisé. Delphi ne dessine pas le RichEdit c'est Windows qui s'en charge et le "curseur" est lui aussi géré par Windows, il faut donc s'adresser à Windows pour pouvoir intervenir dessus. L'interaction Delphi/Windows se fait via des méthodes "message", ici "WMSetFocus" et des appels à l'API Windows "CreateCaret", "ShowCaret". C'est le seul moyen de faire, mais c'est probablement le seul moyen dans toute application Windows quelque soit le langage.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Comment changer le format de DATE dans Oracle
    Par khanfir dans le forum Oracle
    Réponses: 3
    Dernier message: 20/04/2010, 20h55
  2. Changer l'apparence du graph dans un TChart
    Par FredericB dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/10/2005, 22h55
  3. Comment récupérer l'index du curseur dans une TStringGrid ?
    Par Sydaze dans le forum Composants VCL
    Réponses: 2
    Dernier message: 26/04/2005, 10h17
  4. Comment changer l'aspect du curseur sur un lien ?
    Par Fleep dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/03/2005, 18h30
  5. comment changer d'attribut de fonte dans un Tlabel?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 21/08/2002, 17h53

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