Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CREATION ET GESTION DYNAMIQUE D'UN COMPOSANT TSHAPE


Information sur la source

Catégorie :Composants Classé sous : creation, composant, shape Niveau : Débutant Date de création : 09/11/2008 Date de mise à jour : 09/11/2008 18:28:02 Vu / téléchargé: 1 251 / 155

Note :
Aucune note

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

Bonjour a tous,
Voila c'est mon premier code que je poste, ce sont quelques idées que j'ai eu pour un projet qui n'a pas abouti.
Pour résumer, la création et la destruction d'un multitude d'objet TShape tout en permettant la modification de ces propriétés.
  
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Main.dfmTélécharger ce fichier [Réservé aux membres club]1 737 octets
  • Main.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 707 octets
  • Project1.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier360 octets
  • Project1.dprojTélécharger ce fichier [Réservé aux membres club]3 143 octets
  • Project1.dproj.localTélécharger ce fichier [Réservé aux membres club]1 206 octets
  • Project1.identcacheTélécharger ce fichier [Réservé aux membres club]270 octets
  • Project1.resTélécharger ce fichier [Réservé aux membres club]5 280 octets
  • Propr.dfmTélécharger ce fichier [Réservé aux membres club]4 983 octets
  • Propr.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 091 octets

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de JulioDelphi le 10/11/2008 11:02:39 administrateur CS

Salut !
Source sans grand intérêt mais qui peut etre sympa si tout est bien géré. Pas mal de personnes se posent des questions sur la création dynamique.
Je n'ai pas encore testé, juste lu le code en travers et je vois un peu trop de procedures identiques, on peut simplifier tout ça à mon avis :]
Je regarde ce soir, bon courage.

signaler à un administrateur
Commentaire de JulioDelphi le 10/11/2008 20:47:49 administrateur CS

Main.pas :
----------
1) Renommer TOUS les composants afin de savoir à quoi sert le Button1 ou le RadioButton2 ...
2) Réindentation du code.
3) Modification des 'cast' ex: (Source as TShape).Machin -> TShape(Source).Machin
4) Suppression du OnFormResize qui est inutile car les propriétés "Anchors" des composants servent à ça.
5) Modification de ... :
    case Shape1.Shape of
    stCircle: ComboBox1.ItemIndex := 0;
    stEllipse: ComboBox1.ItemIndex := 1;
    stRectangle: ComboBox1.ItemIndex := 2;
    stRoundRect: ComboBox1.ItemIndex := 3;
    stRoundSquare: ComboBox1.ItemIndex := 4;
    stSquare: ComboBox1.ItemIndex := 5
    end;
--> ... en une seule ligne :
    cb_Shape.ItemIndex := Ord(ShapeDemo.Shape); // Ord() : ordinal d'un type énuméré par exemple.
Pour cela, j'ai dû retrier le contenu de la ComboBox dans le même ordre que le type énuméré.
6) Ajout d'un petite vérif : "if (Objet is TShape) then"

Propr.pas :
-----------
1) Renommer TOUS les composants
2) Modification de ... :
  case ComboBox1.ItemIndex of
  0:Shape1.Shape := stCircle;
  1:Shape1.Shape := stEllipse;
  2:Shape1.Shape := stRectangle;
  3:Shape1.Shape := stRoundRect;
  4:Shape1.Shape := stRoundSquare;
  5:Shape1.Shape := stSquare
  end
--> ... en une seule ligne :
  ShapeDemo.Shape := TShapeType(cb_Shape.ItemIndex);
Hop, un cast avec le type énuméré !
3) Modification de :
procedure TPagesDlg.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Edit1.GetTextLen > 0) and (not (key in [#8,'0'..'9'])) then key:=#0
end;

procedure TPagesDlg.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if (Edit1.GetTextLen > 0) and (not (key in [#8,'0'..'9'])) then key:=#0
end;

procedure TPagesDlg.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
  if (Edit1.GetTextLen > 0) and (not (key in [#8,'0'..'9'])) then key:=#0
end;

procedure TPagesDlg.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
  if (Edit1.GetTextLen > 0) and (not (key in [#8,'0'..'9'])) then key:=#0
end;

Déjà il y a une erreur de copié/collé car tu vérifie toujours "Edit1.GetTextLen", puis quand tu fais 4 procédure identiques, tu ne trouves pas ça un peu inutile ?
Voici une seule ligne :
  if (TEdit(Sender).GetTextLen > 0) and (not (key in [#8,'0'..'9'])) then key:=#0
Tu mets cette procédure pour les 4 TEdit ! Le sender s'occupe du reste.
4) Supression des 2 RadioButton dont tu détournais l'utilisation pour ajouter des ColorBox. Code :
  if Sender=color_Fond then
       ShapeDemo.Brush.Color := color_Fond.Selected
  else ShapeDemo.Pen.Color := color_Contour.Selected;
5) Suppression du Close; dans la procedure du bouton OK, tu es en ShowModal et ton bouton retourne le code mrOK ! A quoi sert le close !?
6) Ajout d'une petite touche perso : une case a cocher pour mettre le shape en pointillé, Code :

procedure TFormPagesDlg.chk_dottedClick(Sender: TObject);
const Styles: array[Boolean] of TPenStyle = (psSolid, psDot);
begin
  ShapeDemo.Pen.Style:= Styles[chk_dotted.Checked]
end;

J'ai aussi modifié les DFM, pour réorganiser un peu, renommer, etc etc
Qu'en penses tu ?

signaler à un administrateur
Commentaire de JulioDelphi le 10/11/2008 20:48:48 administrateur CS

ps : lien vers mon .zip :
http://diabloporc.free.fr/delphi/lord948.zip garantie sans virus :]

signaler à un administrateur
Commentaire de Bacterius le 10/11/2008 23:37:49

Lol JulioDelphi :

"http://diabloporc.free.fr/delphi/lord948.zip garantie sans virus :]"

Le petit sourire à la fin n'est pas fait pour renforcer l'idée de ta phrase ^^
Je veux dire on va se douter d'un truc là ...

:]

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de lord948 le 11/11/2008 10:19:54

Merci beaucoup pour m'avoir accordé autant de temps a corrigé mes bourdes, et puis rien a dire , j'espère au moyen qu'un jour je pourrai rivalisé avec sa

signaler à un administrateur
Commentaire de offlake le 14/11/2008 11:12:25

Revaliser sans doute pas!!
By Offlake

signaler à un administrateur
Commentaire de lord948 le 19/11/2008 14:01:23

(Offlake)
désolé mais je ne voit pas l'utilité de ton commentaire.
merci de préciser

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Shape et 3D [ par lapucedu88 ] Bonjour je cherche comment donner un aspect 3D à un composant de type Shape (si sela est possible bien sûr).En fait, pour être pré Creation d'un composant ayant comme propriété un autre composant [ par guiguitt ] Bonjour,J'ai un petit problème... Voila Je veux créer un composant dérivé de TEdit qui propose au programmeur une propriété de Type TCollection. Ainsi creation de composant a l'execution [ par canabice01 ] salut tout le monde voilàj'ai arriver a créer un seul composant : private { Déclarations privées } MonButton:TButton; implementation procedure Creation d'un composant [ par Wolf007 ] Bonjour a tous. Voila mon probleme, je voudrai ajouter à un TEdit la propriete transparent comme celle d'un Label. Je sais qu'il faut créer un composa Creation d'un composant [ par Wolf007 ] Bonjour a tous. Voila mon probleme, je voudrai ajouter à un TEdit la propriete transparent comme celle d'un Label. Je sais qu'il faut créer un composa Composant shape translucide (alpha) [ par orelien ] Bonjour,Je cherche à rendre un composant shape translucide sous Delphi 5 (propriété alpha sous Delphi 6)Si quelqu'un à une idée.MerciOrélien. creation de composant [ par barbulille ] quand je crée un composant, ca se passe bien, il s'installe mais quand je le pose sur une fiche, au lieu de me mettre l'icone( celle par defaut) il me creation dynamique de composant [ par MoveX ] comment cree t on des composants de maniere dynamique?j avais vu une source ou aucun composant netait pose sur la form mais a lexecution on creait un composant serveur http [ par MoveX ] voila, si quelqu un pouvait me dire un composant pour creer un serveur http assez simple de preference, ce serait gentil de m indiquer, et si possible HDC ==> Qu'est-ce que c'est? [ par Citron_vert ] Je voudrais faire un programme utilisant une webcam. J'ai trouvé un composant bien pratique sur le site, TCamera.Ce composant permet de prendre une ph


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.