"Les programmeurs intelligents utilisent Delphi!" Maintenant, de plus en plus de gens commencent à utiliser Delphi. Cependant, après tout, il y a quelques experts, et des novices comme moi sont partout, haha. Depuis que je suis une recrue, j'ai naturellement beaucoup de très bonnes questions, comme comment mettre en place ceci et comment écrire cela ... donc, ci-dessous, je ferai un discours sommaire basé sur la petite expérience que j'ai accumulée et Les petites questions courantes sur le forum.
== Applications système ==
UN. Delphi a remplacé un grand nombre de contrôles couramment utilisés, tels que Delphi5, et le Delphi6 libéré cette année est 1,5 fois celui de Delphi5. Avec autant de commandes, même à la résolution de 1024 * 768, ils ne peuvent pas afficher tous leurs panneaux de composants, et il est vraiment gênant d'appuyer sur ces deux petits boutons pour afficher plus de panneaux à chaque fois! Cependant, en ajoutant la valeur de clé de registre suivante, le panneau de composant peut être automatiquement élargi:
[Hkey_current_user / logiciel / borland / delphi / x.0 / extras]
"AutopaletteSelect" = "1"
(Remarque: X.0 indique le numéro de version de votre Delphi; s'il n'y a pas de clé primaire d'extras, créez-en une nouvelle, la même ci-dessous)
B. Chaque fois que je crée un nouveau formulaire, puis je définis sa police et sa taille ... c'est vraiment gênant! Ajoutez ensuite la valeur de clé suivante et laissez le système le définir automatiquement:
[Hkey_current_user / logiciel / borland / delphi / x.0 / formdesign]
"Defaultfont" = "宋体, 9, _"
(Remarque: _ représente l'espace et peut également être remplacé par Bold (Bold) etc.)
C. Personnalisez l'environnement de travail pour le rendre plus adapté à vous.
• Barre d'outils de paramètres. Cliquez avec le bouton droit sur la barre d'outils Delphi, sélectionnez Personnaliser, puis sélectionnez le bouton requis et faites glisser l'outil et faites glisser les indésirables. Ce que j'utilise souvent: Open, Open Project, Save, Save All, UNDO, REDOT SUR LA BARDE DE TOLLES STANDARD; Barbaire d'outils de palette de composants.
• Définissez la disposition des fenêtres. Afin de pouvoir rédiger des programmes efficacement, il est important d'organiser chaque fenêtre raisonnablement. Mes fenêtres couramment utilisées sont: Inspecteur d'objets, gestionnaire de projet (View | Project Manager), Liste de montre (Exécuter | Ajouter une montre ...).
Après avoir configuré chaque formulaire, appuyez sur le bouton Enregistrer le bureau actuel de la barre d'outils de bureau pour enregistrer.
• Définissez la couleur de l'affichage. Rendez la couleur du code plus conforme à vos habitudes, ce qui est propice à une réflexion claire lors de l'écriture. Outils | Options de l'éditeur Ouvrir les propriétés de l'éditeur, sélectionner l'onglet couleur et définir la couleur du code. Voici seulement quelques-uns couramment utilisés:
Espace blanc: l'espace vide, c'est-à-dire l'arrière-plan;
Commentaire: commentaire;
Mot réservé: mots réservés;
String: String;
Numéro: numéro;
Point d'exécution: la ligne actuelle en cours d'exécution (c'est-à-dire la ligne qui arrive lorsque F7 passe);
Break activé: point d'arrêt;
Ligne d'erreur: l'erreur s'est produite en ligne;
D. La maîtrise des clés de raccourci dans la programmation Delphi peut considérablement améliorer l'efficacité et ne vous fera pas ennuyer par trop de paramètres ennuyeux. Voici quelques touches de raccourci que j'utilise souvent:
ESC: sélectionnez le conteneur du composant actuellement sélectionné (généralement panneau, groupe de groupe, formulaire, etc.);
Clé Ctrl + Arrow: déplace le composant sélectionné par un pixel;
CTRL + Shift + Clés de flèches: déplacez le composant sélectionné par une grande grille (similaire à l'effet de la maintenance du décalage dans les feux d'artifice puis se déplaçant avec les touches de flèche);
Shift + Dragon Keys: ajustez la taille du composant sélectionné, un pixel à la fois;
Shift + Sélectionnez les composants: maintenez la touche Maj et cliquez sur le composant avec la souris.
Bouton de souris Ctrl +: Utilisez d'autres fonctions dans la procédure (comme un processus personnalisé). Accédez directement à la partie d'implémentation de cette fonction appelée. J'ai le plus utilisé cette fonction, ce qui rend très pratique pour moi de trouver des modules!
Ctrl + Shift + C: Déclarez une méthode dans un objet, puis mettez le curseur dessus, appuyez sur Ctrl + Shift + C pour établir un cadre de base pour son implémentation, tel que:
Tform1 = classe (tform)
Privé
{Déclarations privées}
publique
{Déclarations publiques}
procédure mienne;
fin;
Mettez le curseur sur la ligne de mine de procédure, appuyez sur Ctrl + Shift + C, et le code suivant sera automatiquement inséré dans l'unité:
procédure tform1.mine;
Commencer
fin;
== Opérations de formulaire ==
Dans les programmes avec plusieurs formulaires, Delphi par défaut pour les créer toutes lorsque le programme démarre (il est juste masqué, un seul formulaire principal s'affiche), de sorte que les formulaires qui sont temporairement inutiles pour commencer à occuper beaucoup d'espace mémoire. Nous devons donc transférer les formulaires qui ne sont pas lancés pour le moment des "formulaires de création automatique" aux "formulaires disponibles" sous l'onglet Formulaires du projet de menu | Options ... De cette façon, la création et la libération de ces formulaires nécessitent un code pour implémenter.
UN. Comparaison de deux façons de créer une forme. Pour ces formulaires non créés non parautomatiquement, nous devons les créer avant de montrer (auto) ou de créer (application). Par exemple, form2.creat (self) et form2.create (application), mais quelle est la différence entre eux? En fait, il n'y a pas beaucoup de différence entre les deux.
Mais si le propriétaire appartient à une autre fenêtre ou contrôle, lorsque son propriétaire est libéré, ce que le propriétaire sera libéré. La principale différence est de savoir qui gère les ressources de la forme. Créés dans la première méthode, les ressources du formulaire sont gérées par le programmeur; créé dans la deuxième méthode, les ressources du formulaire sont gérées par l'application.
B. Plusieurs façons de publier des formulaires. Puisqu'il s'agit d'enregistrer la mémoire, le formulaire utilisé doit "déplacer" la mémoire. Ici, je vais énumérer quelques méthodes similaires:
(1)
Procédure tform1.button1Click (expéditeur: tobject);
Commencer
......
Si form2 = nil alors
Form2: = tform2.Create (application);
Form2.showmodal;
......
fin;
Procédure TForm2.Close (expéditeur: tobject; var action: tcloseAction);
Commencer
ModalResult: = mrnone;
Action: = Cafree;
Form2: = nil;
fin;
(2)
Procédure tform1.button1Click (expéditeur: tobject);
Commencer
Si ce n'est pas affecté (Form2) alors
Commencer
Application.CreateForm (TForm2, Form2);
essayer
Form2.showmodal;
Enfin
Form2.Free;
Form2: = nil;
fin;
fin
autre
Form2.showmodal;
fin;
(3)
Procédure TForm2.Button1Click (expéditeur: tobject);
Commencer
Form2.close;
Form.release;
fin;
== Utilisation du contrôle
UN. Le célèbre package de contrôle RXLIB est écrit par trois experts russes et est très remarquable! Cependant, il y a trop de contenu et il n'est pas facile de bien l'utiliser. Je vais juste dire quelques points ici à Rxrichedit.
• Beaucoup de gens ont demandé comment installer rxlib, cela semble être un peu compliqué, haha, donc je vais aussi le dire d'ailleurs:
Exécutez rxinst.exe pour installer Rxlib dans / programme Files / Borland / Delphi5 (ou 6) / RX, puis ouvrez Delphi, sélectionnez Fichier / Open ... et tournez RXCTL5.DPK, RXDB5.DPK, RXBDE5.DPK après ouverture , appuyez sur Compiler, continuez à ouvrir: dclrx5.dpk, dclrxdb5.dpk et dclrxbd5.dpk.
• Propriété Autoriser. Le paramètre par défaut de Win98 est vrai. Mais lorsqu'il est faux, il sera affiché normalement. Par conséquent, pour la compatibilité du système, il est nécessaire de déterminer la version actuelle du système d'exploitation:
procédure tformmain.formCreate (expéditeur: tobject);
var
OSVI: OsversionInfo;
......
Commencer
Osvi.dwosversionInfosize: = sizeof (osversionInfo);
GetVersionEx (OSVI);
cas osvi.dwplatformId de
1: rxrichedit1.allowObjects: = true;
2: rxrichedit1.allowObjects: = false;
fin;
.........
fin;
Mais je ne sais pas pourquoi cet attribut a un tel problème, donc j'espère que l'expert me donnera quelques conseils.
• Événement OnurlClick. RXRICHEDIT convertit automatiquement les adresses de la page Web au format hyperlien, mais le comportement spécifique nécessite toujours d'écrire du code en soi, sinon ces adresses deviendront des shells vides:
Procédure tformmain.rxrichedit1urlclick (expéditeur: tobject; const urltext: string; bouton: tmouseButton);
Commencer
Si bouton = mbleft alors
Shellexcute (Handle, Nil, Pchar (UrlText), Nil, Nil, SW_Show);
fin;
B. Afin d'enregistrer la mémoire et d'optimiser le fonctionnement, nous créons toujours des composants dynamiquement. Mais après l'avoir utilisé, s'il n'est pas éliminé de la mémoire à temps, il ira à l'encontre de notre intention d'origine. Mais comment «tuer» le composant créé? Il libère simplement l'espace mémoire pointé par Edit, mais le pointeur n'est pas défini sur nil. Généré ... .Mistake. Par conséquent, nous devons nul le pointeur après édition libre: = nil ou freeandnil (uniquement valide sous Delphi5) pour assurer un fonctionnement normal à l'avenir.
C. Affiche le texte de l'invite de chaque contrôle sur la ligne d'état. L'événement OnHint de cet application peut être utilisé, mais comme l'application est un objet incompatible, la méthode suivante peut être utilisée:
......
publique
procédure displayHint (expéditeur: tobject);
fin;
......
Procédure TForm1.DisplayHint (expéditeur: Tobject);
Commencer
Statusbar1.simpletext: = getLongHint (application.hint);
fin;
Procédure TForm1.FormCreate (Sender: Tobject);
Commencer
Application.onHint: = DisplayHint;
fin;
De cette façon, le texte affiché dans la barre d'état est le même que la zone d'invite (la petite boîte jaune qui apparaît automatiquement). Et si vous voulez que le texte rapide de la barre d'état soit plus détaillé? En fait, tant que la propriété indice du contrôle est écrite comme ceci: MyHint | C'est juste un MyHint!, Le contenu avant "|" peut être affiché dans la boîte d'invite (Aide Hint Box), et le contenu après "| "est affiché dans la barre d'état. Maintenant.
D. Quelques points clés dans l'utilisation de ListView. Ce qui suit est une ListView à deux colonnes comme exemple.
→ Ajouter une ligne:
avec listview1 faire
Commencer
ListItem: = items.add;
ListItem.caption: = 'First Column Content';
ListItem.subitems.add («contenu de deuxième colonne»);
fin;
→ Clear listView1:
ListView1.items.Clear;
→ Obtenez le numéro de ligne de la ligne actuellement sélectionnée et supprimez la ligne actuelle:
Pour i: = 0 à ListView1.items.count-1 do
Si listView1.items [i] .Selected alors //i=listview1.selected.index
Commencer
ListView1.items.delete (i);
fin;
Bien sûr, ListView propose un événement onSelectItem, qui peut déterminer la ligne que vous avez sélectionnée et l'attribuer à une variable globale.
→ Fonctionnement de la lecture d'une ligne et d'une colonne:
Edit1.text: = listView1.items [i] .caption;
Edit2.text: = listView1.items [i] .subitems.strings [0];
Edit3.text: = listView1.items [i] .Subitems.strings [1];
Par analogie, la colonne entière peut être lue à l'aide d'une boucle.
→ Déplacez la mise au point dans une ligne:
Pour i: = 0 à ListView1.items.count-1 do
If (listView1.items [i] .selected) et (i> 0) puis
Commencer
ListView1.setFocus;
ListView1.items.item [i-1] .Selected: = true;
fin;
Cependant, dans Delphi6, ListView a un attribut itemIndex, donc juste
ListView1.setFocus;
ListView1.ItemIndex: = 3;
Vous pouvez définir l'objectif.
== Autres ==
• Afin d'optimiser le logiciel et de le rendre plus parfait, des tableaux dynamiques sont souvent utilisés lors de l'utilisation de tableaux. Lors de la déclaration, telle que: A: tableau de chaîne, puis avant d'utiliser le tableau, SetLength (A, 3) définit la longueur du tableau sur 3, c'est-à-dire A [0], A [1], A [2], Alors c'est tout. Lorsqu'il est nécessaire d'élargir la longueur du tableau, à nouveau: seclengle (a, 5), puis a [3] et a [4] sont ajoutés, et dans le précédent a [0], a [1], a [2] La valeur de, ne sera pas effacée; 2] sont automatiquement effacés de la mémoire. Remarque: les tableaux dynamiques commencent par "0", donc après setLength (a, 1) haut (a) = 0! !
Enfin, lorsque ce tableau dynamique n'est plus utilisé et que le programme n'est pas encore sorti, afin d'économiser de la mémoire, d'utiliser: a: = nil pour libérer ce tableau, et maintenant il réalise vraiment la "protection verte et environnementale" :)
• La question «comment faire fonctionner le chemin vers le programme actuel» peut souvent être vu dans les forums. En effet, cette fonction est utilisée de temps à autre dans la programmation. Il existe en fait plusieurs fonctions qui peuvent réaliser cet effet:
→ GetCurrentDirectory (): fonction winapi, l'utilisation spécifique est la suivante:
var
MyCurrentDir: Array [0..144] de Char;
Commencer
GetCurrentDirectory (sizeof (myCurrentDir), myCurrentDir);
MyCurrentDir: = myCurrentDir + '/ mysoftname.exe';
fin;
→ getCurrentDir (): une fonction encapsulée par getCurrentDirectory par Delphi, l'utilisation est simple: myCurrentDir: = getCurrentDir. Le format final est: c: / windows / système
Il existe également des fonctions qui peuvent obtenir directement le chemin: ExtractFilePath (paramstr (0)), extractfilepath (application.exename), etc.
• Messages d'arrêt du système, de redémarrage, etc. C'est aussi une question que les gens posent, et je le mentionnerai ici:
Arrêt: EXITWINDOWSEX (EWX_SHUTDOWN, 32);
Redémarrer: exitwindowSEX (ewx_reboot, 32);
Connexion: EXITWINDOWSEX (EWX_LOGOFF, 32);
Power Off: EXITWINDOWSEX (EWX_PowerOff, 32);
• À Delphi, en plus d'utiliser # 39, comment gérer "des citations uniques" dans un programme (comme ShowMessage)? «'' 'Et' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' '' '' '' '' '' '' '' '' '' '' '' '' ' En fait, quatre citations simples représentent une seule citation, c'est-à-dire '' '', les deuxième et troisième indiquent qu'il s'agit d'un "" ", et le premier et le quatrième indique qu'il s'agit d'un type de caractère. Haha, très intéressant :)
• Problèmes chinois dans le showMessage. Les boutons de ShowMessage sont tous dans le texte électronique, ce qui met les gens mal à l'aise. En fait, après notre bricolage, nous pouvons tous en faire du chinois.
Tout d'abord, enregistrez le projet actuel, puis sélectionnez Projet | Langues | Ajouter ... La boîte de dialogue Ajouter une langue apparaît, sélectionnez le projet que vous souhaitez au chinois (vous pouvez également personnaliser le dossier), ensuite Sélectionnez le dernier élément "chinois (chinois (chinois (chinois ( Chine) », Suivant; Trouvez l'élément "const_smsgdlgok" dans la liste, modifiez son modèle "chinois (traduit)" en "OK" (original)) et sortez après l'enregistrement. Maintenant, exécutez à nouveau le programme, haha, est-ce juste le bouton chinois?
Cependant, une boîte de dialogue de messages de ShowMessage est très simple et peut être affichée aux développeurs pendant le débogage du système. Mais parce que c'est trop simple, je recommande de ne pas utiliser de telles boîtes de dialogue dans la version officielle du logiciel. De plus, il est préférable d'utiliser MessageBox au lieu de ShowMessage pour réduire la taille du logiciel. !