LA CLOCHE

Il y a ceux qui lisent cette actualité avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam

L'article a été rédigé à partir des résultats d'analyses de programmes écrits par de jeunes développeurs de notre groupe.

Organiser correctement la séquence des composants de commutation

De nombreux utilisateurs, en particulier ceux qui travaillaient auparavant sous DOS, ont l'habitude de basculer entre les champs de saisie non pas avec la souris, mais en utilisant le clavier avec la touche Tab. De plus, c'est beaucoup plus rapide que de sélectionner chaque champ avec la souris. Par conséquent, l'ordre des composants de commutation doit être réglé correctement. Cela s'applique à la fois aux composants à l'intérieur de tous les composants du conteneur (panneaux, GroupBox, etc.) et aux composants du conteneur eux-mêmes, s'il y en a plusieurs sur le formulaire.

L'ordre de commutation des composants à l'intérieur du conteneur est défini par la propriété TabOrder. Le premier devient le composant actif, dont TabOrder vaut 0, le second avec 1, et ainsi de suite, jusqu'à ce que tous les composants soient énumérés. En outre, le composant possède une propriété TabStop qui indique si le composant recevra le focus lorsqu'il sera commuté avec la touche Tab. Si vous devez interdire le passage à un composant, définissez son TabStop \u003d false. Dans ce cas, vous ne pouvez basculer vers ce composant qu'à l'aide de la souris.

Il y a des moments où les utilisateurs habitués à changer une certaine clé dans un programme, par habitude, continuent de l'utiliser dans d'autres. Cela se produit souvent avec les utilisateurs 1C, où la touche Entrée peut être utilisée pour naviguer dans les champs de saisie. Eh bien, donnons-leur cette opportunité dans nos programmes, s'ils le demandent. Définissez la propriété KeyPreview du formulaire sur true et écrivez un gestionnaire d'événements pour l'événement OnKeyPress:

Procédure TForm1.FormKeyPress (Sender: TObject; var Key: Char);
commencer
si ord (clé) \u003d vk_Return alors
Form1.SelectNext (PriemForm.ActiveControl, true, true);
fin;

Un tel gestionnaire permet de naviguer dans les éléments du formulaire lorsque la touche Entrée est enfoncée. Il convient de noter que cette méthode ne fonctionnera pas avec les boutons, car le fait d'appuyer sur Entrée sur un bouton entraîne son appui, tandis que d'appuyer sur Tab transfère le focus d'entrée au composant suivant dans la séquence de basculement.

Boutons par défaut

Tous les mêmes utilisateurs s'habituent rapidement au fait que dans les boîtes de dialogue de l'application, en règle générale, vous pouvez confirmer votre choix avec la touche Entrée et annuler avec la touche Échap. Ne les décevons pas dans nos programmes, d'autant plus que c'est très facile à faire. Pour un bouton qui répond à Entrée, définissez la propriété Default sur true. Pour un bouton qui répond à Echap, définissez la propriété Cancel sur true. Et c'est tout.

Oui ou non

Toutes les boîtes de dialogue demandant des actions utilisateur doivent avoir au moins deux boutons: confirmer l'action et annuler l'action (Oui / Non, Enregistrer / Annuler, etc.). L'annulation de l'action peut se faire en fermant la fenêtre avec le bouton [X] dans le titre de la fenêtre. Il est inacceptable s'il n'y a qu'un seul bouton pour confirmer l'action, et le refuser est censé fermer la fenêtre avec le bouton [X] dans l'en-tête, ou il n'y a aucune possibilité de refus du tout. Cela confond l'utilisateur, soulevant une question logique: comment refuser?

N'oubliez pas non plus ce qui a été dit ci-dessus dans la section "Boutons par défaut".

Toutes les boîtes de dialogue doivent s'ouvrir au centre de l'écran

Centré, pas là où ils ont été créés en mode conception. Premièrement, c'est plus clair, et deuxièmement, cela élimine automatiquement le problème des différentes résolutions d'écran pour différents utilisateurs.

Une exception est faite si la boîte de dialogue n'est pas modale, et à la suite du travail de l'utilisateur, des modifications dans la fenêtre principale se produisent immédiatement dans cette fenêtre (par exemple, filtrage du jeu de données, redessiner des graphiques, etc.).

Les tailles de fenêtre ne doivent pas dépasser les tailles d'écran

Dans aucun cas. C'est une honte lorsqu'une partie de la fenêtre sort de l'écran. Cette exigence ne dépend pas de la résolution d'écran de l'utilisateur, c'est-à-dire des excuses comme «Laissez-les obtenir plus de permission» ne fonctionnent pas.

Corriger le redimensionnement des éléments de la fenêtre

Les éléments de fenêtre doivent se redimensionner ou se déplacer correctement lorsque la fenêtre est redimensionnée, lorsque la fenêtre est agrandie et lorsque la fenêtre est restaurée après l'agrandissement.

Tout est toujours visible

La réduction de la taille d'une fenêtre ne doit pas conduire à la disparition d'éléments de fenêtre et, de préférence, ne pas conduire à l'apparition de barres de défilement (scrollers) de la fenêtre elle-même. Vous pouvez limiter la taille minimale de la fenêtre afin que tous les éléments soient visibles et accessibles. S'il n'est pas possible de placer des composants de manière à ce qu'ils soient tous visibles dans la fenêtre, vous pouvez utiliser des onglets (tels que PageControl) pour diviser les composants en groupes. Nous ne manquons pas non plus d’excuses concernant la résolution de l’écran.

Des indices partout, des indices toujours

Pour les boutons, en particulier sur les barres d'outils (de type ToolBar), les astuces doivent être définies de sorte qu'il soit toujours clair pourquoi tel ou tel bouton est nécessaire.

Spectre de couleurs

Ne peignez pas les composants sur le formulaire toutes les couleurs de l'arc-en-ciel. Cela fatigue les yeux et distrait l'attention de l'utilisateur. Ça n'a pas l'air cool. La surbrillance est utilisée lorsqu'il est nécessaire d'attirer l'attention de l'utilisateur sur un certain élément ou une certaine partie de la fenêtre. Par exemple, coloriez les enregistrements en rouge clair avec des erreurs ou, au contraire, en vert clair dans les enregistrements qui ont été vérifiés avec succès.

Conclusion

Il existe une très bonne méthode qui permet de trouver les failles du programme en général et de l'interface en particulier. C'est simple: imaginez-vous à la place de l'utilisateur et essayez pendant une demi-heure de travailler comme il travaille. C'est encore mieux si votre utilisateur est à portée de main (par exemple, travaille dans la même organisation). Dans ce cas, asseyez-vous à côté de lui, ou mieux à sa place, et essayez de faire son travail. Saisir des données, les modifier, afficher des rapports, etc. Si vous ne savez pas comment le faire correctement, demandez à votre utilisateur. Ne faites pas une ou deux opérations du même type, comme en mode débogage, mais 20 à 30, voire plus, des opérations différentes, dans un ordre différent. Oubliez d'entrer quelque chose ou entrez-le incorrectement et voyez comment le programme y réagit. Vous verrez assez vite points faibles votre programme.

L'auteur de l'article a automatisé le travail du bureau des admissions de l'université et, au cours de la première année de l'introduction du programme, il a passé 3 à 4 heures par jour au bureau des admissions, enregistrant les candidats, remplissant leurs données personnelles et leur donnant des rapports d'examen. Et dans les heures de travail restantes, il a corrigé les erreurs et les lacunes. Croyez-moi, l'année prochaine, il n'y a pratiquement plus de problèmes. C'était la même chose avec l'introduction du module du personnel.

Ainsi, gardez à l'esprit l'expérience utilisateur. Rendez-leur facile et agréable de travailler avec vos programmes.

Créature interface l'utilisateur est réduit à choisir dans la palette de composants les composants Delphi nécessaires au fonctionnement du programme, servant interface gestion aussi interface afficher les informations et les transférer dans le formulaire avec une mise en page ultérieure.

L'interface utilisateur que vous créez doit utiliser des éléments standard familiers aux utilisateurs et offrir un confort maximal. Tout cela est finalement déterminé par un critère tel que l'efficacité de l'interface - le résultat maximal avec un minimum d'effort.
Principes de création interface conviviale sont connus. Comme principes les plus généraux lors de la création les interfaces des utilisateurs il y a trois points principaux à considérer:

  1. Le programme doit aider à mener à bien la tâche et non devenir cette tâche.
  2. Lorsqu'il travaille avec le programme, l'utilisateur ne doit pas se sentir idiot.
  3. Le programme doit fonctionner de telle sorte que l'utilisateur ne pense pas que l'ordinateur est un imbécile.
Le premier principe - c'est la soi-disant «transparence» de l'interface. L'interface utilisateur doit être intuitive, facile à apprendre et ne pas créer de problèmes pour l'utilisateur qu'il devra surmonter au cours du processus. Utilisez la norme, sans composants de décoration inutiles, utilisez les méthodes de contrôle habituelles utilisées par des programmes similaires, et vous atteindrez les critères de performance premier principe.

Deuxième principe c'est négliger les capacités intellectuelles des utilisateurs. De ma propre expérience, je sais que souvent les utilisateurs ne savent pas seulement comment travailler sur un ordinateur, mais ont simplement peur de faire quelque chose de leur propre chef. Par conséquent, l'interface utilisateur doit être aussi conviviale que possible.
De plus, les craintes des utilisateurs sont souvent justifiées, car le coût du programme, et de l'ordinateur lui-même, ne peut être comparé au coût, par exemple, d'une base de données créée par de nombreuses années d'efforts. C'est pourquoi un programmeur, lors de la création d'une interface utilisateur, doit toujours intégrer un programme "infaillible" - à partir d'actions erronées et de la saisie de données incorrectes par l'utilisateur. Mais certains programmeurs s'emballent trop avec une telle protection, la rendent trop intrusive, et du coup, le travail du programme ressemble au fameux "pas à gauche, pas à droite est considéré comme une échappatoire"! Et ce qu'un programmeur crée comme solution à un problème commence à créer des problèmes par lui-même.
Pour se conformer deuxième principe il n'est pas nécessaire de permettre au programme de "corriger" les actions de l'utilisateur et d'indiquer exactement comment agir, en le conduisant dans un cadre étroit. De plus, vous ne devez pas vous laisser emporter par l'affichage des invites d'information, en particulier des messages de dialogue, cela distrait l'utilisateur du travail. Mieux encore, prévoyez la possibilité de désactiver les invites.

Troisième principe est de créer un programme avec la capacité «mentale» la plus élevée possible. Malgré le développement rapide la technologie informatique, même les programmes répandus ne peuvent être appelés que conditionnellement à l'intelligence artificielle. Ils interfèrent avec le travail de l'utilisateur, affichant des boîtes de dialogue avec des questions idiotes qui sèment la confusion même dans les situations les plus simples. En conséquence, les utilisateurs s'exclament dans leur cœur: "Eh bien, cette machine est stupide!"
Je suis personnellement ennuyé par les questions constantes de presque tout le monde éditeurs de texte à savoir s'il faut conserver le texte modifié, même si le texte original et le texte actuel ne diffèrent par aucun symbole. Oui, j'ai tapé quelque chose, mais ensuite j'ai tout renvoyé, vraiment vous ne pouvez pas le comprendre! Je dois vérifier si j'ai raté quoi que ce soit.

Essayez de respecter les règles suivantes:

Éléments d'interface standard
Utiliser la norme pour de cet élément composants d'interface. Après avoir rencontré votre programme, l'utilisateur ne perdra pas de temps à se connaître, mais commencera immédiatement à travailler - c'est l'un des signes d'un programme conçu par des professionnels.
Petite palette d'outils
Essayez de ne pas utiliser trop de composants différents. Et bien sûr, après avoir utilisé un composant standard quelque part au même endroit, dans un cas similaire, utilisez-le également.
Espacement égal entre les contrôles
Placez les éléments d'interface à la même distance les uns des autres. Les composants dispersés créent la sensation d'un produit non professionnel. À l'inverse, le placement soigneux des boutons, boutons radio, cases à cocher et autres composants qui composent l'interface sur le formulaire est un signe de travail de qualité.
TabOrder. "Bon ordre
TabOrder est l'ordre dans lequel le curseur à l'écran se déplace dans les commandes lorsqu'une touche est enfoncée Languette... Dans un programme correctement écrit, le curseur se déplace, suivant la logique du travail de l'utilisateur avec le programme. Lors de la création d'un programme, le programmeur modifie souvent des composants, en supprime certains et en ajoute d'autres si nécessaire. Par conséquent, dans le programme terminé, le curseur saute de manière aléatoire le long du formulaire. Après avoir terminé le programme, n'oubliez pas de configurer TabOrder.
Sélection de police
Laissez les polices tranquilles. Les propres polices par défaut de Delphi fonctionneront sur n'importe quel système sur lequel votre programme peut s'exécuter. Utilisez le gras uniquement pour mettre en évidence les éléments importants. Application de la italique et particulièrement soulignantque l'utilisateur pourrait prendre pour un hyperlien est de mauvaise forme.
Choix de couleurs
Quant aux couleurs des éléments d'interface, tout comme dans le cas des polices, mieux vaut les laisser standard, par défaut. Delphi utilise la palette système Windows et l'utilisateur, en la modifiant, peut facilement personnaliser les couleurs pour lui-même.
Contrôle alternatif
Un programme conçu par des professionnels doit pouvoir être contrôlé non seulement avec une souris, mais aussi avec un clavier. Il ne doit y avoir aucune fonction qui ne peut être exécutée qu'avec la souris (dessin en éditeurs graphiques ne compte pas!). Pour les fonctions les plus utilisées, vous devez fournir des "raccourcis clavier" pour leur accès rapide.
Briques d'interface
En ce qui concerne les éléments spécifiques de l'interface utilisateur, la qualité de l'interaction de l'utilisateur avec le programme dépend de:
  • la conformité de l'élément de contrôle à la tâche qu'il exécute;
  • les règles selon lesquelles l'élément de contrôle fonctionne.
    Sur le cette page les règles de création quelques éléments d'interface.
Et maintenant, je veux montrer quels outils Delphi propose pour gérer les composants sur le formulaire, leur position relative et le comportement du curseur lorsqu'une touche est enfoncée Languette.

Afin de placer les composants dans le bon ordre les uns par rapport aux autres, besoin de les mettre en évidence... Vous pouvez simplement faire glisser la souris dans la zone du formulaire contenant les composants sélectionnés. Ou en maintenant " Décalage", pointez avec la même souris sur chaque composant à sélectionner. Cliquez plusieurs fois sur le composant sélectionné (lorsque vous appuyez sur Décalage") en supprime la sélection.

Les composants sélectionnés peuvent être manipulés dans leur ensemble - ils peuvent être déplacés dans le formulaire, attribuer des valeurs aux mêmes propriétés, copiés (pour l'installation, par exemple sur un autre formulaire), voire supprimés.

Maintenant, faites un clic droit sur l'un des composants et dans le menu contextuel, sélectionnez Position -\u003e Aligner ... Une boîte de dialogue apparaît, vous permettant d'ajuster la position horizontale et verticale des composants du groupe. Par exemple, nous devons aligner nos quatre boutons vers la gauche et nous assurer qu'il y a la même distance verticale entre eux. Pour ce faire, sélectionnez les boutons radio Horizontal: côtés gauches et Vertikal: l'espace également.

En sélectionnant l'élément Centre, nous allons organiser les composants de sorte que leurs centres soient sur la même ligne horizontalement ou verticalement, et le point Centrer dans la fenêtre déplace les composants vers le centre de la fenêtre, également horizontalement ou verticalement.

Dans le même menu, la ligne Languette Order ... provoque l'apparition d'une boîte de dialogue qui contrôle le déplacement du curseur sur les éléments de l'interface lorsqu'une touche est enfoncée Languette... Lorsque le Formulaire apparaît à l'écran, le curseur se trouvera naturellement sur le composant situé sur la première ligne de la boîte de dialogue. Et puis il se déplacera vers le bas de la liste. Dans la boîte de dialogue, deux flèches bleues haut et bas contrôlent la position du composant sélectionné. Sélectionnez le composant requis, utilisez les flèches pour passer à la ligne requise dans la liste, etc.

Lors de la sélection d'un élément de menu Contrôle -\u003e un sous-menu apparaît, composé de deux éléments:

  • Mettre au premier plan
  • Envoyer au fond
Ce sont des méthodes de composant qui sont également disponibles par programme. Button1.SendToBack déplace le bouton vers «l'arrière-plan» et Button1.BringToFront - mettre au premier plan". Autrement dit, si un composant est positionné au-dessus d'un autre, ces méthodes les intervertissent. Les cas dans lesquels cela peut être appliqué sont assez évidents.

seulement pour le résultat

respect strict des délais

Transparence

l'exécution du projet

support technique en cadeau

Programmation, révision de la consultation 1C

Comment nous travaillons

1. Nous discutons du problème au téléphone. En présence de accès à distance - afficher sur l'écran de votre ordinateur.

2. Nous estimons le travail en roubles, si le projet est grand, sinon - le nombre approximatif d'heures.

3. Nous faisons le travail.

4. Vous acceptez de travailler dans votre programme, s'il y a des lacunes, nous les corrigeons.

5. Nous émettons une facture, vous payez.

Coût des travaux

1. Tous les travaux sont divisés en 3 catégories: consultation, mise à jour configuration typique, élaboration ou programmation d'un nouveau rapport, traitement, boutons, etc.

3. Pour un travail de plus de 10 heures, le tâche technique avec une description et le coût des travaux. Le travail commence après avoir convenu des termes de référence avec vous.

Soutien technique

1. Si vous trouvez des erreurs dans des œuvres précédemment acceptées, dans les 3 mois, nous les réparons gratuitement.

2. Pour les clients réguliers Les lacunes de nos travaux sont corrigées gratuitement tout au long de l'année.

Programmes pour gérer votre entreprise.

Acheter 1C: Enterprise

Nous sommes un revendeur officiel de 1C, vous pouvez acheter divers produits logiciels et licences chez nous. En plus d'acheter une "box", nous vous aiderons à mettre en place le programme, vous conseillerons et effectuerons les réglages de base.

  • Comptabilité
  • Automatisation du magasin
  • De gros
  • L'aide à l'installation et à la configuration initiale est incluse dans le package!
  • Réglage fin des configurations pour les besoins du client, développement de nouveaux modules en l'absence fonctions requises en configuration standard.
Comptabilité 1c 1C: Gestion du commerce 1C: vente au détail 1C: Gestion des salaires et du personnel
À partir de 3300 frotter. À partir de 6700 frotter. À partir de 3300 frotter. À partir de 7400 frotter.

Mise à disposition du serveur.

Serveur de configuration instantanée + 1C.

Vous n'avez pas de serveur? Peu importe, nous allons récupérer et installer rapidement un serveur dans le "cloud". Derrière petit supplément vous obtenez une solution très fiable.

  • Disponibilité 24/7
  • Pas besoin de garder le vôtre administrateur du système (les économies couvriront les coûts de votre serveur).
  • Configuration et installation rapides de 1C sur le serveur, dans 3 jours, vous aurez déjà un système pleinement opérationnel.
  • A tout moment, vous pouvez vous déplacer vers serveur localsi la solution ne vous convient pas.

SMS de votre 1C

Voulez-vous que les clients connaissent les promotions, les remises à temps? Les clients ne reviennent pas? Configurez l'envoi de SMS directement depuis 1C!

Notre société pourra rapidement mettre en place l'envoi de SMS à vos clients directement depuis 1C. Exemples d'événements qui peuvent être automatisés:

  • Gratitude pour l'achat et l'accumulation de bonus immédiatement après le prochain achat.
  • Accumulation de bonus sur la carte comme cadeau pour un anniversaire / pour un autre important ou des vacances.
  • Notification de l'arrivée des marchandises à l'entrepôt.
  • Expiration des bonus cadeaux.
  • Notification de réception du paiement anticipé et réservation des marchandises.
  • Adresse avec des détails sur la façon de se rendre au magasin / bureau, les numéros de téléphone.
  • Etc.

Les réglages dans 1C peuvent être effectués par nos spécialistes ou nos employés. Vous pouvez vous familiariser avec les tarifs sur la page des tarifs SMS.

  • Garantie d'envoi de SMS, l'argent n'est facturé que pour les SMS livrés.
  • Facturation séparée pour chaque SMS.
  • Réapprovisionnement de l'équilibre de différentes manières.
  • Consultez l'historique de tous les SMS envoyés à tout moment.
  • Le nom de l'expéditeur au lieu du numéro numérique dans le téléphone du destinataire.

Une des plus grandes forces de l'environnement programmation Delphi C'est son architecture ouverte, grâce à laquelle Delphi permet une sorte de métaprogrammation, permettant de «programmer l'environnement de programmation». Cette approche traduit Delphi en une qualité nouveau niveau systèmes de développement d'applications et vous permet d'intégrer dans ce produit des outils supplémentaires qui prennent en charge presque toutes les étapes de la création de systèmes d'application. Un tel éventail de possibilités s'ouvre grâce au concept d'interfaces dites ouvertes, implémentées en Delphi, qui fait le lien entre l'IDE (Integrated Development Environment) et les outils externes.

Cet article se concentre sur les interfaces ouvertes Delphi et fournit un aperçu des fonctionnalités qu'elles représentent. Delphi définit six interfaces ouvertes: interface outil, interface de conception, interface expert, interface fichier, interface d'édition et interface de contrôle de version. Il est peu probable que dans le cadre de cet article, nous puissions éclairer en détail et illustrer les capacités de chacun d'entre eux. Les codes sources Delphi vous aideront à mieux comprendre les problèmes considérés, puisque les développeurs leur ont fourni des commentaires détaillés. Les déclarations de classe représentant les interfaces publiques sont contenues dans les modules correspondants du répertoire ... \\ Delphi \\ Source \\ ToolsAPI. L'interface de conception (module DsgnIntf.pas) fournit des outils pour créer des éditeurs de propriétés et des éditeurs de composants.

Les éditeurs de propriétés et de composants sont un sujet digne d'une discussion distincte, nous rappelons donc simplement que l'éditeur de propriétés contrôle le comportement de l'inspecteur d'objets lorsque vous essayez de modifier la valeur de la propriété correspondante, et que l'éditeur de composants est activé lorsque vous double-cliquez sur le bouton gauche de la souris sur l'image du composant placé sur le formulaire. L'interface de contrôle de version (module VCSIntf.pas) est destinée à la création de systèmes de contrôle de version. Depuis la version 2.0, Delphi prend en charge le système de contrôle de version intégré Intersolv PVCS, donc dans la plupart des cas, il n'est pas nécessaire de développer votre propre système. Pour cette raison, nous ignorerons également l'interface de contrôle de version. L'interface de fichier (module FileIntf.pas) vous permet de remplacer le système de fichiers de travail de l'EDI, ce qui permet de choisir votre propre façon de stocker les fichiers (dans les champs Mémo sur le serveur de base de données, par exemple). Edit Interface (le module EditIntf.pas) permet d'accéder au tampon de code source, qui vous permet d'analyser et de générer du code, de déterminer et de modifier la position du curseur dans la fenêtre de l'éditeur de code et de contrôler la coloration syntaxique du texte source.

Des classes spéciales fournissent des interfaces aux composants placés sur le formulaire (définition du type de composant, obtention de références aux composants parents et enfants, accès aux propriétés, passage du focus, suppression, etc.), au formulaire lui-même et au fichier de ressources du projet. En outre, l'interface d'édition vous permet d'identifier les notificateurs dits modulaires qui déterminent la réaction à des événements tels que la modification du texte source d'un module, la modification d'un formulaire, le changement de nom d'un composant, l'enregistrement, le changement de nom ou la suppression d'un module, la modification d'un fichier de ressources de projet, etc. Interface d'outils (ToolIntf. pas) fournit aux développeurs un moyen d'obtenir informations générales l'état de l'EDI et l'exécution d'actions telles que l'ouverture, l'enregistrement et la fermeture de projets, et fichiers individuels, création d'un module, obtention d'informations sur le projet en cours (nombre de modules et formulaires, leurs noms, etc.), inscription système de fichiers, organisation des interfaces aux modules individuels, etc. En plus des notificateurs modulaires, l'interface d'outils définit des notificateurs de complément qui notifient des événements tels que l'ouverture / la fermeture de fichiers et de projets, le chargement et l'enregistrement du fichier de projet de bureau, l'ajout / l'exclusion de modules de projet, l'installation / la désinstallation de packages, la compilation d'un projet. Contrairement aux notificateurs modulaires, les notificateurs complémentaires vous permettent d'annuler l'exécution de certains événements.

De plus, l'interface de l'outil fournit un moyen d'accéder au menu principal de l'EDI Delphi, vous permettant d'y intégrer des éléments supplémentaires. Interface Expert (module ExptIntf.pas) est la base pour créer des Expert Advisors - des modules logiciels qui sont intégrés dans l'EDI afin d'étendre ses fonctionnalités. Un exemple d'expert est l'assistant de formulaire de base de données Delphi, qui génère un formulaire pour afficher et modifier le contenu d'une table de base de données. Après avoir défini la classe de l'expert, vous devez vous assurer que Delphi «connaît» notre expert. Pour ce faire, il doit être inscrit en appelant la procédure RegisterLibraryExpert, en lui passant une instance de la classe experte en tant que paramètre. À titre d'illustration, nous allons créer un simple Expert Advisor de style esStandard, qui, lorsque l'élément de menu Delphi correspondant est sélectionné, affiche un message indiquant qu'il est en cours d'exécution. Comme vous pouvez le voir dans le tableau ci-dessus, le style esStandard nécessite le remplacement de six méthodes:

Pour que l'expert soit «activé», vous devez sélectionner l'élément de menu Component / Install Component ..., sélectionner le module contenant l'expert (dans notre cas, exmpl_01.pas) dans la boîte de dialogue Parcourir, cliquer sur OK, et après avoir compilé le package dclusr30.dpk dans le menu principal de Delphi, dans la section Aide, l'élément Simple Expert 1 doit apparaître, lorsqu'il est sélectionné, le message d'information «Standard Expert a démarré!» apparaît. Pourquoi Delphi place l'élément de menu de l'expert dans la section Aide reste un mystère. Si vous n'aimez pas le fait que l'élément de menu apparaisse partout où Delphi, et pas là où vous le souhaitez, l'option suivante est possible: créer un expert de style de complément, ce qui exclut création automatique élément de menu et ajoutez l'élément de menu «manuellement» à l'aide de l'interface d'outils. Cela vous permettra de définir l'emplacement du nouvel élément dans le menu principal de quelque manière que ce soit.

Pour ajouter un élément de menu, la classe TIToolServices - la base de l'interface de l'outil - et les classes TIMainMenuIntf, TIMenuItemIntf, qui implémentent des interfaces vers le menu principal de l'EDI et ses éléments, sont utilisées. L'instance ToolServices de la classe TIToolServices est créée par l'EDI lui-même lors de son initialisation. Notez que le développeur est seul responsable de la publication des interfaces vers le menu principal et les éléments de Delphi. En cours de route, compliquons légèrement la charge fonctionnelle de l'expert: lors de l'activation de son élément de menu, il émettra un certificat sur le nom du projet ouvert dans ce moment dans l'environnement: Dans cet exemple, la pièce maîtresse est la fonction AddIDEMenuItem, qui ajoute un élément de menu au menu principal de Delphi IDE. En tant que paramètres, le texte du nouvel élément de menu, son identifiant, l'identifiant de l'élément devant lequel le nouvel élément est inséré, la représentation symbolique de la touche, qui avec la touche Ctrl peut être utilisée pour accès rapide au nouvel élément, et un gestionnaire d'événements correspondant à la sélection d'un nouvel élément. Nous avons ajouté un nouvel élément de menu à la section Affichage avant l'élément Montres.

Maintenant, familiarisons-nous avec les notificateurs. Définissons un notificateur de complément qui garde une trace des heures de fermeture / ouverture des projets et ajuste en conséquence le champ stockant le nom du projet actif (par souci de brièveté, nous omettons l'implémentation de méthodes qui n'ont pas subi de modifications par rapport à l'exemple précédent): Pour implémenter le notificateur, nous avons défini la classe TAddInNotifier, qui est un descendant TIAddInNotifier et chevauchait le FileNotification. L'EDI appellera cette méthode chaque fois qu'un événement se produit auquel le notificateur de complément peut répondre (chaque événement de ce type est indiqué par une constante TFileNotification correspondante). Le champ Expert de la classe TAddInNotifier est utilisé pour retour d'information avec un expert (méthode TAddInNotifier.FileNotification). Dans le destructeur de l'expert, l'enregistrement du notifiant est supprimé et le notifiant est détruit. Illustrons maintenant l'utilisation des notificateurs modulaires. Créons un expert en complément qui émet des messages sur chaque acte de sauvegarde du fichier projet (nous ne présenterons pas l'implémentation de méthodes déjà familières pour nous par souci de brièveté): Dans cet exemple, l'expert en complément surveille les événements correspondant à l'ouverture / fermeture des projets.

A chaque ouverture d'un projet, une notification modulaire correspondant au fichier projet est enregistrée. En termes d'implémentation, les notificateurs modulaires sont similaires aux notificateurs de complément: nous définissons une classe TModuleNotifier qui est un descendant de TIModuleNotifier et remplaçons ses méthodes Notify et ComponentRenamed. L'EDI appelle la méthode Notify lorsque certains événements liés à ce module sont déclenchés; dans cette méthode, la réaction à tel ou tel événement est définie. La méthode ComponentRenamed est appelée lorsque le nom d'un composant sur une fiche de module a changé. Veuillez noter que nous n'utilisons pas cette méthode, mais nous devons la remplacer, sinon lorsque le nom du composant change, la méthode abstraite de la classe de base sera appelée, ce qui entraîne des conséquences imprévisibles.

L'enregistrement d'un notificateur modulaire est un processus légèrement plus compliqué que l'enregistrement d'un notificateur complémentaire: nous obtenons d'abord l'interface du module (TIModuleInterface), puis nous enregistrons le notificateur à l'aide de l'interface du module. Lorsque le projet est fermé, l'enregistrement du notificateur modulaire est désenregistré (à nouveau à l'aide de TIModuleInterface) et le notificateur est détruit. Enfin, nous allons vous montrer comment vous pouvez déterminer la position du curseur dans la fenêtre de l'éditeur de code. Créons un Expert Advisor qui, lors de la sélection de l'élément de menu correspondant, afficherait un message contenant le nom du fichier actif et la position du curseur dans celui-ci (l'implémentation de seulement ceux indispensables pour cet exemple méthodes): Pour déterminer la position du curseur, nous devons recevoir la séquence d'interfaces suivante: interface modulaire (TIModuleInterface); interface de l'éditeur de code (TIEditorInterface); interface de la vue du module dans la fenêtre de l'éditeur (TIEditView).

Si le fichier avec le texte source (* .pas) est actif lorsque l'élément de menu expert est sélectionné, un message s'affiche contenant le nom du fichier actif et la position actuelle du curseur. Si un fichier non-pas est actif, le message ne s'affiche pas. Pour obtenir le nom du fichier actif, la méthode GetCurrentFile de la classe TIToolServices est utilisée. Ceci conclut l'examen des façons d'utiliser les interfaces ouvertes. Le CD-ROM contient le code source de tous les exemples fournis. Le CD-ROM contient également un exemple plus complexe et détaillé contenant un expert en complément qui permet à l'utilisateur de mettre en signet la source des modules Delphi. Guide de démarrage rapide pour l'installation et l'utilisation de Bookmark Expert est contenu dans le fichier bkmrks97.htm. Ainsi, dans cet article, en termes généraux, les interfaces ouvertes sont considérées et des exemples de leur utilisation sont donnés. Encore une fois, nous le répéterons: grâce à la disponibilité du code source des interfaces ouvertes, vous pouvez facilement comprendre les détails qui vous intéressent. Nous espérons que la variété des opportunités offertes par les interfaces ouvertes vous donnera plus d'une idée audacieuse et utile.

LA CLOCHE

Il y a ceux qui lisent cette actualité avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam