Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Zeichenanzahl bei Eingabe in DBGrid begrenzen (https://www.delphipraxis.net/130088-zeichenanzahl-bei-eingabe-dbgrid-begrenzen.html)

BlackGuest 3. Mär 2009 07:53


Zeichenanzahl bei Eingabe in DBGrid begrenzen
 
Wie kann ich die Zeichenanzahl bei der Eingabe von Daten in einem DBGrid begrenzen?

Das entsprechende Datenfeld ist ein String mit maximal 12 Zeichen. DBGrid.Columns[x].maxSize ist auf 12 gesetzt, MinSize=0.
Nun kann ich aber beliebig viele Zeichen eingeben. Alle nach dem 12. werden zwar beim Verlassen des Eingabefeldes abgeschnitten aber diese sollten eigentlich erst gar nicht eingegeben werden können.

Gruß
BlackGuest

Satty67 3. Mär 2009 09:34

Re: Zeichenanzahl bei Eingabe in DBGrid begrenzen
 
Als Stichwort fällt mir da nur "InplaceEditor" ein. Zuhause hab' ich Code, wie man an den rankommt (leider nicht hier bei der Arbeit).

Aber vielleicht reicht das ja schon um zu Suchen.

BlackGuest 3. Mär 2009 10:23

Re: Zeichenanzahl bei Eingabe in DBGrid begrenzen
 
Danke für die schnelle Antwort.
Viel habe ich allerdings nicht dazu gefunden. Wäre nett, wenn Du mir dabei etwas weiterhelfen könntest, wenn Du den Code vor dir hast.

Gruß
BlackGuest

Satty67 3. Mär 2009 10:49

Re: Zeichenanzahl bei Eingabe in DBGrid begrenzen
 
Auf die schnelle hab' ich hier folgendes gefunden:
Delphi-Quellcode:
type
  THackedStringGrid = class(TStringGrid);

// dann im onGetEditText Ereignis
THackedStringGrid(StringGrid).InplaceEditor.xxx
..oder halt statt StringGrid ein DBGrid. Wie weit das beim DBGrid funktioniert weis ich nicht, aber damit bekommt man auf die schnelle Zugriff auf den Editor und kann die Werte manipulieren.

Selber ausprobieren kann ich es dann aber erst heute Abend (hier ist kein Delphi, nur Internet ;) ), aber evtl. kommst Du schon so weiter.

€: Ok, also Zugang zum InplaceDitor gibt es so auch beim DBGrid. Nur kein passendes fertiges Ereignis, wo man am besten eingreift. OnKeyPress etc. hängt ein Zeichen hinterher. Da müsste man ein Ereignis abfangen, was jetzt mehr ist, was ich auf die schnelle korrekt kann.

Damit hatte ich es eben schnell im onKeyPress getestet:
Delphi-Quellcode:
  if Assigned(THackedDBGrid(DBGrid1).InplaceEditor) then
    Edit1.text := THackedDBGrid(DBGrid1).InplaceEditor.Text;

Reinhard Kern 3. Mär 2009 14:47

Re: Zeichenanzahl bei Eingabe in DBGrid begrenzen
 
Zitat:

Zitat von BlackGuest
Wie kann ich die Zeichenanzahl bei der Eingabe von Daten in einem DBGrid begrenzen?

Hallo,

das und Ähnliches habe ich bisher so gelöst, dass ich dem Grid-Kasten ein eigenes Editfeld vorlagere (so, dass der User das überhaupt nicht sieht), in dem ich formatieren kann wie ich will, z.B. wissenschaftliche Zahlenformate, Telefonnummern usw.

Gruss Reinhard

BlackGuest 5. Mär 2009 16:10

Re: Zeichenanzahl bei Eingabe in DBGrid begrenzen
 
Danke für eure Antworten.
Bin leider gerade mit etwas anderem eingespannt, so dass ich an dem Projekt erst einmal nicht weiterarbeiten kann.

@Reinhard
Die Idee find ich sehr gut. Werde das dann wohl auch so lösen. Scheint mir wirklich die einfachste und komfortabelste Lösung zu sein.

Gruß
BlackGuest


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 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