[Aufbau] setzt sich wie folgt zusammen:
[Aufbau] := Symbol + Schaltfläche + ButtonFocus
Symbol:
| Bedeutung | Virtueller Code | |
| 0 | ohne | |
| 16 | Kreuz | MB_ICONSTOP |
| 32 | Fragezeichen | MB_ICONQUESTION |
| 48 | Ausrufezeichen | MB_ICONWARNING |
| 64 | Informationszeichen | MB_ICONINFORMATION |
ButtonFocus:
| Bedeutung | Virtueller Code | |
| 0 | 1. Schaltfläche wird focussiert | MB_DEFBUTTON1 |
| 256 | 2. Schaltfläche wird focussiert | MB_DEFBUTTON2 |
| 512 | 3. Schaltfläche wird focussiert | MB_DEFBUTTON3 |
Schaltflächen:
| Bedeutung | Virtueller Code | |
| 0 | OK | MB_OK |
| 1 | OK-Abbrechen | MB_OKCANCEL |
| 2 | Abbrechen-Wiederholen-Ignorieren | MB_ABORTRETRYIGNORE |
| 3 | Ja-Nein-Abbrechen | MB_YESNOCANCEL |
| 4 | Wiederholen-Abbrechen | MB_RETRYCANCEL |
| 5 | Ja-Nein | MB_YESNO |
| 16384 | Hilfe | MB_HELP |
Auswertung:
| Bedeutung | Virtueller Code | |
| 1 | OK gewählt | IDOK |
| 2 | Abbrechen gewählt | IDCANCEL |
| 3 | Abbruch gewählt | IDABORT |
| 4 | Wiederholen gewählt | IDRETRY |
| 5 | Ignorieren gewählt | IDIGNORE |
| 6 | Ja gewählt | IDYES |
| 7 | Nein gewählt | IDNO |
Beispiele:
Page Control
ActivePage - Name der aktuellen Seite
PageIndex - Nummer der aktuellen Seite
Pages - Stringliste der Seitennamen
Pages - Stringliste der Seitennamen
Die Tabsheets (also der Seitentitel) verdeckt man mit der Eigenschaft:
TabVisible
= False.
Mit so verdeckten Tabsheets können mehrere Formulare simuliert
werden. Auf die einzelnen Seiten gelangt man mit dem ActivePageIndex.
Dieser fängt bei 0 auf der 1. Seite an.
RadioGroup
Die einzelnen, anzukreuzenden Felder sind mit Items einzugeben.
Um herauszufinden, welches Item angekreuzt ist:
Case RadioGroup.ItemIndex of
0: begin ... end;
1: begin ... end;
End;
Graphiken
Eine Möglichkeit, Graphiken ausgeben zu lassen, ist in der Paintbox
(System). Nachteil hier-bei ist, daß die Graphik nicht dauerhaft
gespeichert wird. Ein weiteres Formular darüber und alles ist fort.
Besser: Image (Komponentenleiste Zusätzlich).
Anzusprechen ist dieses Element genau so wie die Paintbox, mit Höhe,
Breite, ... .
Virtueller Tastaturcode (virtual
keycode)
Steuer- und andere Tasten sind nicht im ASCII-Code greifbar. Deshalb
gibt es den sogenannten virtuellen Tastaturcode.
Procedure ...KeyDown(...;var key: word);
Begin
If key = VK_Escape then
...
End;
Einige wichtige Keys:
| Bedeutung | |
| VK_LBUTTON | linke Maustaste |
| VK_RBUTTON | rechte Maustaste |
| VK_CANCEL | Strg + Pause |
| VK_BACK | Backspace |
| VK_RETURN | Enter |
| VK_SHIFT | Shift |
| VK_CONTROL | Strg (Ctrl) |
| VK_ESCAPE | Escape |
| VK_SPACE | Space |
| VK_LEFT | linke Pfeiltaste |
| VK_UP | Pfeiltaste nach oben |
| VK_RIGHT | rechte Pfeiltaste |
| VK_DOWN | Pfeiltaste nach unten |
| VK_F1 | F1 |
| ... | ... |
| VK_F24 | F24 |
| VK_DELETE | Delete (?) |
| VK_SNAPSHOT | Print-Taste (Druck) |
Keys auf dem Nummernblock:
| Bedeutung | |
| VK_NUMPAD0 | 1 |
| VK_NUMPAD1 | 2 |
| ... | ... |
| VK_NUMPAD9 | 9 |
| VK_ADD | Plus + |
| VK_MULTIPLY | Mal * |
| VK_SUBTRACT | Minus - |
| VK_DECIMAL | Geteilt / |
Textdateien
Zunächst gibt es folgende Befehle:
drucken: Hoch- oder Querformat
Printer.Orientation := poLandscape; // *** Querformat
Printer.Orientation := poPortrait; // *** Hochformat
ACHTUNG!
Printer.Orientation := ... darf nur außerhalb des Druckauftrages
kommen!!!! sonst böser Fehler!
Aufgemerkt!
Bei Hochformat ist die kürzere Seite Printer.PageWidth und die
längere Printer.PageHeight, bei Querformat ist das genau anders herum,
die längere Seite ist Printer.PageWidth und die kürzere ist Printer.PageHeight!
Daher können Berechnungsprozeduren für graphische Element
bedenkenlos übernommen werden, der Drucker dreht sie quasi auch mit.
Dynamische Fenster
Es muß ein Hauptformular geben, eine Haupt-Unit. Vor der werden
alles weiteren Formulare aufgerufen, vorher müssen diese natürlich
als Unit eingebunden werden. Sinnvollerweise im Implementationsteil.
| Unit x;
Interface ... Implementation uses y; ... Procedure ...Click (...); Var fenster: Tform2; Begin hide(); fenster := Tform2.Create(self); Try fenster.ShowModal(); Finally fenster.free; End; show(); End; end; |
Dynamische Knöpfe
Ziel vorliegender Unit ist es, entsprechend einer "anzahl" Buttons
zu erzeugen. Diese sind zunächst flach. Beim Anklicken derselben ändern
sie ihre Flateigenschaft.
Achtung: Das Formular2 muß die Eigenschaft AutoSize := TRUE bekommen!
| unit Unit_3;
interface uses ... type
var Formular1: TFormular1;
implementation uses Unit_4; procedure TFormular1.B_zeigenClick(Sender: TObject);
end. |
| unit Unit_4;
interface uses ..., Buttons; type
var Formular2: TFormular2; implementation uses Unit_3; var knopf: TSpeedButton; procedure TFormular2.FormActivate(Sender: TObject);
procedure TFormular2.B_endeClick(Sender: TObject);
procedure TFormular2.klick(Sender: TObject);
end. |
Liste mit Integerwerten
Nicht zu vergessen ist die Liste selbst:
var liste: TList;
...
liste := TList.Create();
Da die Elemente von TList Zeiger sein müssen. Daher wird ein Zeiger
auf den Typ Integer deklariert:
var point: ^integer;
Ein neuer Speicherplatz wird wie folgt allokiert:
New(point);
Dann wird der entsprechende Wert zugewiesen:
point^ := integerzahl;
und in die Liste geschrieben:
liste.Add(point);
Jetzt sollen die Elemente wieder ausgelesen werden. Dazu muß nicht
unbedingt eine Pointervariable benutzt werden. Es geht auch so:
integerzahl := integer(liste.Items[nr]^);
Zum Schluß darf dann nicht vergessen werden:
liste.Free;
Schleifenunterbrechung
Unter Delphi kann beispielsweise ein Tastatureingabe während eines
Schleifendurchlaufs nur mit Application.Processmessages() realisiert werden:
| var stop: boolean;
Procedure ...ButtonOnClick(...);
Procedure ...ButtonKeyPressed(...);
|
Exe-Datei ausführen und Parameter
übergeben
Unit shellapi;
Aufruf: shellexecute(handle,'open','programm.exe',nil,nil,sw_show);
bzw;
shellexecute(handle,'open','programm.exe',stringvariable,nil,sw_show);
Bei ersterem wird nur eine exedatei ausgeführt, bei letzterem auch noch ein Parameter übergeben. Im aufgerufenen Programm sie das wie folgt aus:
| procedure ...OnCreate(...);
begin if ParamCount>0 then begin ShowMessage('Es wurden '+ParamCount+' Paramerter übergeben'+#13+'Der erste lautet: '+ParamStr(0)); end; end; |