TBeCheckListBox
TBeCheckListBox
TBeCheckListBox zeigt eine bildlauffähige Liste mit Datenbank-Bindung an, deren Einträge mit Kontrollfeldern (Checkboxen) ausgestattet sind. Der Benutzer kann die Listeneinträge aktivieren und deaktivieren.
Eigenschaften
Eigenschaft | Beschreibung |
---|---|
CheckedItems:Collection | Indizes der aktuell ausgewählten Einträge |
ValuesChecked: Collection | Wert (Value) der Einträge |
Verwendung
- TBeCheckListBox auf eine F12-Maske platzieren und BeAttributeID zuweisen
- DataSource muss zugewiesen und aktiv sein
- DataField muss zugewiesen sein
- DataField muss als Control-Typ TBeCheckListBox definiert sein
- Im F12-Designer findet sich die Komponente unter der Palette "BE-Combo"
Beispiel
CODE
// demonstriert den Einsatz der Klassen TBeCheckListBox
// TBeAttribCheckListBox,
// TBeFieldCheckListBox,
// HINWEIS:
// Die im Beispiel "manuell" erzeugten Klassen können natürlich auch im Designer
// erstellt werden und die entsprechenden Eigenschaften dort gesetzt werden.
| oForm, oBeAttribCheckListBox, oBeFieldCheckListBox, oMemTable, oMemField,
oDataSourceMem, oBeCheckListBox, oDab010:DB:="waDAB010, DAB011", oDataSourceStd, oTextEdit,
oLabelAttribBox, oLabelFieldBox, oLabelListBox, aItems |
//******************************************************************************
function OnBeAttribCheckListBoxClickCheck( Sender )
| i, aItems, aValues |
oTextEdit.Text := 'Sender: ' + ClassName(Sender) + crlf,
// Werte (Value) der einzelnen Einträge
oTextEdit.Text += 'ValuesChecked: ',
aValues := oBeAttribCheckListBox.ValuesChecked,
for i:=1 to CollCount(aValues) do
oTextEdit.Text += CollItem(aValues, i) + ',',
end,
// Index der ausgewählten Einträge
aItems := oBeAttribCheckListBox.CheckedItems,
oTextEdit.Text += crlf + 'CheckedItems: ' + arrtostr(aItems) + crlf,
end,
//******************************************************************************
function OnBeFieldListBoxClickCheck( Sender )
| i, aItems, aValues |
oTextEdit.Text := 'Sender: ' + ClassName(Sender) + crlf,
// Werte (Value) der einzelnen Einträge
oTextEdit.Text += 'ValuesChecked: ',
aValues := oBeFieldCheckListBox.ValuesChecked,
for i:=1 to CollCount(aValues) do
oTextEdit.Text += CollItem(aValues, i) + ',',
end,
// Index der ausgewählten Einträge
aItems := oBeFieldCheckListBox.CheckedItems,
oTextEdit.Text += crlf + 'CheckedItems: ' + arrtostr(aItems) + crlf,
// Werte wie sie in der MemTable abgelegt werden
oTextEdit.Text += 'MemTable: ',
for i:=1 to aLen(aItems) do
oTextEdit.Text += CollItem(aValues, aItems[i]) + '/',
end,
end,
//******************************************************************************
function OnBeCheckListBoxClickCheck( Sender )
| i, aItems, aValues |
oTextEdit.Text := 'Sender: ' + ClassName(Sender) + crlf,
// Werte (Value) der einzelnen Einträge
oTextEdit.Text += 'ValuesChecked: ',
aValues := oBeCheckListBox.ValuesChecked,
for i:=1 to CollCount(aValues) do
oTextEdit.Text += CollItem(aValues, i) + ',',
end,
// Index der ausgewählten Einträge
aItems := oBeCheckListBox.CheckedItems,
oTextEdit.Text += crlf + 'CheckedItems: ' + arrtostr(aItems) + crlf,
// Werte wie sie in der Table abgelegt werden
oTextEdit.Text += 'Table: ',
for i:=1 to aLen(aItems) do
oTextEdit.Text += CollItem(aValues, aItems[i]) + '/',
end,
end,
//******************************************************************************
startseq
//***************************************************************************
// Beispiel-Formular erstellen
//***************************************************************************
oForm := CreateObject('TFormEx'),
oForm.OrigCapt := 'CheckListBox im Codeblock',
oForm.Position := POSCREENCENTER,
oForm.Width := 505,
oForm.Height := 250,
//***************************************************************************
// Beispiel eines nicht datengebundenes CheckListBox-Controls
//***************************************************************************
oBeAttribCheckListBox := CreateObject('TBeAttribCheckListBox',
'BeAttribCheckListBox1',
oForm, oForm),
oBeAttribCheckListBox.Left := 10,
oBeAttribCheckListBox.Top := 30,
oBeAttribCheckListBox.Width := 150,
oBeAttribCheckListBox.Height := 90,
// Merkmalstabelle wählen (Standard "Lagerplatz-Verwaltung")
oBeAttribCheckListBox.BeAttributeID := 102023,
// der Initialwert kann vorgegeben werden !
aItems := oBeAttribCheckListBox.CheckedItems,
AAdd(aItems, 1),
AAdd(aItems, 3),
oBeAttribCheckListBox.CheckedItems := aItems,
// Event zuweisen
AssignEvent(oBeAttribCheckListBox, 'OnClickCheck', 'OnBeAttribCheckListBoxClickCheck'),
//***************************************************************************
// Beispiel eines datengebundenes CheckListBox-Controls auf einer MemTable
// (jede beliebige Tabelle denkbar)
//***************************************************************************
// Memtable erstellen
oMemTable := CreateObject('TMemCalcTable', 'MemTable1', oForm),
// Feld erstellen
oMemField := CollAdd( oMemTable.FieldsDefinition ),
oMemField.Name := 'PLATZ_VER',
oMemField.DataType := 1, // Character
oMemField.Size := 20,
oMemTable.Active := True,
// leeren Datensatz
dbappend(oMemTable),
// DataSource erstellen
oDataSourceMem := CreateObject('TDataSourceEx',
'DataSourceExMem1', oForm),
oDataSourceMem.DataSet := oMemTable,
// CheckListBox-Control für Datenbank-Zugriff erstellen
oBeFieldCheckListBox := CreateObject('TBeFieldCheckListBox',
'BeFieldCheckListBox1',
oForm, oForm),
oBeFieldCheckListBox.Left := 170,
oBeFieldCheckListBox.Top := 30,
oBeFieldCheckListBox.Width := 150,
oBeFieldCheckListBox.Height := 90,
oBeFieldCheckListBox.DataSource := oDataSourceMem,
oBeFieldCheckListBox.DataField := 'PLATZ_VER',
oBeFieldCheckListBox.BeAttributeID := 102023,
// Event zuweisen
AssignEvent(oBeFieldCheckListBox, 'OnClickCheck', 'OnBeFieldListBoxClickCheck'),
//***************************************************************************
// Beispiel eines datengebundenen "Standard" CheckListBox-Controls
//***************************************************************************
// DataSource erstellen
oDataSourceStd := CreateObject('TDataSourceEx',
'DataSourceExStd1', oForm, oForm),
oDataSourceStd.DataSet := oDab010,
DbGoBottom(oDab010),
// "Standard" CheckListBox-Control erstellen
oBeCheckListBox := CreateObject('TBeCheckListBox',
'BeCheckListBox1', oForm, oForm),
oBeCheckListBox.Left := 330,
oBeCheckListBox.Top := 30,
oBeCheckListBox.Width := 150,
oBeCheckListBox.Height := 90,
// durch die Zuweisung eines DataSources und eines DataFields, holt sich die
// BeCheckListBox die MM-Tabelle von selbst
oBeCheckListBox.DataSource := oDataSourceStd,
oBeCheckListBox.DataField := 'PLATZ_VER', // Feld-Control-Typ muss
// TBeCheckListBox sein!
dbrefresh(oDab010),
// Event zuweisen
AssignEvent(oBeCheckListBox, 'OnClickCheck', 'OnBeCheckListBoxClickCheck'),
//***************************************************************************
// Ausgabe-Control - nur für den Test
//***************************************************************************
oTextEdit := CreateObject('TBeEdit', 'Edit1', oForm, oForm),
oTextEdit.Text := '',
oTextEdit.Left := 10,
oTextEdit.Top := 130,
oTextEdit.Width := 470,
oTextEdit.AutoSize := False,
oTextEdit.Height := 80,
oTextEdit.WantReturns := True,
oTextEdit.WordWrap := True,
oTextEdit.ReadOnly := True,
//***************************************************************************
// Beschriftungen
//**************************************************************************<h3>
oLabelAttribBox := CreateObject('TBeLabel', 'BeLabel1', oForm, oForm),
oLabelAttribBox.Left := 10,
oLabelAttribBox.Top := 10,
oLabelAttribBox.Caption := 'TBeAttribCheckListBox',
oLabelFieldBox := CreateObject('TBeLabel', 'BeLabel2', oForm, oForm),
oLabelFieldBox.Left := 170,
oLabelFieldBox.Top := 10,
oLabelFieldBox.Caption := 'TBeFieldCheckListBox',
oLabelListBox := CreateObject('TBeLabel', 'BeLabel3', oForm, oForm),
oLabelListBox.Left := 330,
oLabelListBox.Top := 10,
oLabelListBox.Caption := 'TBeCheckListBox',
// Formular anzeigen
ShowModal(oForm),
// Formular zerstören
DestroyObject(oForm),
onerror,
writeln(GetErrorText()),
DestroyObject(oForm),
stopseq,