TBeSearchEdit
TBeSearchEdit
Klasse für Suchtext-Eingaben mit verzögerter Auslösung der Suche.
Eigenschaften
Eigenschaft | Beschreibung |
---|---|
CharCase:N | (default) ecNormal = Eingabe wird normal angezeigt |
DelayChangeInterval:N | Zeit in Millisekunden, nach deren Ablauf die Suche gestartet wird, wenn `ssoSearchOnTimer' true ist. |
ssoSearchOnBtnClick:L | (default) true = Suche startet bei Klick auf das Lupen-Symbol |
ssoSearchOnReturn:L | (default) true = Suche startet nach drücken von [Enter] |
ssoSearchOnTimer:L | (default) true = Suche startet nach der durch 'DelayChangeInterval' bestimmten Zeit |
ShowButton:L | (default) true = Es wird ein kleines Lupensymbol am rechten Rand des Controls angezeigt |
TextHint:C | Hinweis im Suchfeld (z.B: "Suche...", etc.) |
TextHintFont:C | Die Schrift des Hinweises |
TextHintWhileFocused:L | Gibt an, ob der Hinweis beim Fokussieren des Controls bestehen bleibt. |
SearchButtonStyle:N | Gibt an, ob die Suche den Button ein- und ausschaltbar macht. bsbsDefault = der Button bleibt gleich |
SearchMode:N | Gibt an, in welchem Modus sich der Edit findet. Kann nur gesetzt werden, wenn SearchButtonStyle = bsbsToggle. bsmSearch = Suchmodus |
Aktive Eigenschaften (Methoden)
Eigenschaft | Beschreibung |
---|---|
OnSearchExecute | Führt die zugewiesene Funktion aus, wenn die Suche (z.B. durch Tastendruck) gestartet wird. |
OnDropDown | Führt die zugewiesene Funktion aus, wenn die DropDown-Leiste geöffnet wird. (z.B. mit [Alt] + [ArrowDown]) |
OnBtnClick | Führt die zugewiesene Funktion aus, wenn das Lupensymbol (falls vorhanden) angeklickt wird. |
Beispiel
//******************************************************************************
// Beschreibung: Demo der Klasse TBeSearchEdit
//******************************************************************************
| oForm, oSearch, oDataSource, oMainGrid, oMemTable |
//##############################################################################
//##############################################################################
// Events
//##############################################################################
//##############################################################################
//******************************************************************************
// Bei Suche
//******************************************************************************
function oSearchExecute( Sender )
if (Sender.Text <> '') then
if Sender.SearchMode = bsmFilter then
oMemTable.Filter := "Upper('" + Sender.Text +
"') $ Upper(NAME) OR Upper('" + Sender.Text +
"') $ Upper(ADRESSE)",
oMemTable.Filtered := true,
else
Meld('Such-Modus ist bei Mem-Tables nicht unterstützt!'),
Sender.SearchMode := bsmFilter,
oSearchExecute(Sender),
endif,
else
oMemTable.Filter := '',
oMemTable.Filtered := false,
endif,
oMemTable.OrderBy := 'NAME',
end,
//##############################################################################
//##############################################################################
// Funktionen
//##############################################################################
//##############################################################################
//******************************************************************************
// MemTable erstellen
//******************************************************************************
function CreateMemTable(aFields)
| oMem, nArrLen, nC |
nC := 1,
nArrLen := ALen(aFields),
oMem := CreateObject('TMemCalcTable'),
// Felder hinzufügen:
while nC <= nArrLen do
AddMemField(oMem, aFields[nC, 1], aFields[nC, 2],
aFields[nC, 3], aFields[nC, 4]),
nC++,
end,
Result := oMem,
end,
//******************************************************************************
// MemTable mit Datensätze füllen
//******************************************************************************
function FillMemTable(oMem)
| aContacts, nC, 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),
nC := 1,
while nC <= nArrLen do
MyAppend(oMem),
oMem:NAME := aContacts[nC, 1],
oMem:TELEFON := aContacts[nC, 2],
oMem:ADRESSE := aContacts[nC, 3],
MyPost(oMem),
nC++,
end,
oMem.OrderBy := 'NAME',
end,
//******************************************************************************
// Initialisierung der MemTable
//******************************************************************************
function Init()
oMemTable := CreateMemTable({
{'Name', 'C', 30, 0},
{'Telefon', 'C', 12, 0},
{'Adresse', 'C', 25, 0}
}),
oMainGrid.DataSource := oDataSource,
oMemTable.Active := true,
oDataSource.DataSet := oMemTable,
oMainGrid.ReadWriteProps := 0,
oMainGrid.RegisterDataset := oMemTable,
FillMemTable(oMemTable),
DbGoTop(oMemTable),
end,
//##############################################################################
//##############################################################################
// Initialisierung
//##############################################################################
//##############################################################################
oForm := CreateObject('TFormEx'),
oSearch := CreateObject('TBeSearchEdit',, oForm, oForm),
oMainGrid := CreateObject('TBeAltGrid',, oForm, oForm),
oDataSource := CreateObject('TDataSourceEx',, oForm, oForm),
// oFrom
oForm.OrigCapt := 'TBeSearchEdit-Demo',
oForm.Font.Name := 'Segoe UI',
oForm.Position := poMainFormCenter,
oForm.Width := 480,
// oMainGrid
oMainGrid.Align := alClient,
oMainGrid.AlignWithMargins := true,
// oSearch
oSearch.Align := alTop,
oSearch.AlignWithMargins := true,
oSearch.TextHintProperties.TextHint := 'Suchtext tippen -> Suche wird ausgelöst. ' +
'ESC löscht den aktuellen Suchtext.',
oSearch.SearchButtonStyle := 1,
AssignEvent(oSearch, 'OnSearchExecute', 'oSearchExecute'),
Init(),
ShowModal(oForm),