Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Eingaben in Stringgrid begrenzen

  Alt 29. Nov 2005, 18:24
Hallo Hansa,

Zitat von Hansa:
Wenn das nämlich mit einer Zeile in reinem Delphi zu erledigen ist dann brauche ich keine WinApi Sachen.
du hast eine "reine, einzeilige" Lösung? Dann schäme ich mich, dass ich die nicht kenne.

Aber auch mein Lösungsansatz ist "einzeilig" und darüberhinaus halte ich ihn für professionell. In meinem Beitrag sieht er vielleicht etwas umfangreicher aus, aber nur, weil ich dir auch noch ein Konzept mit an die Hand geben wollte, nach dem du für jede Spalte deines Grids eine definierte maximale Eingabelänge benutzen kannst.

Wenn dein Grid in den Edit-Modus geht, dann wird ein Edit-Control vor der aktuellen Zelle schwebend sichtbar gemacht (Inplace-Editor). Ist der Edit-Vorgang abgeschlossen, dann wird der Inplace-Editor wieder unsichtbar gemacht. Wenn das Grid den Text für den Inplace-Editor anfordert, dann klinke ich mich in das Ereignis ein und setze die maximale Eingabelänge entsprechend deinen Vorgaben in dem Array ColumnMaxLength. Prinzipiell machst du das gleiche, wenn du bei einer TEdit-Komponente die Eigenschaft MaxLength setzt. Der Vorteil gegenüber dem durchaus kreativen Ansatz von Lannes ist, dass der Benutzer deines Programms gar nicht erst zuviele Zeichen eingeben kann.

Zitat von Hansa:
Außerdem verbiegst Du noch das Standard-StringGrid und dadurch wären meine Forms allesamt unsicher.
Ich verbiege da nichts, ich besorge mir nur ein Zugriffsrecht auf das Handle des Inplace-Editors, damit ich dessen "MaxLength" setzen kann.

Zitat von Hansa:
An zwei Stellen mußte diese Funktionalität eingebaut werden und jetzt reagieren zig Stringgrids gleich.
Das ist fast unglaublich. Hast du denn die Ereignisbehandlungsroutine an alle deine StringGrids geheftet? Kannst du tun, aber dann musst du auch dafür sorgen, dass stets plausible Werte für "MaxLength" bereit stehen. Mein Array hält ja nur die Werte für ein einziges Grid vor.

Was SKU bedeutet, das willst du mir nicht beibringen? Auch bei den Emoticons habe ich oft keine passende Assoziation.

Leicht betrübte Grüße vom marabu
  Mit Zitat antworten Zitat