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

C++Builder Discussion :

interface de facturation


Sujet :

C++Builder

  1. #1
    Débutant Avatar de devlopassion
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2006
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Août 2006
    Messages : 576
    Points : 276
    Points
    276
    Par défaut interface de facturation
    bonjour tous le monde
    - je développe un logiciel de facturation et gestion de stock
    - et je voudrais si c'ezst possible avoir une idée sur l'interface a utilisé pour la facturation
    je voudrais fair comme un BGrid et quand je clique sur un ligne il affiche la liste des articles a choisir pour factuation et il sera ajouter directement a la liste et me permet de choisir la quantité bien sur pour la facturation.

    - MERCI
    le plaisir d'apprendre

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Bonsoir,

    Pourrais-tu être plus clair? Car pour ma part je n'ai pas compris ce que tu voulais faire...

    Essai de donner un exemple, ou d'illustrer ce que tu voudrais faire...
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut devlopassion
    Peut etre en utilisant un ComboBox et en remplissant les Items avec les articles que tu desire
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  4. #4
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir

    Je me permets de faire une petite proposition, en me basant sur un truc que je suis en train de bricoler.
    Donc, pour essayer de résumer correctement, en espérant ne pas trop être confus:
    -> j'ai renseigné la propriété "Columns" du DBGrid, et donc défini de manière "statique" les champs qui allaient apparaître (puisque je n'ai besoin que de 11 champs, issus d'une requête avec un ADOQuery).
    Cela me permets, pour chaque champs, de définir facilement et individuellement des paramètres particuliers: par exemple, dans le bout de code qui suit, les champs d'indice 6 a 10 ont une font en Webdings qui me permets de simuler de fausses cases a cocher, les autres ont leur propriété "ButtonStyle" a cbsEllipsis.
    Je gère précisement les évènements OnCellClick() et OnEditButtonClick() afin de traiter les différents cas, en fonction de la colonne contenant la cellule selectionnée, afin de faire apparaitre soit un PopupMenu avec des valeurs issues d'une requete, soit une TFrame (un besoin particulier pour mon cas), soit a nouveau un mini-Popup afin de faire basculer la propriété True/False des fausses cases a cocher, etc ...
    NB: J'aurais pu, aussi, utiliser la propriété "PickList" de chaque colonne; j'ai du mettre la propriété DefaultDrawing de la DBGrid a false et gérer le OnDrawColumnCell (uniquement a cause des fausses cases a cocher).
    Un peu de code:
    .cpp, OnDrawColumnCell
    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
     
    int i;
    tagRECT t_rect;
    	t_rect.top = Rect.Top +1 ;
    	t_rect.bottom = Rect.Bottom;
    	t_rect.left = Rect.Left + (Rect.Width()/4);
    	t_rect.right = Rect.Left+ (3*(Rect.Width()/4));
    	switch(Column->Index)
    	{
    		case 6:
    		case 7:
    		case 8:
    		case 9:
    		case 10:
    		dbg_cat->Canvas->Brush->Color = clBtnFace;
    			switch(Column->Field->AsInteger)
    			{
    				case 0:
    					dbg_cat->Canvas->TextRect(Rect, Rect.Left, Rect.Top, "");
    				break;
    				case 1:
    					dbg_cat->Canvas->TextRect(Rect, Rect.Left + (Rect.Width()/3), Rect.Top, "a");
    				break;
    				default:
    				break;
    			}
    		DrawEdge(dbg_cat->Canvas->Handle, &t_rect, EDGE_SUNKEN, BF_RECT);
    		break;
    		default:
    			dbg_cat->DefaultDrawColumnCell(Rect, DataCol, Column, State);
    		break;
        }
    .cpp, OnEditButtonClick
    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
     
    TPoint point;
    point = ScreenToClient(Mouse->CursorPos);
    	switch(CurrCol)
    	{
    		case 0:
    		case 2:
    			frameSimple1->Top = point.y;
    			frameSimple1->Left = point.x;
    			frameSimple1->ed_frameSimple->Text = dbg_cat->Fields[CurrCol]->AsString;
    				frameSimple1->BasicText = dbg_cat->Fields[CurrCol]->AsString;
    			frameSimple1->infoSize->Caption = "Max size for text : " + IntToStr(dbg_cat->Fields[CurrCol]->Size) + " chars";
    				frameSimple1->SizeMax = dbg_cat->Fields[CurrCol]->Size;
    		frameSimple1->Visible = true;
    		break;
    		case 4:
    			PopupCat->Popup(point.x, point.y);
    		break;
    		default:
     
    		break;
    	}
    .cpp, OnCellClick
    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
     
    CurrCol = Column->Index;
    	TPoint point;
    		point = ScreenToClient(Mouse->CursorPos);
    	switch(CurrCol)
    	{
    		case 6:
    		case 7:
    		case 8:
    		case 9:
    		case 10:
    			PopupFlag->Popup((GB_action->Left + point.x), (GB_action->Top + point.y));
    		break;
    		default:
     
    		break;
    	}
    PS: CurrCol est un Integer déclaré en private dans le.h de la TForm, juste pour info: frameSimple1 est une TFrame (besoin particulier), PopupCat un TPopupMenu chargé dynamiquement; GB_action le TGrouBox contenant la DBGrid; dans le OnDrawColumnCell, je mets un "a" webdings a la place de la valeur du champs, ceci me donnant la "coche" de la fausse case a cocher, le reste est complété par DrawEdge.
    Rien d'extraordinaire donc, mais c'est mignon et ca marche bien ...

    Tu dois donc pouvoir reprendre, par ex, le coup du OnEditButtonClick et charger pour certains champs des listes (ou Popup) avec les valeurs devant être entrées dans la DBGrid, etc ...

    En espérant t'aider,
    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  5. #5
    Débutant Avatar de devlopassion
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2006
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Août 2006
    Messages : 576
    Points : 276
    Points
    276
    Par défaut
    Bonjour,
    Merci bq pour cette réponse , et pour l'effort
    je vais essayé cette solution , meme si j'ai pas trop bien compri ;-)
    encore merci


    Citation Envoyé par Sunchaser Voir le message
    Bonsoir

    Je me permets de faire une petite proposition, en me basant sur un truc que je suis en train de bricoler.
    Donc, pour essayer de résumer correctement, en espérant ne pas trop être confus:
    -> j'ai renseigné la propriété "Columns" du DBGrid, et donc défini de manière "statique" les champs qui allaient apparaître (puisque je n'ai besoin que de 11 champs, issus d'une requête avec un ADOQuery).
    Cela me permets, pour chaque champs, de définir facilement et individuellement des paramètres particuliers: par exemple, dans le bout de code qui suit, les champs d'indice 6 a 10 ont une font en Webdings qui me permets de simuler de fausses cases a cocher, les autres ont leur propriété "ButtonStyle" a cbsEllipsis.
    Je gère précisement les évènements OnCellClick() et OnEditButtonClick() afin de traiter les différents cas, en fonction de la colonne contenant la cellule selectionnée, afin de faire apparaitre soit un PopupMenu avec des valeurs issues d'une requete, soit une TFrame (un besoin particulier pour mon cas), soit a nouveau un mini-Popup afin de faire basculer la propriété True/False des fausses cases a cocher, etc ...
    NB: J'aurais pu, aussi, utiliser la propriété "PickList" de chaque colonne; j'ai du mettre la propriété DefaultDrawing de la DBGrid a false et gérer le OnDrawColumnCell (uniquement a cause des fausses cases a cocher).
    Un peu de code:
    .cpp, OnDrawColumnCell
    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
     
    int i;
    tagRECT t_rect;
    	t_rect.top = Rect.Top +1 ;
    	t_rect.bottom = Rect.Bottom;
    	t_rect.left = Rect.Left + (Rect.Width()/4);
    	t_rect.right = Rect.Left+ (3*(Rect.Width()/4));
    	switch(Column->Index)
    	{
    		case 6:
    		case 7:
    		case 8:
    		case 9:
    		case 10:
    		dbg_cat->Canvas->Brush->Color = clBtnFace;
    			switch(Column->Field->AsInteger)
    			{
    				case 0:
    					dbg_cat->Canvas->TextRect(Rect, Rect.Left, Rect.Top, "");
    				break;
    				case 1:
    					dbg_cat->Canvas->TextRect(Rect, Rect.Left + (Rect.Width()/3), Rect.Top, "a");
    				break;
    				default:
    				break;
    			}
    		DrawEdge(dbg_cat->Canvas->Handle, &t_rect, EDGE_SUNKEN, BF_RECT);
    		break;
    		default:
    			dbg_cat->DefaultDrawColumnCell(Rect, DataCol, Column, State);
    		break;
        }
    .cpp, OnEditButtonClick
    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
     
    TPoint point;
    point = ScreenToClient(Mouse->CursorPos);
    	switch(CurrCol)
    	{
    		case 0:
    		case 2:
    			frameSimple1->Top = point.y;
    			frameSimple1->Left = point.x;
    			frameSimple1->ed_frameSimple->Text = dbg_cat->Fields[CurrCol]->AsString;
    				frameSimple1->BasicText = dbg_cat->Fields[CurrCol]->AsString;
    			frameSimple1->infoSize->Caption = "Max size for text : " + IntToStr(dbg_cat->Fields[CurrCol]->Size) + " chars";
    				frameSimple1->SizeMax = dbg_cat->Fields[CurrCol]->Size;
    		frameSimple1->Visible = true;
    		break;
    		case 4:
    			PopupCat->Popup(point.x, point.y);
    		break;
    		default:
     
    		break;
    	}
    .cpp, OnCellClick
    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
     
    CurrCol = Column->Index;
    	TPoint point;
    		point = ScreenToClient(Mouse->CursorPos);
    	switch(CurrCol)
    	{
    		case 6:
    		case 7:
    		case 8:
    		case 9:
    		case 10:
    			PopupFlag->Popup((GB_action->Left + point.x), (GB_action->Top + point.y));
    		break;
    		default:
     
    		break;
    	}
    PS: CurrCol est un Integer déclaré en private dans le.h de la TForm, juste pour info: frameSimple1 est une TFrame (besoin particulier), PopupCat un TPopupMenu chargé dynamiquement; GB_action le TGrouBox contenant la DBGrid; dans le OnDrawColumnCell, je mets un "a" webdings a la place de la valeur du champs, ceci me donnant la "coche" de la fausse case a cocher, le reste est complété par DrawEdge.
    Rien d'extraordinaire donc, mais c'est mignon et ca marche bien ...

    Tu dois donc pouvoir reprendre, par ex, le coup du OnEditButtonClick et charger pour certains champs des listes (ou Popup) avec les valeurs devant être entrées dans la DBGrid, etc ...

    En espérant t'aider,
    @+
    le plaisir d'apprendre

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/04/2013, 00h48
  2. projet de fin d'étude: interface de facturation sous android
    Par zahroun dans le forum Autres systèmes
    Réponses: 0
    Dernier message: 11/04/2013, 18h10
  3. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  4. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  5. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27

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