"Intelligente Programmierer verwenden Delphi!" Immerhin gibt es jedoch einige Experten, und Anfänger wie ich sind überall, haha. Da ich ein Neulinge bin, habe ich natürlich viele sehr gute Fragen, z. Die üblichen kleinen Fragen im Forum.
== Systemanwendungen ==
A. Delphi hat eine große Anzahl häufig verwendeter Kontrollen wie Delphi5 ersetzt, und der in diesem Jahr veröffentlichte Delphi6 ist das 1,5 -fache des Delphi5. Bei so vielen Steuerelementen, selbst bei der Auflösung von 1024*768, können sie nicht alle Komponenten -Panels anzeigen, und es ist wirklich unpraktisch, diese beiden kleinen Tasten zu drücken, um jedes Mal mehr Panels anzuzeigen! Durch das Hinzufügen des folgenden Registrierungsschlüsselwerts kann das Komponentenfeld jedoch automatisch erweitert werden:
[Hkey_current_user/software/borland/delphi/x.0/extras]
"Autopaletteselect" = "1"
(Hinweis: X.0 gibt die Versionsnummer Ihres Delphi an. Wenn es keinen extras -Primärschlüssel gibt, erstellen Sie einfach eine neue, die gleiche unten)
B. Jedes Mal, wenn ich eine neue Form erstelle und dann ihre Schriftart und Größe einstellte ... ist es wirklich problematisch! Fügen Sie dann den folgenden Schlüsselwert hinzu und lassen Sie das System es automatisch festlegen:
[Hkey_current_user/software/borland/delphi/x.0/formdesign]
"DefaultFont" = "宋体, 9, _"
(Hinweis: _ repräsentiert Raum und kann auch durch fett (fett) usw. ersetzt werden.)
C. Passen Sie die Arbeitsumgebung an, um es für Sie geeigneter zu gestalten.
• Einstellungswerkzeugleiste. Klicken Sie mit der rechten Maustaste auf die Delphi-Symbolleiste, wählen Sie das anpassen, wählen Sie die erforderliche Schaltfläche und ziehen Sie das Werkzeug und ziehen Sie die unerwünschten heraus. Was ich oft benutze: Öffnen Sie das Projekt, speichern, alles speichern, unter der Standard -Symbolleiste wiederholen, Uhrenrücksetzen Sie unter der Debug -Symbolleiste aus. Komponentenpalette Symbolleiste.
• Fensterlayout einstellen. Um Programme effizient schreiben zu können, ist es wichtig, jedes Fenster vernünftig zu arrangieren. Meine häufig verwendeten Fenster sind: Objektinspektor, Projektmanager (Ansicht | Projektmanager), Beobachtungsliste (Ausführen | Uhr addieren ...).
Nachdem Sie jedes Formular eingerichtet haben, drücken Sie die aktuelle Desktop -Taste in der Desktop -Symbolleiste zum Speichern.
• Stellen Sie die Anzeigefarbe ein. Machen Sie die Farbe des Codes stärker in Übereinstimmung mit Ihren Gewohnheiten, was beim Schreiben klaren Denken förderlich ist. Tools | Editoroptionen öffnen die Editoreigenschaften, wählen Sie die Registerkarte Farbe und legen Sie die Codefarbe fest. Hier sind nur einige häufig verwendete:
Whitespace: Der leere Raum, das heißt, der Hintergrund;
Kommentar: Kommentar;
Reserviertes Wort: Reservierte Wörter;
String: String;
Nummer: Nummer;
Ausführungspunkt: Die aktuelle Zeile wird ausgeführt (dh die Zeile, die eintrifft, wenn F7 eintritt);
Aktiviert Break: Breakpoint;
Fehlerzeile: Der Fehler trat eine Zeile auf;
D. Wenn Sie einige Abkürzungsschlüsse in der Delphi -Programmierung beherrschen, können Sie die Effizienz erheblich verbessern und werden Sie nicht durch zu viele langweilige Einstellungen gelangweilt. Hier sind einige Abkürzungsschlüssel, die ich oft verwende:
ESC: Wählen Sie den Container der aktuell ausgewählten Komponente (normalerweise Panel, Groupbox, Form usw.).
Strg+Pfeilschlüssel: Verschiebt die ausgewählte Komponente um ein Pixel;
Strg+Shift+Pfeiltasten: Bewegen Sie die ausgewählte Komponente durch ein großes Netz (ähnlich dem Effekt der Halteverschiebung in Feuerwerkskörpern und dann mit den Pfeiltasten);
Schicht+Drachenschlüssel: Passen Sie die Größe der ausgewählten Komponente jeweils ein Pixel an.
Umschalt-+Komponenten auswählen: Halten Sie die Umschalttaste gedrückt und klicken Sie mit der Maus auf die Komponente.
STRG+LINKS -MOUS -Taste: Verwenden Sie andere Funktionen in der Prozedur (z. B. einen benutzerdefinierten Vorgang). Gehen Sie direkt zum Implementierungsteil dieser genannten Funktion. Ich habe diese Funktion am meisten benutzt und es mir sehr bequem gemacht, Module zu finden!
Strg+Shift+C: Deklarieren Sie eine Methode in einem Objekt und legen Sie den Cursor darauf ein, drücken Sie Strg+Shift+C, um ein grundlegendes Framework für seine Implementierung festzulegen, wie z. B.:
Tform1 = Klasse (tform)
Privat
{Private Deklarationen}
öffentlich
{Öffentliche Erklärungen}
Verfahrensmine;
Ende;
Setzen Sie den Cursor in die Prozedurminenleitung, drücken Sie Strg+Shift+C und der folgende Code wird automatisch in das Gerät eingefügt:
Verfahren tform1.Mine;
Beginnen
Ende;
== Formularoperationen ==
In Programmen mit mehreren Formularen stellt Delphi Standard, um sie alle zu erstellen, wenn das Programm startet (es ist nur versteckt, nur eine Hauptform angezeigt), so dass die Formen, die vorübergehend unnötig sind, um viel Speicherplatz zu besetzen. Daher müssen wir die Formulare übertragen, die vorerst nicht von "automatischen Formularen" auf "verfügbare Formulare" unter der Registerkarte Formulare des Menüprojekts | Optionen ... Auf diese Weise erfordern die Erstellung und Veröffentlichung dieser Formulare Code implementiert.
A. Vergleich von zwei Möglichkeiten zum Erstellen einer Form. Für diese nicht automatisch erstellten Formulare müssen wir sie vor Show (Selbst) oder erstellen (Anwendung) erstellen. Zum Beispiel Form2.creat (Selbst) und Form2.create (Anwendung), aber was ist der Unterschied zwischen ihnen? Eigentlich gibt es keinen großen Unterschied zwischen den beiden.
Wenn der Eigentümer jedoch zu einem anderen Fenster oder einer anderen Kontrolle gehört, wenn sein Besitzer freigegeben wird, wird das, was der Eigentümer hat, freigegeben. Der Hauptunterschied ist, wer die Ressourcen des Formulars verwaltet. In der ersten Methode werden die Ressourcen des Formulars vom Programmierer verwaltet.
B. Verschiedene Möglichkeiten, Formulare freizugeben. Da es zum Speichern des Speichers ist, sollte das Gebrauchsformular den Speicher "herausgeben". Hier werde ich ein paar ähnliche Methoden auflisten:
(1)
procedure tform1.button1click (Absender: tobject);
Beginnen
......
Wenn Form2 = nil dann
Form2: = tForm2.create (Anwendung);
Form2.ShowModal;
......
Ende;
procedure tform2.close (Absender: tobject; var action: tcloseaction);
Beginnen
ModalResult: = mrnone;
Aktion: = Cafree;
Form2: = nil;
Ende;
(2)
procedure tform1.button1click (Absender: tobject);
Beginnen
Wenn nicht zugewiesen (Form2) dann
Beginnen
Application.createForm (tform2, Form2);
versuchen
Form2.ShowModal;
Endlich
Form2.Free;
Form2: = nil;
Ende;
Ende
anders
Form2.ShowModal;
Ende;
(3)
procedure tform2.button1click (Absender: tobject);
Beginnen
Form2.CLOSE;
Form2.Release;
Ende;
== Kontrolle der Kontrolle
A. Das berühmte RXLIB -Kontrollpaket wurde von drei russischen Experten geschrieben und ist sehr hervorragend! Es gibt jedoch zu viel Inhalt und es ist nicht einfach, es gut zu verwenden. Ich werde hier nur ein paar Punkte zu rxRicheDit sagen.
• Viele Leute haben gefragt, wie man RXLIB installiert, es scheint ein bisschen kompliziert zu sein, haha, also werde ich es übrigens auch sagen:
Führen Sie rxinst.exe aus, um RXLIB in/Programmdateien/Borland/Delphi5 (oder 6)/RX -Ordner zu installieren, dann Delphi zu öffnen, Datei/Öffnen zu machen ... und drehen , drücken Sie Compile, Weiter öffnen: DCLRX5.DPK, DCLRXDB5.DPK und DCLRXBD5.DPK.
• Eigentum zulassen. Die Standardeinstellung von Win98 ist mit dem Menü mit der rechten Maustaste nicht ein Problem. Wenn Sie jedoch auf False eingestellt sind, wird das Verknüpfungsmenü zweimal in einer Zeile angezeigt. Aber wenn es falsch ist, wird es normal angezeigt. Für die Systemkompatibilität muss daher die aktuelle Betriebssystemversion ermittelt werden:
procedure tFormmain.formcreate (Absender: tobject);
var
OSVI: OsversionInfo;
......
Beginnen
OSVI.DWOSVERSIONINFOSIZE: = sizeof (OsversionInfo);
GetversionEx (OSVI);
Fall OSVI.DWPLATFORMID von
1: rxRichedit1.AllowObjects: = true;
2: rxRichedit1.AllowObjects: = false;
Ende;
.........
Ende;
Aber ich weiß nicht, warum dieses Attribut ein solches Problem hat, daher hoffe ich, dass der Experte mir einige Ratschläge gibt.
• Onurlclick -Veranstaltung. RxRicheDit konvertiert automatisch Webseitenadressen in das Hyperlink -Format, aber das spezifische Verhalten erfordert weiterhin das Schreiben von Code für sich selbst. Andernfalls werden diese Adressen zu leeren Shells:
procedure tFormmain.rxRicheDit1urlclick (Absender: tobject; const urlText: String; Schaltfläche: tMouseButton);
Beginnen
Wenn Taste = Mbleft dann
Shellexecute (Handle, NIL, PChar (Urltext), NIL, NIL, SW_SHOW);
Ende;
B. Um den Speicher zu speichern und den Betrieb zu optimieren, erstellen wir immer dynamisch Komponenten. Aber nachdem es es verwendet hat, wird es gegen unsere ursprüngliche Absicht verstoßen, wenn es nicht rechtzeitig aus dem Gedächtnis geräumt wird. Aber wie man die erstellte Komponente "tötet"? Dies wird nur auf den Speicherplatz befreit, auf das durch Bearbeiten hingewiesen wird, aber der Zeiger wird nicht auf NIL gesetzt. generiert ... .mistake. Daher müssen wir den Zeiger nach kostenloser Bearbeitung nil: = nil oder freeandnil (nur unter Delphi5 gültig), um in Zukunft einen normalen Betrieb zu gewährleisten.
C. Zeigt den schnellen Text der einzelnen Steuerelemente in der Statuszeile an. Das OnHint -Ereignis dieser Anwendung kann verwendet werden, aber da die Anwendung ein inkompatible Objekt ist, kann die folgende Methode verwendet werden:
......
öffentlich
Prozeduranzeige (Absender: Tobject);
Ende;
......
procedure tForm1.DisplayHint (Absender: Tobject);
Beginnen
StatusBar1.Simpletext: = getlongHint (application.Hint);
Ende;
procedure tform1.formcreate (Absender: tobject);
Beginnen
Application.onhint: = displayHint;
Ende;
Auf diese Weise entspricht der in der Statusleiste angezeigte Text dem Eingabeaufforderung (das kleine gelbe Feld, das automatisch angezeigt wird). Was ist, wenn der Eingabeaufforderungstext in der Statusleiste detaillierter ist? In der Tat ist der Hinweis der Kontrolle wie folgt: MyHint | Es ist nur ein MyHint! "wird in der Statusleiste angezeigt. Jetzt.
D. Einige wichtige Punkte bei der Verwendung von ListView. Im Folgenden ist eine zweispaltige Listansicht als Beispiel.
→ eine Zeile hinzufügen:
mit ListView1 tun
Beginnen
ListItem: = items.add;
ListItem.Caption: = 'Erster Spalteninhalt';
ListItem.subitems.add ('zweiter Spalteninhalt');
Ende;
→ Löschen Sie ListView1:
ListView1.Items.clear;
→ Holen Sie sich die Zeilennummer der aktuell ausgewählten Zeile und löschen Sie die aktuelle Zeile:
Für i: = 0 bis listView1.items.count-1 do
If listView1.Items [i] .Selected then //i=listView1.Selected.index
Beginnen
ListView1.Items.Delete (i);
Ende;
Natürlich hat ListView ein OnSelectItem -Ereignis, mit dem Sie bestimmen können, welche Zeile Sie ausgewählt haben, und es einer globalen Variablen zuweisen.
→ Betrieb von Lesen einer Zeile und einer Spalte:
Edit1.text: = listView1.Items [i] .Caption;
Edit2.text: = listView1.Items [i] .SubItems.Strings [0];
Edit3.text: = listView1.Items [i] .SubItems.Strings [1];
In Analogie kann die gesamte Spalte mit einer Schleife vorgelesen werden.
→ Bewegen Sie den Fokus eine Zeile nach oben:
Für i: = 0 bis listView1.items.count-1 do
If (listView1.Items [i] .gewählt) und (i> 0) dann
Beginnen
ListView1.setfocus;
ListView1.Items.Item [i-1] .Selected: = true;
Ende;
In DelPhi6 verfügt ListView jedoch über ein ElementIndex -Attribut, also gerade
ListView1.setfocus;
ListView1.ItemIndex: = 3;
Sie können den Fokus setzen.
== Andere ==
• Um die Software zu optimieren und perfekter zu gestalten, werden dynamische Arrays häufig bei der Verwendung von Arrays verwendet. Beim Deklarieren, wie z. Also das war's. Wenn es notwendig ist, die Arraylänge erneut zu erweitern: Segenlänge (a, 5), werden A [3] und A [4] hinzugefügt und in der vorherigen A [0], A [1], A [2] Der Wert von, wird nicht gelöscht; 2] werden automatisch aus dem Speicher gelöscht. HINWEIS: Dynamische Arrays beginnen mit "0", also nach SetLength (a, 1) hoch (a) = 0! !
Schließlich, wenn dieses dynamische Array nicht mehr verwendet wird und das Programm noch nicht beendet ist, um Speicher zu sparen, verwenden Sie: a: = nil, um dieses Array freizugeben, und jetzt erreicht es wirklich "grüner und Umweltschutz" :) :) :) :) :)
• Die Frage "Wie man den Weg zum aktuellen Programm läuft" ist oft in Foren zu sehen. In der Tat wird diese Funktion von Zeit zu Zeit in der Programmierung verwendet. Es gibt tatsächlich mehrere Funktionen, die diesen Effekt erzielen können:
→ GetCurrentDirectory (): WinAPI -Funktion ist die spezifische Verwendung wie folgt:
var
MycurrentDir: Array [0..144] von Char;
Beginnen
GetCurrentDirectory (Sizeof (MycurrentDir), MycurrentDir);
Mycurrentdir: = mycurrentdir+'/mysoftname.exe';
Ende;
→ GetCurrentDir (): Eine Funktion, die durch GetCurrentDirectory von Delphi eingekapselt ist, ist die Verwendung einfach: MycurrentDir: = GetCurrentDir. Das endgültige Format ist: C:/Windows/System
Es gibt auch Funktionen, die den Pfad direkt erhalten können: ExtractFilePath (Paramstr (0)), ExtractFilepath (application.exename) usw.
• Meldungen zum Herunterfahren von Systemen, Neustarts usw. Dies ist auch eine Frage, die die Leute stellen, und ich werde es hier erwähnen:
Herunterfahren: exitwindowsex (ewx_shutdown, 32);
Neu starten: exitwindowsex (ewx_reboot, 32);
Logout: exitwindowsex (ewx_logoff, 32);
Ausschalten: exitwindowsex (ewx_poweroff, 32);
• In Delphi, zusätzlich zur Verwendung von #39, wie Sie in einem Programm (z. B. ShowMessage) mit "Einzelzitaten" umgehen? Sowohl "" und "" "" "" "" " '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Tatsächlich repräsentieren vier einzelne Zitate ein einzelnes Zitat, dh '' ', der zweite und dritte zeigen, dass dies ein "' '" ist, und das erste und vierte zeigt an, dass dies ein Charaktertyp ist. Haha, sehr interessant :)
• Chinesische Probleme in der Showmessage. Die Schaltflächen in Showmessage befinden sich alle im E-Text, wodurch sich die Menschen unwohl fühlen. Tatsächlich können wir nach unserem DIY sie alle zum Chinesen machen.
Speichern Sie zunächst das aktuelle Projekt und wählen Sie das Projekt | Sprachen hinzufügen ... das Dialogfeld Sprache hinzufügen, wählen Sie das Projekt, das Sie Chinesisch möchten (Sie können auch den Ordner anpassen), als nächstes aus. China), als nächstes; Suchen Sie das Element "const_smsgdlgok" in der Liste, ändern Sie das "chinesische (übersetzte)" Muster in "OK" (Original)) und beenden Sie nach dem Speichern. Führen Sie das Programm jetzt noch einmal aus, haha, ist es nur der chinesische Knopf?
Ein Meldungsdialogfeld mit Showmessage ist jedoch sehr einfach und kann Entwicklern während des Systemdebuggens angezeigt werden. Da es jedoch zu einfach ist, empfehle ich, solche Dialogfelder in der offiziellen Version der Software nicht zu verwenden. Darüber hinaus ist es am besten, MessageBox anstelle von ShowMessage zu verwenden, um die Größe der Software zu reduzieren. !