Skip to main content
Skip table of contents

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-EigenschaftenBeschreibung
CheckedItems:CollectionIndizes der aktuell ausgewählten Einträge
CheckedCount:NAnzahl der ausgewählten Einträge
ValuesChecked: CollectionWert (Value) der Einträge im ausgewähltem Zustand
ValuesUnChecked: CollectionWert (Value) der Einträge im abgewähltem Zustand
DisplayText:CAnzeige Text (Text der ausgewählten Einträge mit Trennzeichen)
ShowTextAsHint:LAnzeige Text als Hint anzeigen (ShowHint muss aktiv sein)
Separator:CTrennzeichen für Anzeigetext
ShowUserSelectionInContextMenu:LPer 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
CBCheckAllItemsAlle vorhandenen Einträge auswählen
CBUnCheckAllItemsAlle 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,

Weitere Verknüpfungen

JavaScript errors detected

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

If this problem persists, please contact our support.