Skip to main content
Skip table of contents

TbeEditCombo

TbeEditCombo

Basis-Lookup-Combo Klasse. Mit eine Möglichkeit mehrere Spalten anzuzeigen und Incremental-Search in beliebigen Spalten durchzuführen.

Eigenschaften

EigenschaftBeschreibung

DataSource

DataSource der MainTable, in der die Auswahl/Eingabe gespeichert wird. Einfachste Verwendung ist mit die schon bestehende Merkmalstabelle.

DataField

Name des Feldes der MainTable, in der die Auswahl/Eingabe gespeichert wird.

ItemIndex

Nummer der gerade ausgewählte Zeile des DataSource. Fängt mit 0 an. Wert -1 bedeutet keinen Auswahl.

Value

Wert der Properties.KeyFieldNames der gerade ausgewählten Zeile des DataSource entspricht.

Text

Wert, die im Edit steht. Entspricht Properties.ListFieldNames + Properties.ListFieldIndex der gerade ausgewählte Zeile des DataSource.

Properties.ListSource

DataSource mit Daten zur Anzeige im DropDown-Fenster und für die Incremental-Search.

Properties.ListFieldNames

Namen der Felder. Deren Werte im DropDown-Fenster sichtbar sind. Von links nach rechts, mit Semicolon getrennt.

Properties.ListFieldIndex

Index des Feldes, das zur Incremental-Search genutzt wird.
Default ist 0 was dem ersten sichtbaren Feld entspricht.

Properties.KeyFieldNames

Namen der Felder, deren Werte als Value geliefert werden oder selektiert sind.
Wenn DataField und DataSource gesetzt sind, hat KeyFieldNames nur ein Feld , mit dem gleichen Daten-Typ wie DataField.

Properties.DropDownWidth

Gesamt-Breite des DropDown-Fensters.

Properties.ListOptions.HasHeader

Zeile mit Beschriftungen der Felder anzeigen.
Default ist True.

Properties.ListOptions.GridLines

Art der Anzeige der Linien zwischen den Daten:
Wert 0 zeigt beide (vertikale und horizontale) Linien an. Default.Wert 1 zeigt keine Linien an.Wert 2 zeigt nur vertikale Linien an.Wert 3 zeigt nur horizontale Linien an.

Properties.ListColumns

Collection von Spalten der DropDown-Fenster. Erst anpassbar nach der Zuweisung von Properties.ListFieldNames.
Zur Arbeit mit Collection dient die Funktion CollItem, dessen Index mit 1 anfängt.ListColumn hat Eigenschaften wie Width, Caption usw.

Verwendung

  • TBeEditCombo auf eine F12-Maske platzieren, wenn möglich DataField und DataSource zuweisen oder ohne Einbindung einer Tabelle nutzen
  • Properies.ListSource zuweisen. (DataSource mit Daten für DropDown-Fenster)
  • Im F12-Designer befindet sich die Komponente unter der Palette "Combos"
  • Es kann die Breite jeder Spalte / Feld mit der Funktion CollItem gesetzt werden, siehe Beispiel.

Beispiel

CODE
|
   oForm, BeBitBtn1, beEditCombo1, lbl_beEditCombo1
   , oDataSource, oMemTable, aColumn
|

//******************************************************************************
//
//******************************************************************************
function BeBitBtn1Click( Sender )
  | vVal, sText, nIndex |
  nIndex := beEditCombo1.ItemIndex,
  if Empty(beEditCombo1.Value) then
    ShowMessage('Bitte wählen Sie einen Kontakt aus. (' + Str(nIndex) + ')'),
  else
    vVal  := beEditCombo1.Value, // Telefon
    sText := beEditCombo1.Text,  // Name
    ShowMessage(sText + ' (' + Str(nIndex) + ')' + CrLf + 'Rufen Sie die Nummer an: ' + vVal),
  endif,
end,

//##############################################################################
//##############################################################################
// Funktionen
//##############################################################################
//##############################################################################

//******************************************************************************
// MemTable erstellen
//******************************************************************************
function CreateMemTable(aFields)
  | oMem, nArrLen, i |
  nArrLen := ALen(aFields),
  oMem := CreateObject('TBeMemTable', 'LookupTable'), // Name der TBeMemTable ist pflichtlich

  // Felder hinzufügen:
  for i := 1 to nArrLen do
     oMem.CbAddField(aFields[i, 1], aFields[i, 2], aFields[i, 3]),
  end,

  Result := oMem,
end,

//******************************************************************************
// MemTable mit Datensätze füllen
//******************************************************************************
function FillMemTable(oMem)
  | aContacts, i, nArrLen |

  aContacts := {
                {'Max Mustermann', '0123456789', 'Straße 1, 12345 München'},
                {'Erika Mustermann', '0123456789', 'Straße 1, 12345 München'},
                {'John Wayne', '0987656789', 'Straße 5, 54321 Hamburg'},
                {'Horst Hansen', '6234858', 'Straße 11, 20945 Stuttgart'},
                {'Herbert Huber', '016789', 'Straße 6, 11145 Berlin'}
                },

  nArrLen := ALen(aContacts),

  for i := 1 to nArrLen do
     oMem.CbAppend(),
     oMem:NAME    := aContacts[i, 1],
     oMem:TELEFON := aContacts[i, 2],
     oMem:ADRESSE := aContacts[i, 3],
     oMem.CbPost(),
  end,
  oMem.CbOrderBy('Name'),
end,

//******************************************************************************
// Initialisierung der MemTable
//******************************************************************************
function Init()
  oMemTable := CreateMemTable({
                               {'Name',    ftString, 30},
                               {'Telefon', ftString, 12},
                               {'Adresse', ftString, 50}
                               }),

  oMemTable.Active             := true,
  oDataSource                  := CreateObject('TDataSourceEx'),
  oDataSource.DataSet          := oMemTable,

  FillMemTable(oMemTable),
end,

startseq
   oForm          := CreateObject('TFormEx'),
   oForm.OrigCapt := 'TbeEditCombo im Codeblock',
   oForm.Position := POSCREENCENTER,
   oForm.Width    := 400,
   oForm.Height   := 180,

   BeBitBtn1         := CreateObject("TBeBitBtn", "BeBitBtn1", oForm, oForm),
   BeBitBtn1.Caption := 'Aktion',
   BeBitBtn1.Left    := 150,
   BeBitBtn1.Top     := 60,
   AssignEvent(BeBitBtn1, 'OnClick', 'BeBitBtn1Click'),

   beEditCombo1      := CreateObject("TbeEditCombo", "beEditCombo1", oForm, oForm),
   beEditCombo1.Left := 150,
   beEditCombo1.Top  := 30,

   lbl_beEditCombo1         := CreateObject("TBeLabel", "lbl_beEditCombo1", oForm, oForm),
   lbl_beEditCombo1.Caption := 'Kontakt',
   lbl_beEditCombo1.Left    := 75,
   lbl_beEditCombo1.Top     := 35,

   Init(),

   beEditCombo1.Properties.ListSource     := oDataSource,
   beEditCombo1.Properties.ListFieldNames := 'Telefon;Name;Adresse',
   beEditCombo1.Properties.ListFieldIndex := 1,          // Name - 0 Indexed von ersten Sichtbaren Feld (Properties.ListFieldNames)
   beEditCombo1.Properties.KeyFieldNames  := 'Telefon',  // beEditCombo1.Value
   beEditCombo1.Properties.DropDownWidth  := 400,        // gesamt Breite

   beEditCombo1.Properties.ListOptions.ShowHeader := false,
   beEditCombo1.Properties.ListOptions.GridLines  := 1, // 0 = beide, 1 = keine, 2 = verikale, 3 = horizontale

   // Anzeige der Spalten steuern
   aColumn := CollItem(beEditCombo1.Properties.ListColumns, 1), // Telefon
   aColumn.Width := 80,

   aColumn := CollItem(beEditCombo1.Properties.ListColumns, 2), // Name
   aColumn.Width := 120,

   aColumn := CollItem(beEditCombo1.Properties.ListColumns, 3), // Adresse
   aColumn.Width := 200,

   ShowModal(oForm),
onerror
   DestroyObject(oForm),
   writeln(Str(GetErrorLine()) + ': ' + GetErrorText(GetErrorObj())),
stopseq,
JavaScript errors detected

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

If this problem persists, please contact our support.