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.




Start - FAQ - Glossar - Sitemap - Impressum