![]() |
TDBGrid: Zu eingegebenem Buchstaben springen?
Guten Tag
ich habe einen sortierten TDBGrid. wenn ich einen buchstaben auf der tastatur drücke (in keinem edit oder so), sollte der erste datensatz, der mit diesem buchstaben beginnt, markiert werden. wenn ich zwei buchstaben hintereinander schnell drücke, sollte der datensatz markiert werden, der mit diesen zwei buchstaben beginnt. und das sollte mit etwa bis 10 buchstaben gehen. Datenbank: Paradox, sortiert mit einem index TTable, TDataSource ich hoffe, es gibt eine lösung |
Re: TDBGrid: Zu eingegebenem Buchstaben springen?
Ein paar Schlüsselbefehle:
[DH]Locate[DH/], [DH]Timer[/DH]. Wichtig bei Locate ist das Attribut loPartialKey... Hier mal ein Code, der so bei mir funktioniert hat, über die Tabelle employee.db, die als Bsp. bei Delphi beiliegt.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, Grids, DBGrids, DBTables, ExtCtrls, StdCtrls; type TForm1 = class(TForm) DBGrid1: TDBGrid; DataSource1: TDataSource; timer1: TTimer; label1: TLabel; Query1: TQuery; procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure timer1Timer(Sender: TObject); private FSearchFor: string; procedure SetSearchFor(const Value: string); { Private-Deklarationen } public { Public-Deklarationen } property SearchFor : string read FSearchFor write SetSearchFor ; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin timer1.enabled := false ; SearchFor := SearchFor + key ; Query1.Locate('lastname',SearchFor,[loCaseInsensitive,loPartialKey]) ; Timer1.enabled := true ; end; procedure TForm1.FormCreate(Sender: TObject); begin SearchFor := '' ; end; procedure TForm1.timer1Timer(Sender: TObject); begin SearchFor := '' ; timer1.enabled := false ; end; procedure TForm1.SetSearchFor(const Value: string); begin FSearchFor := Value; label1.caption := SearchFor ; end; end. |
Re: TDBGrid: Zu eingegebenem Buchstaben springen?
hallo Jelly
funktioniert wunderbar, vielen dank! :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 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