Skip to main content
Skip table of contents

TCodeBlockPanel

TCodeBlockPanel

Ein Panel, dem ein CodeBlock zugewiesen werden kann, um so eine individuelle Benutzeroberfläche zu realisieren.
Das CodeBlockPanel findet hauptsächlich im be-Maskendesigner Verwendung, um designbare Masken noch flexibler erweitern zu können.

Eigenschaften

EigenschaftBeschreibung

ExecOnLoad:L

true = Beim ersten Laden des Panels wird der CodeBlock ausgeführt (default) false

ID:N

Hier kann eine ID hinterlegt werden, welcher dann CodeBlock-Code zugewiesen wird indem man doppelt in das Eingabefeld (z.B. im Objektinspektor der Masken-Designer oder in der F12-Maske) klickt.
Panels mit der gleichen ID führen auch immer den dafür hinterlegten CodeBlock aus.

Beispiel

CODE
//******************************************************************************
// Beschreibung: TCodeBlockPanel Beispiel 1:
//               Erzeugen eines TForm Formulars auf einem TCodeBlockPanel
//               Dieses Beispiel kann auf allen CodeBlockPanels verwendet werden
//******************************************************************************

| oForm, oButton, oEdit, oLabelButton, oLabelEdit |


//##############################################################################
//##############################################################################
// Events
//##############################################################################
//##############################################################################

//******************************************************************************
// Bei Klick auf den Button
//******************************************************************************
function ButtonClick( Sender )
  oLabelButton.Caption := 'Der Button wurde angeklickt!',
end,

//******************************************************************************
// Bei Tastendruck im Editfeld
//******************************************************************************
function EditKeyPress( Sender )
  oLabelEdit.Caption := 'Eingabe: ' + Sender.Text,
end,


//##############################################################################
//##############################################################################
// Initialisierung
//##############################################################################
//##############################################################################

// Dieser CodeBlock soll nur ausgeführt werden,
// wenn das Formular noch nicht existiert
if Empty(FindObjByClass(Self, 'TForm')) then

  StartSeq
     // Form
     oForm             := CreateObject('TForm',, Self, Self),
     oForm.BorderStyle := bsNone,
     oForm.Align       := alClient,
     oForm.Visible     := true,
     SetParent(oForm, Self),

     // Edit
     oEdit        := CreateObject('TBeEdit',, Self, oForm),
     oEdit.Top    := 3,
     oEdit.Left   := 3,
     oEdit.Width  := 80,
     oEdit.Height := 24,
     oEdit.Text   := 'TBeEdit',

     // LabelButton
     oLabelButton         := CreateObject('TLabel',, Self, oForm),
     oLabelButton.Top     := oEdit.Height + 6,
     oLabelButton.Left    := 3,
     oLabelButton.Caption := '',

     // LabelEdit
     oLabelEdit         := CreateObject('TLabel',, Self, oForm),
     oLabelEdit.Top     := oLabelButton.Top + oLabelButton.Height + 6,
     oLabelEdit.Left    := 3,
     oLabelEdit.Caption := '',

     // Button
     oButton         := CreateObject('TButton',, Self, oForm),
     oButton.Top     := 3,
     oButton.Left    := oEdit.Width + 3,
     oButton.Width   := 65,
     oButton.Height  := 24,
     oButton.Caption := 'TButton',

     // Events zuweisen
     AssignEvent(oButton, 'OnClick', 'ButtonClick'),
     AssignEvent(oEdit, 'OnKeyPress', 'EditKeyPress'),

  OnError
     MessageDlg(GetErrorText()),
  StopSeq,

endif,




//==============================================================================
//==============================================================================
//==============================================================================
//==============================================================================
//==============================================================================
//==============================================================================




//******************************************************************************
// Beschreibung: TCodeBlockPanel Beispiel 2:
//               Erzeugen eines Browsers, der die Details aus der Tabelle
//               Dab510 für die aktuellen Bestellrückstände filtert.
//               Dieses Programm kann nur auf der Maske `Lieferanten-Rückstände'
//               verwendet werden!
//******************************************************************************

| oDsMain, oDsDab510, oDab510, oGrid |


//##############################################################################
//##############################################################################
// Events
//##############################################################################
//##############################################################################

//******************************************************************************
// Wenn sich ein Datensatz aus der MAINTABLE ändert (sprich: Zu einem anderen
//                                                           Lieferanten ge-
//                                                           sprungen wird.  )
//******************************************************************************
function MainTableDataChange()
  DBScope({MAINTABLE:ARTNR}, {MAINTABLE:ARTNR}, oDab510),
  DBLocate('LINR', {MAINTABLE:LIEFNR},, oDab510),

  // Browser Einstellungen einmal beim ersten Aufruf laden
  if not Empty(oGrid) and (oGrid.Tag = 0) then
     oGrid.ReadWriteProps := 0, // Browser Einstellungen laden
     oGrid.Tag := 1,
  endif,
end,


//##############################################################################
//##############################################################################
// Initialisierung
//##############################################################################
//##############################################################################

// Dieser CodeBlock soll nur ausgeführt werden,
// wenn das Control mit dem Namen `DetailGrid' noch nicht existiert
if Empty(FindObject(Self, 'DetailGrid')) then
  StartSeq
     // Detail-Tabelle
     oDab510 := CreateObject('TBeStandardTable', 'ArtikelZulief', Self, Self),
     oDab510.Workarea := waDAB510,
     oDab510.IndexName := 'Dab511',
     oDab510.Active := true,

     // Datasource
     oDsDab510 := CreateObject('TDataSourceEx', 'oDsDab510', Self, Self),
     oDsDab510.DataSet := oDab510,

     // Anzeige Grid
     oGrid := CreateObject('TBeAltGrid', 'DetailGrid', Self, Self),
     oGrid.Align := alClient,
     oGrid.ID := '@BROID', // Browser ID
     oGrid.DataSource := oDsDab510,
     oGrid.RegisterDataset := oDab510,
     oGrid.Tag := 0,

     // DataChange Event der Haupttabelle abfangen
     oDsMain := FindObjByClass(GetOwner(MAINTABLE),'TDataSourceEx'),
     AssignEvent(oDsMain, 'OnDataChange', 'MainTableDataChange'),
  OnError
     MessageDlg(GetErrorText()),
  StopSeq,
endif,
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.