![]() |
Re: AutoComplete für TMemo, TRichEdit uvm.
Zitat:
Delphi-Quellcode:
Procedure TAutoComplete.EditChange(Sender: TObject);
Var B: Boolean; Begin {B := _IsKeyPressed; _IsKeyPressed := False; If B Then ShowListView Else Hide; If Assigned(_OnEditChange) Then _OnEditChange(Sender);} End; |
Re: AutoComplete für TMemo, TRichEdit uvm.
Ups, was hab ich denn da vergessen :shock:
stümmt, jetzt passiert des doch :wall: OK, heißt also es gibt Probleme mit der Übergabe von Sonderzeichen ... ma gucken Ach ja, hatte alles in den Edit-Ereignisprozeduren auskommentiert und igendwie funktioniert [Entf] und sowas wie Kopieren/Auschneiden/Einfügen beim Edit dennoch nicht ... hab also noch keine Ahnung warum :? [edit] in #17 die Fehler bezüglich der Auskommentierung behoben |
Re: AutoComplete für TMemo, TRichEdit uvm.
Zitat:
Beim TMemo mußt Du noch das Popup-Menu bereinigen oder die ActionList aus meinem Testprogramm wieder zufügen. Ich bin dann mal weg... |
Re: AutoComplete für TMemo, TRichEdit uvm.
oder irgendwas vom OLE einbinden ... mir fällt einfach nur nimmer ein was das war.
So, das Problem mit den äöüß... liegt nicht an der Zeichenübergabe an das Edit, sonder vermutlich irgendwo an der ListBox-Selektierung ... muß ich nur noch rausfinden was da schiefgeht |
Re: AutoComplete für TMemo, TRichEdit uvm.
Liste der Anhänge anzeigen (Anzahl: 3)
Zu dem Memo ... ich hab langsam die Beführchtung,
es reicht, wenn man nur die ActionList auf's Formular zieht. :gruebel: Bei Memo1 hab ich es mal (so wie bei dir) ins Popupmenü eingebunden, aber in Memo2 nicht und dennoch geht dieses dort jetzt auch. :shock: Du hast 'nen Fehler beim Befüllen der ListBox ... es fehlen viele Wörter. (siehe Anhang > Unbenannt.png und Unbenannt2.png) "sch" = 4464 wörter, aber bei dir sind es nur 5 "fra" = 655 wörter und bei dir sind's wieder nur 5 Gut, ich laß auch nicht unendlich viele Wörter in der ListView zu, da die Delphi-Version leider ein "klitzekleines" Geschwindigkeitsproblem hat, wenn sie zu voll wird. Zitat:
Owner = Besitzer des Komponente und das kann alles (jeder nachkomme von TComponent) und nichts (nil) sein. es ist nur derjenige, welcher sich um die Freigabe der Komponente kümmert (wenn er selber freigegeben wird), falls niemand anderes die Komponente freigibt, welches eigentlich auch der Programmierer machen könnte:
Delphi-Quellcode:
PS: drum hab ich als Owner auch die Edit-Komponente gewählt, da die Funktion an diese Komponente gebunden ist.
procedure TForm1.FormDestroy(Sender: TObject);
begin AutoComplete1.Free; AutoComplete2.Free; AutoComplete3.Free; end; Parent aber ist die Komponente, auf welcher deine Komponente dargestellt wird ... und wenn da nichts angegeben ist, wo soll die ListView dann hin? (sozusagen ohne Leinwand um sich zu Zeichnen) hab jetzt auch mal mit 'ner Version einer "unsichtbaren" ListView gespielt (ListView ist zwar noch vorhanden, da über sie die Eingabe läuft, aber so klein, daß man sie nicht sieht) die Eingabe wurde verbessert und einige Fehler ausgemerzt
[add] Wenn du von statt TEdit TCustomEdit entgegennimmst, werden mehr Komponenten unterstützt. TEdit macht nur einige Methoden sichtbar, welche es in TCustomEdit noch nicht sind und falls du dann innerhalb deiner Komponente Probleme hast auf bestimmte Methoden zuzugreifen, dann einfach nach TEdit casten. [edit]merk grad, hab mir irgendwo 'nen Fehler bei der Positionierung der ListView eingebaut ... muß ich mal nachsehn wo der sich versteckt ![]() ![]() |
Re: AutoComplete für TMemo, TRichEdit uvm.
Zitat:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin AutoComplete1 := TAutoComplete.Create(self,'worte.txt',Memo1); AutoComplete2 := TAutoComplete.Create(Form1,'plz.txt',LabeledEdit1); AutoComplete3 := TAutoComplete.Create(Form1,'words4.txt',RichEdit1); end; Zitat:
Zitat:
Der Unterschied Owner <> Parent. Früher dachte ich, die Kinder gehören den Eltern :wall: Zitat:
Zitat:
|
Re: AutoComplete für TMemo, TRichEdit uvm.
Zitat:
OK, wenn die Datei kleiner ist, dann wäre das ein guter Grund :lol: Zitat:
Zitat:
Parent = Arbeitsplatz Owner = Mörder oder so Zitat:
Zitat:
Zitat:
und was die Auswahl betrifft > Cursor-Tasten (hoch und runter), halt alles wie in der ListView und Auswählen mit Enter ... am Ende der begrenzen Liste (500 Einträge in der Demo) mit Enter die Liste erweitern (halt auch wie in der ListView)) |
Re: AutoComplete für TMemo, TRichEdit uvm.
das mit'm automatischen Positionieren funktioniert jetzt erstmal (auch wenn es mir vom Code her noch nicht gefällt)
und dann gab's noch einige andere Änderungen ... aber k.A. was ich gestern noch alles verbrockt hab :oops: ![]() ![]() |
Re: AutoComplete für TMemo, TRichEdit uvm.
Hallo himitsu,
aus einem anderen Thread heraus hattest du mich auf diesen hier aufmerksam gemacht. Die Idee finde ich sehr gut und wollte das AutoComplete nun auch in mein Projekt übernehmen. Ich kann auf die Methoden der AutoComplete-Unit zugreifen, aber es wird anscheinend nicht auf mein Edit angewendet. Meine vllt. dumme Frage: :oops: Wie bekomme ich das "Edit-Hack" auf mein Edit "aktiviert"? Schon mal Danke für deine Mühen! Edit: ähhh, sorry, nachfolgend noch meine Bemühungen, damit du nicht orakeln musst...
Delphi-Quellcode:
interface
uses ...AutoComplete; ... private AutoComplete1: TAutoComplete; ... procedure TSearchForm.FormCreate(Sender: TObject); var SL: TStringList; //fuer AutoComplete begin AutoComplete1 := TAutoComplete.Create(Edit1, 'Search_Words.txt'); SL := TStringList.Create; SL.LoadFromFile('Search_Words.txt'); ... procedure TSearchForm.Listbox1DblClick(Sender: TObject); var Edit1text: string; begin ... AutoComplete1.SaveWordsToString(Edit1text); end; ... procedure TSearchForm.FormDestroy(Sender: TObject); begin AutoComplete1.SaveWordsToFile('Search_Word.txt'); AutoComplete1.Free; end; |
Re: AutoComplete für TMemo, TRichEdit uvm.
Eigentlich sollte dieses schon ausreichen, da das diese Komponente beim TAutoComplete.Create mit dem Edit verbunden wird. :gruebel:
Nur die TStringList (SL) kannst du weglassen, da du die Wörterliste ja schon beim TAutoComplete.Create direkt angibst, aber es sollte dennoch gehn, auch wenn die Datei nochmal in einer unabhängigen Stringliste geladen wurde. Das Minimum wäre ja dieser Code und das ist soweit auch bei dir vorhanden.
Delphi-Quellcode:
{***** OnCreate *****}
AutoComplete1 := TAutoComplete.Create(Edit1, 'wordlist.txt'); {***** OnDestroy *****} //If AutoComplete1.WordsChanged Then // AutoComplete1.SaveWordsToFile('wordlist.txt'); AutoComplete1.Free; Änderst du eventuell nachträglich noch ein paar Events des Edits? OnKeyDown, OnKeyUp, OnKeyPress und OnChange des Edits/Memors wird ja von der Komponente überschrieben, da hierrüber auf Tastatureingaben reagiert wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 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