1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2015
    Messages
    229
    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 : 229
    Points : 243
    Points
    243

    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 : 70
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 éprouvé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2003
    Messages
    581
    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 : 581
    Points : 1 245
    Points
    1 245
    Billets dans le blog
    5

    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 : 55
Taille : 10,0 Ko

    A+
    "Une idée mal écrite est une idée fausse !"
    http://hamid-mira.blogspot.com

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

    Informations forums :
    Inscription : juillet 2006
    Messages : 5 876
    Points : 8 084
    Points
    8 084

    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.
    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 actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2015
    Messages
    229
    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 : 229
    Points : 243
    Points
    243

    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 du Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 47
    Points : 69
    Points
    69

    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 IO
    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