Inhaltsverzeichnis
cpShowModal
Einleitung
Mit diesem Befehl ist es möglich, ein Windows Fenster anzuzeigen, über das z.B. Eingaben gemacht werden können, um sie später im AddOn-Code zu verarbeiten.
Im Gegensatz zu cpShow ist es jedoch NICHT möglich, andere Teile von Cockpit-XP weiter zu bedienen, z.B. die Funktionsleiste, solange das Formular aktiv ist. Das Formlar MUSS zuerst beendet werden.
Das Thema TForm ist sehr komplex und in der Kürze kaum zu behandeln. Wer einsteigen möchte, ist im Cockpit-XP Forum gut aufgehoben. Fragen können dort gezielt und umfassender beantwortet werden.
Syntax
| Befehl | cpShowModal(Form:TForm); |
|---|---|
| Funktion | Zeigt ein Windows Formular modal auf dem Monitor an. |
| Typ |
Codebeispiel
Ein einfaches Eingabeformular mit Button.
var
f: TForm;
b: TButton;
l1 : TLabel;
e1 : TEdit;
fine: Boolean;
// Formular definieren und
procedure EingabeFormularZeigen();
begin
// f ist das Formularobjekt und wird hier initialisiert
f := TForm.Create(nil);
f.Caption := 'Cockpit-XP Wiki - Demo Formular';
f.BorderStyle := bsDialog;
f.Position := poScreenCenter;
// l1 ist das Label (Bezeichner) vor dem Eingabefeld
l1 := TLabel.Create(f);
l1.Name := 'Label1';
l1.Parent := f;
l1.Caption := 'Eingabefeld 1:';
l1.SetBounds(10,40,200,30);
// Hier wird das Eingabefeld definiert
e1 := TEdit.Create(f);
e1.Name := 'Textfeld1';
e1.Parent := f;
e1.Text := 'Cockpit-XP - was sonst?';
e1.SetBounds(90,37,200,30);
// Hier kommt die Schalfläche
b := TButton.Create(f);
b.Name := 'Button1';
b.Parent := f;
b.SetBounds(10, 100, 100, 30);
b.Font.Size := -16;
b.Caption := 'Test';
// Diese Prozedur wird aufgerufen, wenn der Button geklickt wird.
b.OnClick := @ButtonClick; { same as b.OnClick := 'ButtonClick' }
// Variable initialisieren
fine := False;
// Form f modal anzeigen
cpShowModal(f);
// Solange fine den Wert False hat
while not fine do
begin
// kurz warten
cpSleep(250);
end;
// Schließt das Formular wieder
cpFormFree(f);
end;
// Handler, wenn Button geklickt wurde
procedure ButtonClick(Sender: TButton);
begin
// Meldung anzeigen
cpShowMessage('Eingabe hat Wert: ' + e1.Text);
// Eigenschaft, wenn auf den Button geklickt wird = OK
f.ModalResult := mrOk;
// Variable auf True setzen. Formular wird dann geschlossen
fine := True;
end;
// Hauptprogram ab hier -->
begin
// Ruft das Formular auf und zeigt es an
EingabeFormularZeigen();
end.
Dieses Beispiel definiert ein Formular mit einem Label (Bezeichner), einem Eingabefeld und einer Schaltfläche (Button). In das Feld kann beliebiger Text eingegeben werden. Klickt man auf den Button, erscheint der eingegebene Text in einer Meldung.
Da die Meldung aus dem Ereignishandler des Buttons kommt, wird das Formular erst geschlossen, wenn die Meldung ebenfalls mit Klick auf OK bestätigt ist.
Nach dem Klick auf OK der Meldung wird die Variable fine wahr (True). Der Befehl cpFormFree schließt das Formular und gibt belegte Speicherresourcen wieder frei.
