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 :

Gestion des tailles externes des TForm


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Par défaut Gestion des tailles externes des TForm
    Bonjour,

    quelqu'un sait-il comment on gère la taille externe des TForm ?
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end;
     
    var
      Form1: TForm1;
      F01, F02, F03: TForm;
      iW, iH: Integer;
     
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      iW := 200; iH := 100;
     
      F01:= TForm.Create(Application);
      F01.Parent := Self;
      F02:= TForm.Create(Application);
      F02.Parent := Self;
      F03:= TForm.Create(Application);
      F03.Parent := Self;
     
      with F01 do  begin
        Left   := 0;
        Top    := 0;
        Width  := iW;
        Height := iH;
        //SetBounds(0, 0, iW, iH);
        Show;
      end;
     
      with F02 do  begin
        Left   := iW +1;
        Top    := 0;
        Width  := iW;
        Height := iH;
       //SetBounds(iW+1, 0, iW, iH);
        Show;
      end;
     
      with F03 do  begin
        Left   := 0;
        Top    := iH +1;
        Width  := iW;
        Height := iH;
       // SetBounds(0, iH +1, iW, iH);
        Show;
      end;
    end;
     
    end.
    Résultat :
    Nom : 170409.png
Affichages : 167
Taille : 23,3 Ko

    Je voudrais placer F01, F02 et F03 bord à bord sous Windows, Linux et OS X. Je cherche une méthode portable plutôt que l'utilisation de constantes de correction.

    Merci. Cordialement. AD.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Bonjour,

    J'ai déplacé ton code du gestionnaire d'évennement OnCreate vers celui de OnShow puis j'ai apporté quelques petites modifications (voir code modifié ci-dessous). Et là ça marche en tout cas sous Windows. Je n'ai pas testé sous d'autres plateforme.

    Code PASCAL : 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
    procedure TForm1.FormShow(Sender: TObject);
    begin
      iW := 200; iH := 100;
      F01:= TForm.Create(Application);
      F01.Parent := Self;
      F02:= TForm.Create(Application);
      F02.Parent := Self;
      F03:= TForm.Create(Application);
      F03.Parent := Self;
     
      with F01 do  begin
        Left   := 0;
        Top    := 0;
        Width  := iW;
        Height := iH;
        //SetBounds(0, 0, iW, iH);
        Show;
      end;
     
      with F02 do  begin
    //    Left   := iW +1;
        Left   := F01.Width + 1 ;
        Top    := 0;
        Width  := iW;
        Height := iH;
       //SetBounds(iW+1, 0, iW, iH);
        Show;
      end;
     
      with F03 do  begin
        Left   := 0;
    //    Top    := iH +1;
        Top    := F02.Height +1;
        Width  := iW;
        Height := iH;
       // SetBounds(0, iH +1, iW, iH);
        Show;
      end;
    end;


    Nom : 2017-04-09_22-45-25.png
Affichages : 146
Taille : 10,0 Ko

    A+

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 142
    Par défaut
    Yop !
    Citation Envoyé par hmira Voir le message
    Je n'ai pas testé sous d'autres plateformes.
    Testé sous Linux Debian 32 bits, aucune des fiches "enfant" ne s'affiche. Aucune.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Par défaut
    Bonjour,

    oui, probablement un problème de gnome semble-t-il : http://forum.lazarus-ide.org/index.php?topic=34661.0
    Cordialement. AD.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Par défaut
    Bonjour.

    L'exemple avec les fenêtres filles fonctionne bien chez moi (XP). En revanche, si je pars d'une application vierge et que j'ajoute une 2ème fenêtre, j'ai le même problème de chevauchement.

    Exemple :
    form1 : left=500 et width=200
    form2 : left=701

    je dois mettre 708 pour que les bords se touchent (à 709 : petit espace)

    Bizarre !

Discussions similaires

  1. [WS 2008] Envoyer et recevoir des emails avec des serveurs externes
    Par saracen dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 07/12/2014, 15h30
  2. Mise en page auto en fonction des chapitres et des tailles de cellules
    Par GADENSEB dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/11/2014, 10h23
  3. [Débutant] taille axe des abscisses et des ordonnées
    Par bilou_12 dans le forum Images
    Réponses: 2
    Dernier message: 26/03/2012, 23h31
  4. ouvrir des fichiers avec des programmes externes
    Par julie_lab dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 25/10/2010, 06h05

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