AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Punkte in Edit.Text fest vorgeben

Ein Thema von paulus11 · begonnen am 7. Mär 2010 · letzter Beitrag vom 8. Mär 2010
Antwort Antwort
paulus11

Registriert seit: 20. Feb 2010
8 Beiträge
 
#1

Punkte in Edit.Text fest vorgeben

  Alt 7. Mär 2010, 18:07
Guten Abend,

ich wollte euch mal fragen, ob es möglich ist Punkte in einer Edit.Text-Komponente vorzugeben bzw. fest zu integrieren.
Das heißt ich öffne das Programm und in die Text Edit kann ich dann, in meinen Fall, das Datum eingeben, wobei das dann diesem Format entsprechen sollte: "dd.mm.yyyy" ... und die Punkte sollen schon fest vorgegeben sein und nicht verschwinden oder sonstiges.
Hoffe es gibt eine einfache Antwort.

Lieben Dank an alle die eine Antwort parat haben!

Lg
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Punkte in Edit.Text fest vorgeben

  Alt 7. Mär 2010, 18:10
Die einfachste Art ist ein TMaskEdit zu verwenden. Dort kann man so etwas einstellen.
Eine andere Möglichkeit der Datumseingabe ist die Verwendung eines TDateTimePickers (oder so ähnlich)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
paulus11

Registriert seit: 20. Feb 2010
8 Beiträge
 
#3

Re: Punkte in Edit.Text fest vorgeben

  Alt 7. Mär 2010, 20:43
Cool, danke funktioniert einwandfrei.

Jetzt noch eine Frage^^...ich lasse die Daten (Plural von Datum) in eine Spalte einer StringGrid schreiben.
Wenn ich dann auf einen Button klicke, kann ich die gesamte StringGrid bearbeiten.
Da der Benutzer nicht immer das ganze Datum mit Punkten eingeben soll, wollte ich nun fragen, ob es möglich ist, dieses Format (dd.mm.yyyy) mit den festen Punkten auch auf eine ganze StringGrid-Spalte zu übertragen?
Hab leider keine Option gefunden wo man das einstellen kann.:/

Nochmal danke für die schnelle Antwort.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Punkte in Edit.Text fest vorgeben

  Alt 7. Mär 2010, 22:40
Hallo,

ich vermute, du hast "goEditing" auf "true".

Delphi-Quellcode:
// Ereignis: OnGetEditMask
procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Integer;
  var Value: string);
begin
   with Sender as TStringGrid do
   begin
     if ACol = 1 then // in diesem Beispiel: Index 1 = Spalte 2
       Value := '!90.90.9900;1;_';
   end;
end;
Beim manuellen Editieren im StringGrid wird die Maske verwendet. In dem Fall für die 2. Spalte.

Übrigens, denke daran, die Eingaben zu prüfen. Denn die Maske garantiert nicht, dass ein gültiges Datum eingegeben wird. Auch "49.13.8273" wäre zulässig, jedoch kein gültiges Datum.

Grüße, Matze
  Mit Zitat antworten Zitat
paulus11

Registriert seit: 20. Feb 2010
8 Beiträge
 
#5

Re: Punkte in Edit.Text fest vorgeben

  Alt 8. Mär 2010, 08:48
Hey, viele Dank das du mir hilfst.
Ich habe jetzt aber ein Problem das richtig einzubinden.
Liegt wahrscheinlich an meinen Schul-Delphi.-.-

Also: Wie kann ich diese procedure in eine "Button-procedure" einbauen...bzw. gleich direkt in die procedure für den Button einbinden.

Tut mir leid für die dumme Frage..für euch ist das sicher ein Kinderspiel.

Thx für jede Antwort!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Punkte in Edit.Text fest vorgeben

  Alt 8. Mär 2010, 12:15
Vielleicht habe ich dich auch falsch verstanden, aber ein Button ist hier überflüssig.

Wenn du bei StringGrid "Options.goEditing" auf "true" hast (davon ging ich aus), dann kannst du den StringGrid-Inhalt direkt im StringGrid ändern ohne zusätzlichen Button.
Und mein Code baut dir die Datumsmaske in das StringGrid ein, wenn du dieses direkt editierst.
  Mit Zitat antworten Zitat
paulus11

Registriert seit: 20. Feb 2010
8 Beiträge
 
#7

Re: Punkte in Edit.Text fest vorgeben

  Alt 8. Mär 2010, 17:05
Ah ok, gut ich hab deine procedure ganz einfach ins Programm miteingebunden (seperat), nur komischerweise fundktioniert es nicht...also ich kann die StringGrid bearbeiten, aber ohne vorgegebene "Maske".
Muss ich noch irgendwas konkretes beachten?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Punkte in Edit.Text fest vorgeben

  Alt 8. Mär 2010, 17:10
Ja du musst dir die Ereignis-Prozedur von Delphi generieren lassen. Das geht so:

- Markiere das StringGrid (einmal drauf klicken)
- Wechsel zum Objektinspektor auf den Reiter "Ereignisse"
- Suche den Eintrag "OnGetEditMask" und klicke dort doppelt
- Delphi erstellt nun die Prozedur und dort fügst zu die fehlenden Zeilen meines Codes ein.

Und wie geschrieben gilt mein Code für die 2. StringGrid-Spalte. Für andere Spalten musst du "ACol" anpassen.
  Mit Zitat antworten Zitat
paulus11

Registriert seit: 20. Feb 2010
8 Beiträge
 
#9

Re: Punkte in Edit.Text fest vorgeben

  Alt 8. Mär 2010, 17:56
Boa, cool es funktioniert einwandfrei.
Vielen Dank, du hast meinen Horizont echt erweitern können.
Kannst du mir vllt. noch sagen was Delphi in deiner Procedure genau macht, weil ich kenn aus der Schule diese Art von "proceduren" nicht und weiß nicht genau was man dort wie schreiben kann/muss.

Delphi-Quellcode:
with Sender as TStringGrid do
   begin
     if ACol = 1 then // in diesem Beispiel: Index 1 = Spalte 2
       Value := '!90.90.9900;1;_';
   end;
Ich danke dir sehr für deine gedult, gibt nicht viele die die haben.

DANKE
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Punkte in Edit.Text fest vorgeben

  Alt 8. Mär 2010, 18:57
Hallo,

also im Prozedurkopf stehen Parameter. Das kennst du sicher von Funktionen.
Im Parameter "Sender" steht die Komponente, die die Prozedur aufruft (hier: das StringGrid). In "ACol" und "ARow" stehen die Indizes der Zelle, die gerade vom Anwender bearbeitet wird (Spalten- und Zeilenindex). "Value" ist ein Parameter, der seinen Wert nach außen weitergibt, denn vor "Value" steht "var" (Call-By-Reference und nicht wie sonst Call-By-Value, falls du da nachschlagen möchtest).
"Value" wird dem StringGrid als Maske zurück gegeben.
Und genau diese Maske setzen wir in der Prozedur beim Editieren der 2. Spalte (ACol = 1).

Das mal ganz grob. Genaueres können dir sicher andere sagen, falls du weitere Informationen dazu haben möchtest. Was Delphi intern genau wohin weitergibt o.ä. weiß ich auch nicht.

Grüße, Matze
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 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