Codeblock Onlinehilfe

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

Eigenschaft

Beschreibung

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

//******************************************************************************
// 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,