![]() |
Suchen in datensensitiven Controls
Folgende Unit zeigt, wie man über ein datensensitives Steuerelement
nach einem Feldinhalt in der darunter liegenden Datenmenge suchen kann. Mögliche datensensitives Steuerelemente (data-aware controls) sind: TDBGrid, TdxDBGrid (von Quantum Express) TDBEdit, TDBText oder TDBcombobox Wenn man ein TDBGrid oder TdxDBGrid übergibt, wird im selektierten Feld gesucht; gibt man ein TDBEdit, TDBText oder TDBcombobox an, ist das verknüpfte Feld die Grundlage für die Suche.
Delphi-Quellcode:
Die Anwendung ist ganz einfach:
unit UDBGridUtils;
interface {Unit dxDBGrid auskommentieren, falls Quantum Express nicht verwendet wird} uses DB, Controls, SysUtils, Dialogs, dbctrls, DBGrids, dxDBGrid; function SearchField(feld: TField):Boolean; function SearchDBControl(DBcontrol: Tcontrol):Boolean; implementation function SearchField(feld: TField):Boolean; var s: string; ds : TDataSet; options : TLocateOptions; begin Result := False; if Assigned(feld) then begin ds := feld.DataSet; if InputQuery(PssGetString(ID_FrmLnw_SearchField) + ' ' + feld.DisplayName, '', s) then begin // Wenn das letzte Zeichen ein * ist, // dann wird nur mit einem Teilschlüssel gesucht if (Length(s) >= 2) and (s[Length(s)]='*') then begin SetLength(s, Length(s)-1); // letztes Zeichen (das *) löschen options := [loPartialKey]; end else options := []; Result := ds.Locate(feld.FieldName, s, options); end; end; end; function SearchDBControl(DBcontrol: Tcontrol):Boolean; begin if DBcontrol is TDBEdit then Result := SearchField(TDBEdit(DBcontrol).Field) else if DBcontrol is TDBGrid then result := SearchField(TDBGrid(DBcontrol).SelectedField) else if DBcontrol is TdxDBGrid then result := SearchField(TdxDBGrid(DBcontrol).FocusedField) else if DBcontrol is TDBText then Result := SearchField(TDBText(DBcontrol).Field) else if DBcontrol is TDBComboBox then Result := SearchField(TDBComboBox(DBcontrol).Field) else if Assigned(DBcontrol) then raise Exception.Create('unsupported control: '+DBcontrol.ClassName) else Result := False; end; end.
Delphi-Quellcode:
Man kann nicht nur über das selektierte Feld eines Grids suchen, sondern auch ein TDBEdit als Ausgangspunkt für die Suche nehmen:
procedure Tform1.BtnSuchenClick(Sender:TObject);
begin if not SearchDBControl(DBGrid1) then ShowMessage('kein passender Datensatz gefunden !); end;
Delphi-Quellcode:
[edit=Chakotay1308]Source formatiert. Mfg, Chakotay1308[/edit]
procedure TAuftragForm.ActSearchExecute(Sender: TObject);
var c : TWinControl; begin c := Self.ActiveControl; // das aktuelle Steuerelement SearchDBControl(c); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz