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 :

alignement boutons dans un Tpanel


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Par défaut alignement boutons dans un Tpanel
    bonjour tout le monde ,

    je viens de terminer mon graduat d'analyste-programmeur en cours du soir

    et je dois donc realiser un travail de fin d'études

    j'ai choisi de faire la gestion complete d'un café-restaurant de ma région

    j'utilise pour ce faire delphi 2005 , et microsoft access

    voici mon probleme :

    pour la réalisation de l interface de la caisse-enregistreuse de ce café

    j'ai pensé qu'a la creation de ma Form , compter le nombre d'enregistrements de ma requetes concernant les familles de produits

    exemple : pour ma famille alcool , j'ai 22 enregistrements et donc j'aimerais creer dynamiquement 22 boutons et les mettre dans un Tpanel

    Mon probleme,j'arrive a creer dynamiquement mes boutons , mais le probleme c est que ca dépasse de mon Tpanel

    Comment puis je faire pour par exemple les aligner en colonnes dans mon Tpanel et qu'ils ne dépassent pas de mon Tpannel ?

    merci d'avance en tout cas a tous pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 89
    Par défaut
    Salut,
    ce n'est pas difficile...
    il faut faire comme ceci :

    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
    procedure CreateButton;
    const
      MaxCol = 5;
      MaxRow = 5; // Matrice de 5x5 = 25 bouton possible dans ton TPanel...
      Margin = 2;
    var
      Query : TAdoQuery;
      Button : TButton;
      Index : integer;
      Width : integer;
      Height : integer;
    begin
      Query := TAdoQuery.Create(Self); // ou nil ça dépend de ce que tu veux.
      Query.Connection := Form1.ADOConnection;
      Query.SQL.Text := 'SELECT * FROM T_Consumable_Alcohol ORDER BY Name';
      Query.Open;
      Query.First;
      Index := 0;
      Width := (MyPanel.Width - 2*Margin) div MaxCol;
      Height := (MyPanel.Height - 2*Margin) div MaxRow;
      while not Query.Eof do begin
        Button := TButton.Create(MyPanel);
        Button.Parent := MyPanel;
        Button.Name := Query.FieldByName('Name').AsString;
        Button.Caption := Query.FieldByName('Name').AsString;
        Button.Left := Margin + Width * Index;
        Button.Width := Width;
        Button.Top := Margin + Height * ((Index+1) div MaxCol);
        Button.Height := Height;
        Inc(Index);
        Query.Next;
      end;
      Query.Close;
      Query.Free;
    end;
    Voilà j'espère que ça t'aidera...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Par défaut
    ok chaours,merci beaucoup , je vais tester ca

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Par défaut
    rien a faire

    les boutons sortent du bord de mon panel

    (pas sur la form principale,mais bien dans le panel et ca depasse le bord donc

    je ne vois qu'une partie des boutons créés)

    je te montre mon code que j ai adapté d apres ton code :

    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
    var
    Button : TButton;
      Index : integer;
      Width : integer;
      Height : integer;
     
    begin
      Nombre:=Kadaotable1.RecordCount;
      Index := 0;
      Width := (Panel1.Width - 2*Margin) div MaxCol;
      Height := (Panel1.Height - 2*Margin) div MaxRow;
      while (Index<=Nombre) do begin
        Button := TButton.Create(Panel1);
        Button.Parent := Panel1;
        Button.Name := Kadaotable1.FieldByName('Nom_Article').AsString;
        Button.Caption := Kadaotable1.FieldByName('Nom_Article').AsString;
        Button.Left := Margin + Width * Index;
        Button.Width := Width;
        Button.Top := Margin + Height * ((Index+1) div MaxCol);
        Button.Height := Height;
        Inc(Index);
      end;
     
    end;
    merci encore a tous pour votre aide en tout cas

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par défaut
    Bonjour,

    Je pense que tu es sur une mauvaise voie :

    Admettons que tu arrives à faire ce que tu veux actuellement, avec 22 boutons (normalement, ça ne devrait pas poser de problème)

    MAIS

    Que se passera-t-il quand tu auras une liste de 50, ou 100, ou plus, boutons à ajouter ?

    Il y aura forcément une limite à partir de laquelle ta solution ne sera plus applicable de manière acceptable (et ne crois pas ce que peut te dire ton employeur si tu lui demandes "Quelle est la limite maximale possible", il n'en sait rien)

    Il vaut donc mieux prévoir cela tout de suite, et ne pas se focaliser là-dessus.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Par défaut
    ok thewho,je suis d'accord avec toi

    d'autant plus que je pense que ce sera lourd a gérer par la memoire

    si par exemple j ai 100 ou voir 150 enregistrements dans une table

    mais alors ? comment ferais tu personellement pour presenter l'interface

    de la caisse a l'ecran ?

    car sur toute les caisses enregistreuses de café que j'ai vu

    c'est présenté sous forme de bouttons (Biere,J.B,coca,etc...) , un bouton par articles

    car si je laisse ca sous forme de Dbgrid , ca va etre difficile a gerer par le serveur de café,non ?

    merci d'avance a tous pour votre aide en tout cas

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

Discussions similaires

  1. Alignement de boutons dans une boite.
    Par johndu81 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/01/2013, 01h06
  2. [ZF 1.9] Aligner deux boutons dans un formulaire
    Par mrjay42 dans le forum Zend_Form
    Réponses: 1
    Dernier message: 26/10/2009, 13h42
  3. Alignement bouton dans la page
    Par asvin dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 08/12/2008, 23h23
  4. Alignement boutons radio dans un formulaire en CSS
    Par totijax dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/09/2006, 10h02

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