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. |
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,