pluto hat geschrieben:Du kannst mit memo1.lines.text den Gesamten Text als String übergeben.
OK, das geht und somit wäre ich dann erst mal soweit:
Code: Alles auswählen
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
var
Textinhalt: String;
begin
Textinhalt:= memo1.lines.text;
Edit1.Visible:=true;
Edit1.Focused;
// und wie gehts weiter?
end;
Dein Problem ist Relativ einfach mit einer ListView zu lösen. Die kann verschiedene Spalten anzeigen. Jedoch dürfte es hier ein Problem mit der Menge an Daten geben. Probiere es mal einfach aus. Du müsstest dir eine eigene Lade Funktion schreiben. Leider bietet die ListView keine an. Besser wäre vermutlich eine VST(Virtuell String Tree). Gerade auch wenn es sich um viele Daten handelt. Eine ListBox sollte im Prinzip schon ausreichen:
Sorry, ListView hab ich zwar gefunden, aber absolut kein Plan davon... von VST mag ich Depperl erst gar nicht anfangen...
01) Du fängst das Event OnKeyPress ab von der ListBox
02) Sobald der User anfängt zu Tippen blendest du eine TEdit ein, was du vorher erstellst hast und einfach nur Visible auf False geschaltet hast. Diese muss beim Sichtbar machen in einer Ecke Positioniert werden z.b. in der Rechten unteren Ecke.
Soweit, sogut... das hab ich verstanden!
Hier habe ich aber Visible auf True belassen, wäre ja auch OK, einfach in TEdit1 rein klicken und Suchwort schreiben... die Vorgehensweise find ich schon mal gut!
3) Jetzt fügst du einfach beim Tippen alle Zeichen in das TEdit ein
Du meinst damit, wenn ich z.B. einen Namen "Schulze" suchen möchte, gebe ich im TEdit1 Schulze ein... (das steht dann für "alle Zeichen") ... ?!!
, Problem wird hier mit dem Focus sein. Am einfachsten ist wenn das TEdit einfach den Focus hat und bei jedem Eintippen eine "Sofort Suche" Startet wie z.b. bei einem Web Browser.
Ich hoffe du kannst mir so weit Folgen.
Ich GLAUBE, bis hier hin, kann ich es gerade noch so mit ja beantworten???!
- Den Focus setze ich doch wie oben getan, mit TEdit1.focused; ... oder?!?
Im TEdit kannst du dann bei onKeyPress eine Sofortige Suche Starten. Der Vorteil wäre: Du könntest nicht nur nach dem ersten Buchstaben suchen sondern auch nach einen beliebigen String. Du könntest auch eine ganze leiste einblenden. Für ein Telefonbuch würde sich das anbieten. Ich stelle mir das so ähnlich vor wie bei FireFox. Wenn du da Strg+F drückst. Ein Find Dialog würde ich an dieser stelle nicht nehmen.
Und da hört es auch leider schon auf bei mir!
Ich weiss nicht, wie ich die Eingabe von Edit1 auf das Memo1 (oder auch TListBox) Fenster reagieren lasse, d.h., daß quasi mir der Cursor zur Zeile im Memo1 hin springt oder mir das gesuchte Wort im Fenster invertiert da stellt...
Im Grunde müsste die Abfrage bei Edit1KeyPress in etwa lauten:
Wenn Inhalt von Edit1 = identisch mit Wort von Memo1 ist,
dann springe/ scrolle automatisch zu der Zeile im Memo1 Text und zeige sie dort an.
Viel mehr muss das Programm in einem Memo1 Fenster ja nicht machen, da ich dort ja sowieso copy and paste machen kann...
@shokwave:
Danke für den Hinweis, wusste nicht, daß es dort auch einpaar Examples gibt!
- Allerdings will ich es bei weiten nicht so kompliziert haben... das was ich will (Suchfunktion mit Buchstaben-Tastendruck bei Klick in das TList-Fenster...), bietet mir im Grunde ja schon die TListBox "serienmäßig"... leider fehlt mir bei der TListBox die Möglichkeit von copy and paste, die wiederum nur im Memo Fenster gegeben ist, dort es aber wiederum keine wie o.g. Suchfunktion gibt...)
Hätte nicht gedacht, daß es doch soooo schwierig ist... naja, noch gebe ich nicht auf und probier mal weiter mit meinen alten, hohl gewordenen Kopp...
