OBS/Adminhilfe/Pax Ereignisbehandlung

Aus OBS Wiki
Version vom 17. Juli 2014, 09:53 Uhr von Rademacker (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Anleitung für die Konvertierung der Ereignisbehandlung eines Scripts auf PAX == Einleitung ---- Die Ereignisbehandlung (Event-Handling) in Pax-Scripten unte…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
Für diese Seite wurde eine Zugriffsbeschränkung eingerichtet. Falls du diese Nachricht siehst, bist du nicht berechtigt, diese Seite einzusehen.

Anleitung für die Konvertierung der Ereignisbehandlung eines Scripts auf PAX

Einleitung


Die Ereignisbehandlung (Event-Handling) in Pax-Scripten unterscheidet sich deutlich zu der in Dream-Scripten. Daher ist eine automatisierte Konvertierung leider nicht möglich und die manuelle Anpassung ist erforderlich. Diese Schritt-für-Schritt-Anleitung dient dazu als Leitfaden.

  • Eine neue Klasse oberhalb des Scripts definieren die jede von einem Event aufgerufene Methode definiert:
type
 TEventHandler = class
   procedure Dispose(Sender: TObject; var Action: TCloseAction); 			<-- muss IMMER vorhanden sein!
   procedure EventHandlerX(Sender: TObject);						<-- beliebiger Event-Handler
   procedure EventHandlerY(Sender: TObject);						<-- beliebiger Event-Handler
   procedure KeyEventHandler(Sender: TObject; var Key: Word; Shift: TShiftState);	<-- beliebiger Event-Handler
 end;

Achtung: Eine Klasse darf nur einmal in einem Script vorkommen, also bei zusätzlichen Auswahldialogen muss ein anderer Name als TEventHandler genutzt werden!

  • Eine neue globale Variable einbauen: 'EventHandler: TEventHandler;'.
  • Alle Event-Handler-Methoden der Klasse zuordnen: 'procedure TEventHandler.EventF2Handler(Sender: TObject);' statt 'procedure EventF2Handler(Sender: TObject);'.
  • Direktaufrufe von Event-Handlern ersetzen: 'EventChkHandler(oForm);' wird zu 'EventHandler.EventChkHandler(oForm);'.
  • Methode 'Dispose' einfügen:
procedure TEventHandler.Dispose(Sender: TObject; var Action: TCloseAction);
begin
 Free;
end;
  • Event-Zuweisungen ersetzen:
DC.CreateEvent(chkbx_Seiten ,'OnClick' ,'EventChkHandler',True);

wird zu

chkbx_Seiten.OnClick := EventHandler.EventChkHandler;
  • Nach dem Create des Formulars den EventHandler erzeugen und die Methode 'Dispose' zuweisen:
oForm := TForm.Create(Application);

[...]

EventHandler  := TEventHandler.Create();
oForm.OnClose := EventHandler.Dispose;
  • Wenn nicht vorhanden Constraints einbauen (direkt vor ShowModal wenn Breite und Höhe bereits gesetzt sind):
oForm.Constraints.MinHeight := oForm.Height;
oForm.Constraints.MaxHeight := oForm.Height;
oForm.Constraints.MinWidth  := oForm.Width;
oForm.Constraints.MaxWidth  := oForm.Width;