TBeCheckCombo
TBeCheckCombo
TBeCheckCombo ist eine erweiterte TBeCombo Klasse welche zur Auswahl 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
Allgemeine-Eigenschaften | Beschreibung |
---|---|
CheckedItems:Collection | Indizes der aktuell ausgewählten Einträge |
CheckedCount:N | Anzahl der ausgewählten Einträge |
ValuesChecked: Collection | Wert (Value) der Einträge im ausgewähltem Zustand |
ValuesUnChecked: Collection | Wert (Value) der Einträge im abgewähltem Zustand |
DisplayText:C | Anzeige Text (Text der ausgewählten Einträge mit Trennzeichen) |
ShowTextAsHint:L | Anzeige Text als Hint anzeigen (ShowHint muss aktiv sein) |
Separator:C | Trennzeichen für Anzeigetext |
ShowUserSelectionInContextMenu:L | Per Kontext-Menu den aktuellen User an/abwählen (default=False)Wird automatisch aktiv wenn eine der beiden be-User MM-Tabellen(-11 & -13) eingestellt wird. |
Aktive-Eigenschaften (Methoden) | Beschreibung |
---|---|
CBCheckAllItems | Alle vorhandenen Einträge auswählen |
CBUnCheckAllItems | Alle vorhandenen Einträge abwählen |
Verwendung
- TBeCheckCombo auf eine F12-Maske platzieren
- DataSource muss zugewiesen und aktiv sein
- DataField muss zugewiesen sein
- DataField muss als Control-Typ TBeCheckCombo definiert sein
- Im F12-Designer findet sich die Komponente unter der Palette "BE-Combo"
Beispiel
CODE
// demonstriert den Einsatz der Klassen TBeCheckCombo, TBeAttribCheckCombo und
// TBeFieldAttribCheckCombo
//
// HINWEIS:
// Die im Beispiel "manuell" erzeugten Klassen können natürlich auch im Designer
// erstellt werden und die entsprechenden Eigenschaften dort gesetzt werden.
| oForm, oSeparatorButton, oSeparatorEdit, oLabelSeparator, oCheckAllButton,
oCheckNoneButton, oBeCheckCombo, oBeFieldAttribCheckCombo, oBeAttribCheckCombo,
oDab065:DB:="waDAB065, DAB066", oDataSourceStd, oTextEdit, oLabelAttribBox, oLabelFieldBox,
oLabelCheckCombo, oLabelFieldAttribCheckCombo, oMemTable, oMemField,
oLabelAttribCheckCombo, oDataSourceMem |
//******************************************************************************
function OnBeCheckComboClickCheck( Sender )
| i, aItems, aValues |
oTextEdit.Text := 'Sender: ' + ClassName(Sender) + crlf,
// Werte (Value) der einzelnen Einträge
oTextEdit.Text += 'ValuesChecked: ',
aValues := Sender.ValuesChecked,
for i:=1 to CollCount(aValues) do
oTextEdit.Text += CollItem(aValues, i) + ',',
end,
// Index der ausgewählten Einträge
aItems := Sender.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,
oTextEdit.Text += crlf + 'Anzeige-Text: ',
oTextEdit.Text += Sender.DisplayText,
oTextEdit.Text += crlf + 'Ausgewählt: ',
oTextEdit.Text += str(Sender.CheckedCount),
end,
//******************************************************************************
function OnSeparatorChangeClick( Sender )
oBeCheckCombo.Separator := oSeparatorEdit.Text,
end,
//******************************************************************************
function OnCheckAllClick( Sender )
oBeCheckCombo.CBCheckAllItems,
end,
//******************************************************************************
function OnCheckNoneClick( Sender )
oBeCheckCombo.CBUnCheckAllItems,
end,
//******************************************************************************
startseq
//***************************************************************************
// Beispiel-Formular erzeugen
//***************************************************************************
oForm := CreateObject('TFormEx'),
oForm.OrigCapt := 'CheckCombo im Codeblock',
oForm.Position := POSCREENCENTER,
oForm.Width := 440,
oForm.Height := 320,
//***************************************************************************
// Beispiel eines datengebundenen "Standard" CheckCombo-Controls
//***************************************************************************
// DataSource erzeugen
oDataSourceStd := CreateObject('TDataSourceEx',
'DataSourceExStd1', oForm, oForm),
oDataSourceStd.DataSet := oDAB065,
DbGoBottom(oDAB065),
// "Standard" CheckCombo-Control erzeugen
oBeCheckCombo := CreateObject('TBeCheckCombo',
'BeCheckCombo1', oForm, oForm),
oBeCheckCombo.Left := 10,
oBeCheckCombo.Top := 30,
oBeCheckCombo.Width := 200,
oBeCheckCombo.Height := 90,
oBeCheckCombo.ShowTextAsHint := True,
oBeCheckCombo.ShowUserSelectionInContextMenu := True,
// durch die Zuweisung eines DataSources und eines DataFields, holt sich die
// BeCheckCombo die MM-Tabelle von selbst
oBeCheckCombo.DataSource := oDataSourceStd,
oBeCheckCombo.DataField := 'N_AKTION',
dbrefresh(oDAB065),
// Event zuweisen
AssignEvent(oBeCheckCombo, 'OnClickCheck', 'OnBeCheckComboClickCheck'),
// Eingabefeld für Anzeigetrenner
oSeparatorEdit := CreateObject('TBeEdit',
'TBeEdit2', oForm, oForm),
oSeparatorEdit.Left := 220,
oSeparatorEdit.Top := 30,
oSeparatorEdit.Width := 55,
oSeparatorEdit.Text := oBeCheckCombo.Separator,
oSeparatorButton := CreateObject('TButton',
'TButton1', oForm, oForm),
oSeparatorButton.Left := 285,
oSeparatorButton.Top := 28,
oSeparatorButton.Width := 55,
oSeparatorButton.Caption := 'ändern',
// Event zuweisen
AssignEvent(oSeparatorButton, 'OnClick', 'OnSeparatorChangeClick'),
// Button "Alle Einträge auswählen"
oCheckAllButton := CreateObject('TBeBitBtn',
'TButton2', oForm, oForm),
oCheckAllButton.Left := 220,
oCheckAllButton.Top := 58,
oCheckAllButton.Width := 55,
oCheckAllButton.ImageIndex.IndexNormal := 189,
oCheckAllButton.Caption := 'alle',
// Event zuweisen
AssignEvent(oCheckAllButton, 'OnClick', 'OnCheckAllClick'),
// Button "Keine Einträge auswählen"
oCheckNoneButton := CreateObject('TBeBitBtn',
'TButton3', oForm, oForm),
oCheckNoneButton.Left := 285,
oCheckNoneButton.Top := 58,
oCheckNoneButton.Width := 55,
oCheckNoneButton.ImageIndex.IndexNormal := 190,
oCheckNoneButton.Caption := 'keine',
// Event zuweisen
AssignEvent(oCheckNoneButton, 'OnClick', 'OnCheckNoneClick'),
//***************************************************************************
// Beispiel eines datengebundenen CheckCombo-Controls auf einer MemTable
// (jede beliebige Tabelle denkbar)
//***************************************************************************
// Memtable erzeugen
oMemTable := CreateObject('TMemCalcTable', 'MemTable1', oForm),
// Feld erzeugen
oMemField := CollAdd( oMemTable.FieldsDefinition ),
oMemField.Name := 'MEM_ABTLG',
oMemField.DataType := 1, // Character
oMemField.Size := 40,
oMemTable.Active := True,
// Datensatz anlegen mit 'Abteilungen'
dbappend(oMemTable),
oMemTable:MEM_ABTLG := '100/200/', // Initialwert
dbpost(oMemTable),
// DataSource erzeugen
oDataSourceMem := CreateObject('TDataSourceEx', 'DataSourceExMem1', oForm),
oDataSourceMem.DataSet := oMemTable,
// CheckCombo-Control erzeugen
oBeFieldAttribCheckCombo := CreateObject('TBeFieldAttribCheckCombo',
'BeFieldAttribCheckCombo1', oForm, oForm),
oBeFieldAttribCheckCombo.Left := 10,
oBeFieldAttribCheckCombo.Top := 130,
oBeFieldAttribCheckCombo.Width := 200,
oBeFieldAttribCheckCombo.Height := 90,
oBeFieldAttribCheckCombo.BeAttributeID := -8,
oBeFieldAttribCheckCombo.DataField := 'MEM_ABTLG',
oBeFieldAttribCheckCombo.DataSource := oDataSourceMem,
// Event zuweisen
AssignEvent(oBeFieldAttribCheckCombo, 'OnClickCheck', 'OnBeCheckComboClickCheck'),
//***************************************************************************
// Beispiel eines nit datengebundenen CheckCombo-Controls
//***************************************************************************
oBeAttribCheckCombo := CreateObject('TBeAttribCheckCombo',
'BeAttribCheckCombo1', oForm, oForm),
oBeAttribCheckCombo.Left := 220,
oBeAttribCheckCombo.Top := 130,
oBeAttribCheckCombo.Width := 200,
oBeAttribCheckCombo.Height := 90,
oBeAttribCheckCombo.BeAttributeID := -8,
oBeAttribCheckCombo.Value := '200/300', // Initialwert
// Event zuweisen
AssignEvent(oBeAttribCheckCombo, 'OnClickCheck', 'OnBeCheckComboClickCheck'),
//***************************************************************************
// Ausgabe-Control - nur für den Test
//***************************************************************************
oTextEdit := CreateObject('TBeEdit', 'Edit1', oForm, oForm),
oTextEdit.Text := '',
oTextEdit.Left := 10,
oTextEdit.Top := 170,
oTextEdit.Width := 410,
oTextEdit.AutoSize := False,
oTextEdit.Height := 110,
oTextEdit.WantReturns := True,
oTextEdit.WordWrap := True,
oTextEdit.ReadOnly := True,
//***************************************************************************
// Beschriftungen
//**************************************************************************<h3>
oLabelCheckCombo := CreateObject('TBeLabel', 'BeLabel1', oForm, oForm),
oLabelCheckCombo.Left := 10,
oLabelCheckCombo.Top := 10,
oLabelCheckCombo.Caption := 'TBeCheckCombo',
oLabelFieldAttribCheckCombo := CreateObject('TBeLabel', 'BeLabel2', oForm, oForm),
oLabelFieldAttribCheckCombo.Left := 10,
oLabelFieldAttribCheckCombo.Top := 110,
oLabelFieldAttribCheckCombo.Caption := 'TBeFieldAttribCheckCombo',
oLabelAttribCheckCombo := CreateObject('TBeLabel', 'BeLabel3', oForm, oForm),
oLabelAttribCheckCombo.Left := 220,
oLabelAttribCheckCombo.Top := 110,
oLabelAttribCheckCombo.Caption := 'TBeAttribCheckCombo',
oLabelSeparator := CreateObject('TBeLabel', 'BeLabel4', oForm, oForm),
oLabelSeparator.Left := 220,
oLabelSeparator.Top := 10,
oLabelSeparator.Caption := 'Anzeige Trenner',
// Formular anzeigen
ShowModal(oForm),
// Formular zerstören
DestroyObject(oForm),
onerror,
writeln(GetErrorText()),
DestroyObject(oForm),
stopseq,