TbeEditCombo
TbeEditCombo
Basis-Lookup-Combo Klasse. Mit eine Möglichkeit mehrere Spalten anzuzeigen und Incremental-Search in beliebigen Spalten durchzuführen.
Eigenschaften
Eigenschaft | Beschreibung |
---|---|
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. |
Properties.KeyFieldNames | Namen der Felder, deren Werte als Value geliefert werden oder selektiert sind. |
Properties.DropDownWidth | Gesamt-Breite des DropDown-Fensters. |
Properties.ListOptions.HasHeader | Zeile mit Beschriftungen der Felder anzeigen. |
Properties.ListOptions.GridLines | Art der Anzeige der Linien zwischen den Daten: |
Properties.ListColumns | Collection von Spalten der DropDown-Fenster. Erst anpassbar nach der Zuweisung von Properties.ListFieldNames. |
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
|
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,