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

Langage Delphi Discussion :

un conseil pour démarrer une appli graphique SVP.


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 20
    Points : 15
    Points
    15
    Par défaut un conseil pour démarrer une appli graphique SVP.
    je dois greffer une interface graphique à une application déjà existante.
    Celle-ci consisterait à glisser-déposer des objets graphiques (10 maxi, dont je dessinerais le bmp) à l'intérieur d'un objet container; en fonction de ce que fait l'utilisateur, la bdd se construit.

    Quelq'un pourrait-il me conseiller un point de départ à cette nouvelle partie graphique?
    - un moteur?
    - des composants "graphiques" ou "diagrammes" (gratuits ou commerciaux)?
    - peut-être est-ce assez facile à mettre en oeuvre ce type d'interface avec les composants de base de D7?
    - autre piste?

    Bref, j'hésite et j'ai beau explorer le net je n'arrive pas à trouver quelque chose de simple; peut-être que je ne pose pas bien le problème!

    Merci d'avance.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Faire celà avec les composants standard (Timage/tbitmap) est possible.

    Possibilité 1 :
    La technique que l'on peut utiliser est de superposer une liste de Timage à fond transparent. le défaut est que cette technique ne fonctionne que si les objets sont à peu prés rectangulaires.

    Possibilité 2 :
    Une autre possibilité est de définir l'image finale sous forme logique comme une liste d'items graphiques et d'avoir une fonction qui retrace tout.
    Pour le drag and drop, il faut définir un Timage avec fond transparent qui contient juste le nouvel item à ajouter à l'image et déplacer ce Timage sur son event mousemove.
    Pour faire des modifications, on peut sélectionner un item particulier dèjà intégré dans l'image finale en le choissant par exemple via une combobox qui ferait référence à tous les items graphiques, puis se remettre en mettre l'état drag and drop.

  3. #3
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    salut ,

    je pense que tu as les composants qu'il faut dans delphi .
    J'avais fais une petite application dans ce genre , je te donne un exemple ci dessous .
    c'est basé sur des Tlistbox dans les quels je dessine dans les items des bitmap ( tu conserves toutes les caracteristique des bitmap , transparence ...)

    La TlistBox : BiblioImag possede toutes tes images que tu charges au depard .

    La Tlistbox : Container se rempli par dragg&drop.

    La gestion des Tlistbox se fait normalement sans tenir compte des images.

    Ensuite c'est juste une histoire de design..

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    unit Unit1image;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ImgList, StdCtrls;
     
    type
      TForm1 = class(TForm)
        BiblioImag: TListBox;
        Container: TListBox;
        procedure BiblioImagDrawItem(Control: TWinControl; Index: Integer;
          Rect: TRect; State: TOwnerDrawState);
        procedure FormCreate(Sender: TObject);
        procedure ContainerDragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
        procedure ContainerDragDrop(Sender, Source: TObject; X, Y: Integer);
        procedure ContainerDrawItem(Control: TWinControl; Index: Integer;
          Rect: TRect; State: TOwnerDrawState);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    Var MesBitmap: array[0..2] of tbitmap;
     
    //==============================================================================
    procedure TForm1.FormCreate(Sender: TObject);
    var i:integer;
    begin
      BiblioImag.Style:=lbOwnerDrawFixed;
      Container.Style:=lbOwnerDrawFixed;
      // taille des items en fonction de image
      BiblioImag.ItemHeight:=60;
      Container.ItemHeight:=60;
      BiblioImag.Width:=80;
      Container.Width:=80;
      // chargement de ta bibliotheque de bitmap
      for i:=0 to 2 do
      begin
         MesBitmap[i]:=Tbitmap.create;
         MesBitmap[i].LoadFromFile('c:\phoenix1112\ICONES\'+inttostr(i)+'.Bmp');
         BiblioImag.Items.Add(inttostr(i));
      end;
    end;
    //==============================================================================
    procedure TForm1.ContainerDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
        Accept :=false;
        if (Source as TListBox).Name='BiblioImag' then Accept :=true;
    end;
    //==============================================================================
    procedure TForm1.ContainerDragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
      if (Source as TListBox).Name='BiblioImag' then
      begin
          Container.Items.Add((Source as TListBox).items[(Source as TListBox).itemIndex]);
      end;
    end;
    //==============================================================================
    procedure TForm1.ContainerDrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    begin
       with (Control as TListBox).canvas do
       begin
             textOut(Rect.left,Rect.Top,(Control as TListBox).Items[index]);
             Draw(Rect.left,Rect.Top,MesBitmap[strtoint((Control as TListBox).items[index])]);
       end;
    end;
    //==============================================================================
    procedure TForm1.BiblioImagDrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    begin
        with (Control as TListBox).canvas do
        begin
           textOut(Rect.left,Rect.Top,(Control as TListBox).Items[index]);
           Draw(Rect.left,Rect.Top,MesBitmap[index]);
        end;
    end;
    //==============================================================================
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var i:integer;
    begin
      for i:=0 to 2 do MesBitmap[i].Free;
    end;
     
    end.
    bye

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Merci à graffito et petitcoucou31 de m'avoir répondu si vite.

    En fait à mieux y réfléchir j'aimerais un concept proche de celui du...rad Delphi!(et sans prétention!).

    Merci encore.

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    salut ,

    rad delphi !! que doit faire ton application alors ?

    bye.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    L'appli pourrait se présenter comme une surface de dessin avec une barre contenant une dizaine d'objets que l'utilisateur peut amener sur la surface et les disposer de telle façon que ça lui montre l'organisation de son installation(il s'agit d'une installation électrique signaux faibles).

    Le (ou les containers) pourraient être redimensionnés à l'aide de la souris et il serait possible, en cliquant sur l'un des objets du dessin 2D, de lui définir ses propriétés.

    Cela ressemble au principe du rad ou à n'importe quel logiciel de dessin type µsoft Visio2003 mais en plus simple.

    Le logiciel créée la base de données en fonction des liens entre objets.

    Salut.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 190
    Points : 218
    Points
    218
    Par défaut
    salut

    utilise des formes imbriques

    maform1:=tform1.create(panel_total);
    maform1.parent:=panel_total;
    maform1.show

    ...

    @+

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

Discussions similaires

  1. Besoin de d'aide pour démarrer une petite appli avec géoloc
    Par Kaoutchou dans le forum SIG : Système d'information Géographique
    Réponses: 1
    Dernier message: 26/07/2014, 01h08
  2. Réponses: 6
    Dernier message: 08/10/2013, 20h31
  3. Réponses: 1
    Dernier message: 21/01/2013, 10h05
  4. Quel outil pour une appli graphique "temps réel"
    Par Colargole dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 03/04/2009, 14h08
  5. Conseils pour démarrer une communauté virtuelle
    Par muad'dib dans le forum Webmarketing
    Réponses: 2
    Dernier message: 26/10/2008, 00h22

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