Ich habe (in D2010) ein TDrawGrid auf meinem Formular. Im Umgang mit meinem OnDrawCell, OnSetEditText, OnSetEditText etc alls gfine dort.
Wenn Sie jedoch in eine Zelle gehen, die Text enthält, markieren Sie den gesamten Text und geben dann ein zu ersetzendes Zeichen ein. Jetzt wird das OnSetEditText-Ereignis zweimal hintereinander von einem Tastendruck ausgelöst, zuerst mit einer leeren Zeichenfolge, dann wieder mit einer Zeichenfolge, die das eingegebene Zeichen enthält. Ist dies korrekt oder ein Fehler? Ich hätte erwartet, dass das Ereignis nur einmal mit der Zeichenfolge ausgelöst wird, die mein einzelnes eingegebenes Zeichen enthält.
Ich verwende OnSetEdit Text, um andere Klasseneigenschaften zu setzen, die Sachen wie Validierung tut, so dass, wenn die oben genannte Situation meinen anderen Code verursacht, um zu betrachten, vorübergehend meine Klasseneigenschaften ungültig zu sein, bevor sofort wieder auf gültig auf die 2.
Da wir gerade beim Thema Gitter sind, möchte ich euch um hilfreiche Tipps für die folgenden Dinge bitten. Ich bin ziemlich neu in deplhi von c# (ich gehe den anderen Weg!), aber Im finden die Dokumente ziemlich dünn auf dem Boden, und bin immer überraschend begrenzte Ergebnisse googeln für Dinge, so dass Ihre Hilfe wirklich geschätzt wird.
1) Benutzerdefinierte Inplace-Editoren für TDrawGrid - alle Tipps oder gute Links geschätzt! 2) Für custome Inplace-Editoren, bin ich besser mit TDrawGrid oder absteigend meine eigene Kontrolle von TCustomGrid und gehen von dort? 3) TCustomGrid. Ich komme hier nicht weiter... Wenn ich eine neue Komponente erstelle und von TCustomGrid absteige, erhalte ich nur einen "abstrakten Fehler", wenn ich es in mein Formular einfüge. Daher weitere Experimente ist sehr viel canclled - ein Rat auf gerade sogar mit TCustomGrid begonnen geschätzt!
Mein Plan ist es, zuerst Comboboxen (im virtuellen Modus) als Zell-Editoren zu arbeiten. Das ist ein Standard-VCL-Steuerelement. Danach habe ich vor, mein eigenes Steuerelement auf der Grundlage einer virtuellen Combobox zu erstellen, aber mit einer Suche Sache an der Spitze, um die Liste nach unten zu filtern (ein bisschen wie in der Delphi IDE Tool-Palette), und verwenden Sie diese Komponente als inlace-Editor, wenn möglich. Im ein ziemlich weit weg, dass im Moment! Vielen Dank an alle
Bearbeiten: Remy - Hier sind meine beiden Aufrufstapel von Schnabelpunkt in OnSetEditText. Links ist der erste Aufruf mit der leeren Zeichenkette, rechts der zweite Aufruf mit dem korrekten Zeichenkettenwert. Die 5 abgeschnittenen Zeilen in der Mitte sind alle Verweise auf comctl32.dll in beiden. Ty.