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 :

Objet en arrière-plan [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre averti
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Points : 365
    Points
    365
    Par défaut Objet en arrière-plan
    Bonjour

    Dans un programme j'ai un memo avec un texte.
    Est-il possible quand un autre objet (Shape) couvre partiellement ce mémo que ce texte soit partiellement masqué ?


    je voudrais par exemple que le Disque Jaune masque la partie du texte correspondante

    Nom : masque.png
Affichages : 226
Taille : 5,6 Ko

    Si besoin de plus d'explications, ne pas hésiter à me le demander.

    Merci de vos conseils

  2. #2
    Membre régulier Avatar de danucc
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Points : 124
    Points
    124
    Par défaut
    Bonjour,

    Si c'est à la création du programme, il faut sélectionner le parent, c'est à dire le fond du form, puis dans l'inspecteur d'objet, click droit et choisir le Z-order qui convient.

    Si c'est dynamiquement, Shape1.BringToFront (en considérant que ton rond jaune s'appelle Shape1).

    Bonne journée.
    Danilo

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Salut,
    Citation Envoyé par danucc Voir le message
    Si c'est à la création du programme, il faut sélectionner le parent, c'est à dire le fond du form, puis dans l'inspecteur d'objet, click droit et choisir le Z-order qui convient.

    Si c'est dynamiquement, Shape1.BringToFront (en considérant que ton rond jaune s'appelle Shape1).
    As-tu testé tout ça ? Sous Linux/Debian/Lxde rien ne fonctionne...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Membre averti
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Points : 365
    Points
    365
    Par défaut
    Bonjour

    Désolé mais j'avais oublié de préciser que je suis sous Linux (Ubuntu pour simplifier) et les Z-Order ne semblent pas fonctionner pour les memo.
    Pour Labels ça fonctionne.... 1ère ligne

    Nom : masque2.png
Affichages : 213
Taille : 5,6 Ko

    pour l'exemple j'ai enlevé des couleurs et remis des ascenseurs

    donc il n'y aurait pas de solution ?

    Bien cordialement

  5. #5
    Membre régulier Avatar de danucc
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Points : 124
    Points
    124
    Par défaut
    Désolé, mais effectivement ça ne marche pas avec un Memo et ce n'est pas une question de Linux ou de Windows.

    Je n'ai pas la solution dans ce cas.
    Bonne chance.

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par joreveur Voir le message
    donc il n'y aurait pas de solution ?
    Ben si, tu l'as dit toi-même : avec un label et ses propriétés WordWrap à true et AutoSize à false, on peut arriver à ça :

    Nom : zorder.png
Affichages : 212
Taille : 6,7 Ko

    Dans le code du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      shape1.BringToFront;
    end;
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Membre averti
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Points : 365
    Points
    365
    Par défaut
    Bonjour,

    merci de cette piste.
    Je ne pensais pas qu'il y avait la propriété WordWrap sur l'objet Label ; cela va me faire avancer. Merci !

    Par cette méthode appelée par Button1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.caption:=memo1.Text;
    . j'arrive à ce résultat - label en jaune - en mettant du texte dans memo1.Lines mais ce, de façon manuelle.
    Nom : memo_label1.png
Affichages : 205
Taille : 19,8 Ko

    je n'ai pas réussi à manipuler cette façon de faire en codant.

    Bien cordialement

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par joreveur Voir le message
    je n'ai pas réussi à manipuler cette façon de faire en codant.
    Pas compris.

    Qu'est-ce que tu veux faire au juste ? Aligner d'une façon non naturelle tes lignes de texte ? Ben oui, va falloir y aller à la mano en insérant espaces et judicieux retour-chariot, mais comme dans le mémo.
    Et je ne vois pas/comprends pas comment il pourrait en être autrement.

    Et ça, c'est un nouveau problème qui n'a rien à voir avec le shape par dessus. Enfin, il me semble...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonsoir,

    Si je peux me permettre une petite précision...

    je suis sous Linux (Ubuntu pour simplifier) et les Z-Order ne semblent pas fonctionner pour les memo.
    Le problème n'est pas là, que ce soit sous Windows ou sous Linux.

    TMemo est un composant fenêtré (focalisable, comme TPanel, TForm...). Son parent est Form1.
    TShape est un composant non fenêtré (descendant de TGraphicControl comme un TImage, un TLabel). Son parent est Form1.
    Il est donc impossible de faire du Z-Order (ou du BringToFront) entre un TMemo et un TShape ! Le Memo sera toujours "au-dessus".
    Par contre, un BringToFront entre un TMemo et un TPanel est possible, comme un BringToFront entre un TShape et un TLabel.
    Si tu souhaites un TMemo en partie masqué, il faut placer un TShape sur un composant du genre TPanel.
    Mais un TPanel pur n'est pas transparent ! Donc il faut rendre transparent toute la zone en dehors du cercle. Sous Windows, on y arrive avec les régions, mais Linux et ses problèmes de transparence...??? à Jipété.


    Cordialement
    Thierry

  10. #10
    Membre averti
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Points : 365
    Points
    365
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Pas compris.

    Qu'est-ce que tu veux faire au juste ? Aligner d'une façon non naturelle tes lignes de texte ? Ben oui, va falloir y aller à la mano en insérant espaces et judicieux retour-chariot, mais comme dans le mémo.
    Et je ne vois pas/comprends pas comment il pourrait en être autrement.

    Et ça, c'est un nouveau problème qui n'a rien à voir avec le shape par dessus. Enfin, il me semble...
    Bonjour,
    oui c'est un autre sujet... qui était lié au précédent mais je ferais éventuellement un autre billet.
    Encore merci de tes conseils qui m'ont été utiles.

    Citation Envoyé par ThWilliam Voir le message
    Bonsoir,

    Si je peux me permettre une petite précision...



    Le problème n'est pas là, que ce soit sous Windows ou sous Linux.

    TMemo est un composant fenêtré (focalisable, comme TPanel, TForm...). Son parent est Form1.
    TShape est un composant non fenêtré (descendant de TGraphicControl comme un TImage, un TLabel). Son parent est Form1.
    Il est donc impossible de faire du Z-Order (ou du BringToFront) entre un TMemo et un TShape ! Le Memo sera toujours "au-dessus".
    Par contre, un BringToFront entre un TMemo et un TPanel est possible, comme un BringToFront entre un TShape et un TLabel.
    Si tu souhaites un TMemo en partie masqué, il faut placer un TShape sur un composant du genre TPanel.
    Mais un TPanel pur n'est pas transparent ! Donc il faut rendre transparent toute la zone en dehors du cercle. Sous Windows, on y arrive avec les régions, mais Linux et ses problèmes de transparence...??? à Jipété.


    Cordialement
    Thierry
    Merci pour ces précisions qui me permettent de mieux comprendre. En réalité je suis très débutant avec Lazarus.

    J'essaie de faire le défi (défi pour moi-même !) de l'écran de veille. alors je découvre un peu ce qu'il est possible de faire.

    Merci à tous pour votre aide.

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

Discussions similaires

  1. [WD-2007] Objets/formes en arrière-plan inaccessibles
    Par Artin dans le forum Word
    Réponses: 2
    Dernier message: 19/04/2011, 14h09
  2. [XL-2007] Mettre un objet visio en arrière plan
    Par jojo33bx dans le forum Excel
    Réponses: 4
    Dernier message: 15/11/2010, 21h33
  3. Réponses: 9
    Dernier message: 31/05/2010, 05h52
  4. Objet Graphics en arrière plan
    Par chris78 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 15/01/2009, 17h18
  5. Réponses: 4
    Dernier message: 19/02/2006, 18h09

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