AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [erledigt] Via Tastatur im Grid zu Datensatz springen
Thema durchsuchen
Ansicht
Themen-Optionen

[erledigt] Via Tastatur im Grid zu Datensatz springen

Ein Thema von Jumpy · begonnen am 29. Jun 2012 · letzter Beitrag vom 29. Jun 2012
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#1

[erledigt] Via Tastatur im Grid zu Datensatz springen

  Alt 29. Jun 2012, 11:34
Datenbank: Oracle • Version: 10g • Zugriff über: ADO+ODBC
Hallo,

ich hab ein DBGrid: Editing=false, RowSelect=true

Hat das DBGrid nun den Fokus, so möchte ich, wenn über die Tastatur etwas eingegeben wird, zu einem passenden Datensatz springen. Die Kollegen kennen das von einer Fremdsoftware und hätten das jetzt auch gern.

Gesucht werden soll dazu in der ersten Spalte (Name). Wird nun "P" eingegeben, so soll zum ersten Datensatz mit P gesprungen werden, werden schnell hintereinander mehrere Zeichen eingegeben, z.B. "Pet" wird dementsprechend zum ersten Datensatz mit "Pet", falls vorhanden gesprungen, ist PET... nich da dann PE... und wenn auch nicht da P...

Ich vermute ich muss ein OnKey benutzen und irgendwie auch einen Timer, um zwichen einer Taste und mehreren Tasten schnell hintereinander zu unterscheiden.

Nur wie genau, sollte ich das ab besten machen?
Und was mach ich dann wenn klar ist, dass ich z.B. nach 'Pet...' suchen muss? Locate braucht doch glaub ich ein komplettes Schlüsselfeld?



Edit: Wieso muss man 30 Sekunden warten, um einen neuen Beitrag zu erstellen, wenn der erste abgeleht wurde, weil man vergessen hat die Version einzutragen
Ralph

Geändert von Jumpy (29. Jun 2012 um 12:05 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Via Tastatur im Grid zu Datensatz springen

  Alt 29. Jun 2012, 12:03
Das schreiben hier hat scheinbar meine Gedanken geordnet. So funktionierts bisher:

Es braucht einen TTimer, nenne den KeyTimer.

Delphi-Quellcode:
//Globale private Variablen im Form:
KeyLock:Boolean;
KeyBuffer:String;

//Im OnCreate des Forms diese vorbelegen:
KeyLock:=false;
KeyBuffer:='';
KeyTimer.Enabled:=false;
KeyTimer.Interval:=250;

//Key-Press des Grids
procedure TMain.GridKeyPress(Sender: TObject; var Key: Char);
begin
  if not KeyLock then
    begin
    KeyTimer.Enabled:=false;
    KeyBuffer:=KeyBuffer+Key;
    KeyTimer.Enabled:=true;
    end;
end;

//Timer-Event:
procedure TMain.KeyTimerTimer(Sender: TObject);
begin
  KeyLock:=true;
  KeyTimer.Enabled:=false;
  while (KeyBuffer<>'') and not Quelle.Locate('Name',KeyBuffer,[loCaseInsensitive,loPartialKey]) do
    KeyBuffer:=Copy(KeyBuffer,1,Length(KeyBuffer)-1);
  KeyBuffer:='';
  KeyLock:=false;
end;
Wer Verbesserungsvorschläge hat oder andere Ideen, wie das gehen könnte, gerne her damit.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Via Tastatur im Grid zu Datensatz springen

  Alt 29. Jun 2012, 12:10
Wie wäre es wenn Du Dich in der TComboBox bedienst?
ersetz .Text durch einen String und Du hast eine Basisfunktionalität, wobei der Fokus und die Keys natürlich in der richtigen Komponente landen müssen.

vergiss es !

Gruß
K-H

Hat der rote Kasten Urlaub?
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (29. Jun 2012 um 12:13 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz