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

Langage Delphi Discussion :

[D7] TrackBar personnalisée


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 509
    Par défaut [D7] TrackBar personnalisée
    Bonjour à tous,

    j'ai créé une TrackBar personnalisée qui s'affiche bien :

    Track1.zip

    Je voudrais y ajouter une procédure OnChange afin de pouvoir réagir à un changement de valeur dans la Form appelante. Mais je ne sais pas faire

    Quelqu'un peut il m'aider ?

    Merci
    A+
    Charly

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Si tu veux l'enregistrer comme composant le mieux est de remettre une partie de ce que tu as en Public dans une clause Published (même portée, mais prise en compte par l'IDE et à priori qu'avec des "property").

    Pour le onChange, ajoute juste un
    property onChange:TNotifyEvent;
    (Maj+Ctrl+C pour le laisser ajouter le reader et le writer)

    Dans ton code, lorsque la valeur change, tu fais juste

    if assigned(onChange) then onChange(Self);

  3. #3
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Au passage, pourquoi as-tu redéclaré les propriétés onMouseMove, Up et Down ? Tu veux t'en servir de l'extérieur du composant ou c'était pour en changer la portée venant de l'ancêtre?

  4. #4
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 509
    Par défaut
    Merci Patrick,

    je ne veux pas faire de composant, je préfère garder la classe dans une unité. Avec les compo, quand on change de version il faut tout réinstaller. Tu me diras avec D7 ... mais avec D10.4 CE c'est le cas. Alors, je préfère ajouter des unités à mes projets.

    Sinon j'ai codé : property onChange:TNotifyEvent et Ctrl+Maj+C m'a créé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Private
        property onChange:TNotifyEvent read FonChange write SetonChange;
        ...
        procedure SetonChange(const Value: TNotifyEvent);
      Public
        ...
        property onChange:TNotifyEvent read FonChange write SetonChange;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    { ====================================================================== }
    procedure TMyTracker.SetonChange(const Value: TNotifyEvent);
    begin
      FonChange := Value;
    end;
    { ====================================================================== }
    Mais comment appeler OnChange dans la Form (F_Princ) qui utilise TMyTracker ?

    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
    { ====================================================================== }
    procedure TF_Princ.FormCreate(Sender: TObject);
    begin
      Cir := TJaugeCir.Create(TabSheet2);   //  Cir est un compteur à aiguille
      Cir.Parent := TabSheet2 ;
      Cir.Left := 50 ;
      Cir.Top := 30 ;
      Cir.Width := 400 ;
      cir.Valeur := 30 ;
     
      ...
      Trk2 := TMyTracker.Create(TabSheet2);   //  là c'est mon Tracker
      Trk2.Parent := TabSheet2 ;
      Trk2.Left := 200 ;
      Trk2.Top := 504 ;
      Trk2.Largeur := 300 ;
      Trk2.PosLabel   := 1 ;
      Trk2.Maxi := Round(Cir.Maxi) ;
      Trk2.Mini := Round(Cir.Mini) ;
      Trk2.Position := Round(cir.Valeur) ;
      Trk2.Largeur := StrToIntDef(E_Largeur.Text, 300)  ;
      Trk2.Epaisseur := StrToIntDef(E_Epaisseur.Text, 6)  ;
      Trk2.Curseur := gdTrait ;
    Je voudrais que quand Trk2.Position change, Cir2.Position = Trk2.Position

    A+
    Charly

  5. #5
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Ca devient un événement, donc dans la forme tu crées une méthode (en copiant collant un BoutonClick par exemple) et tu fais juste un

    trk2.onChange :=TaMethode;

    (c'est l'identifiant, pas l'appel avec les paramètres, donc le pointeur vers le code associé à l'instance de ta fiche)

    Par contre, dans ce que le Maj+Ctrl+C t'as créé, il y a vraiment le doublon du property ou c'est une erreur de copier/coller ? (si la réponse est oui, vire la version privée et garde la publique)

  6. #6
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    tu peux regarder cet exemple de projet, des fois j'utilise le composant en tant que tel, des fois je l'ajoute pas code comme toi (exemple bouton2click) :

    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
    procedure TForm2.Button2Click(Sender: TObject);
    begin
      with TOlfAboutDialog.Create(self) do
      begin
        Titre := 'TITRE DU LOGICIEL';
        VersionNumero := '8964';
        versiondate := '12/03/2022';
        url := 'https://developpeur-pascal.fr';
        description.text := 'description du logiciel';
        licence.Clear;
        for var i := 1 to 10 do
          licence.Add('licence du logiciel ligne ' + i.ToString);
        image := Image1;
        onURLClick := OlfAboutDialog1URLClick;
        Execute;
      end;
    end;

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

Discussions similaires

  1. [langage] personnaliser le tri
    Par schnecke dans le forum Langage
    Réponses: 3
    Dernier message: 24/03/2004, 15h14
  2. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    Réponses: 5
    Dernier message: 21/11/2003, 18h13
  3. [FLASH MX2004] Personnaliser les scrollbars
    Par stephane eyskens dans le forum Flash
    Réponses: 10
    Dernier message: 09/10/2003, 12h53
  4. Comment effacer un Tick sur une TrackBar ?
    Par ZeImp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/08/2003, 21h39
  5. [VB6] [UserControl] Évènements personnalisés
    Par Frankywinky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2003, 17h56

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