![]() |
Validedit-Komponente
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DP'ler,
wieder einmal stand ich vor dem Problem, das ich Benutzereingaben prüfen mußte und ein Mask-Edit nicht ausgereicht hat. Also hab ich mir eine kleine Komponente geschrieben. Sie ist abgeleitet vom normalen TEdit. Im Gegensatz dazu, hat sie 2. zusatzliche Events (onValidate und onValidateError), mithilfe deren ich Prüfungen und entsprechende Fehlerbehandlungen realisieren kann. Da ich sicher nicht der einzige bin, der immer wieder vor diesen Problemen steht, möchte ich euch die Komponente zur Verfügung stellen. Feedback jeglicher Art ist natürlich immer erwünscht :) *UPDATE 26.06.2006* Compiler-Schalter hinzugefügt, damit die Komponente auch unter D3 installiert werden kann. *UPDATE 27.06.2006* - Sender als Parameter für onValidate und onValidateError - Rückgabewert für onValidate Integer (für unterschiedliche Fehler) 0 bedeutet Kein Fehler, Rückgabewert ungleich 0 Fehler. - Zusätzliche Label-Komponente integeriert für automatische Caption * mit Positionsangabe (über dem Edit,unter dem Edit, Rechts und Links davon) * mit Font (eigenständiger Font) * mit Farbe (Hintergrundfarbe des Labels) - Zusätzliche kann eine Fehlerfarbe angegben werden, die das Editfeld bei einem Fehler einfärbt. - Es kann weiterhing gewählt werden, ob der Text im Editfeld markiert werden soll, wenn ein Fehler auftritt. |
Re: Validedit-Komponente
Läuft leider nicht auf Delphi 3
|
Re: Validedit-Komponente
hm..hab hier nur D7..sorry.
Kannst mal beschreiben was passiert ? Den eigentlich sollte sich der Standard-Edit nicht so viel unterscheiden. |
Re: Validedit-Komponente
Zitat:
Ich rate mal, dass es an der MaskUtils Unit liegt, die es noch nicht in Delphi 3 gibt, dass schon 9 Jahre auf dem Buckel hat und wohl nicht mehr State of the Art ist. |
Re: Validedit-Komponente
:? nein ich wollte das ding kurz testen (lag unter zeitdruck) aber du hast recht die Unit fehlt. und delphi kennt die eigentschaften anchors... nicht ich schau morgen nochmal nach.
@jgb Ich hab keine Lust 100000 seiteige Fehlerberichte zu schreiben...und ich bin kein kunde sondern ich hab welche ;-) ok. |
Re: Validedit-Komponente
Hmm..also, die Unit kann an und für sich raus, die Komponente braucht sie nicht.
Den Rest...könnte jemand mal testen bei welchen Propertys er meckert ? Dann könnt ich die per Compilerschalter (Version) entsprechend einbinden bzw. raus lassen. |
Re: Validedit-Komponente
Also folgendes muss raus / fand D3 nicht:
MaskUtils property Anchors; property BevelEdges; property BevelInner; property BevelOuter; property BevelKind; property BevelWidth; property BiDiMode; property Constraints; property DragKind; property ParentBiDiMode; property OnEndDock; property OnStartDock; und dann installiert er es. also wenn das ganze zeug da oben weg ist.sieht jetzt so aus:
Delphi-Quellcode:
Mfg
unit validEditU;
{$R-,T-,H+,X+} interface uses Windows, SysUtils, Classes, StdCtrls, Controls, Messages, Forms, Graphics, Menus; TYPE TOnValidate = function (value:TCaption):boolean of object; TOnInvalidate = procedure (value:TCaption) of object; TCustomValidEdit = Class(TCustomEdit) private fonValidate : TOnValidate; fonInvalidate : TOnInvalidate; procedure CMExit(var Message: TCMExit); message CM_EXIT; PROTECTED procedure ValidateEdit; procedure KeyPress(var Key: Char); override; PUBLIC constructor Create(AOwner: TComponent); override; PUBLISHED Property onValidate : TOnValidate read fonValidate write fonValidate; Property OnValidateError : TOnInvalidate read fonInvalidate write fonInvalidate; end; { TMaskEdit } TValidEdit = class(TCustomValidEdit) published property Align; property AutoSelect; property AutoSize; property BorderStyle; property CharCase; property Color; property Ctl3D; property DragCursor; property DragMode; property Enabled; property Font; property ImeMode; property ImeName; property MaxLength; property ParentColor; property ParentCtl3D; property ParentFont; property ParentShowHint; property PasswordChar; property PopupMenu; property ReadOnly; property ShowHint; property TabOrder; property TabStop; property Text; property Visible; property OnChange; property OnClick; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDrag; property OnEnter; property OnExit; property OnKeyDown; property OnKeyPress; property OnKeyUp; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnStartDrag; end; procedure Register; implementation procedure Register; begin registerComponents('Standard',[TValidEdit]); end; { TCustomValidEdit } procedure TCustomValidEdit.CMExit(var Message: TCMExit); begin if not (csDesigning in ComponentState) then ValidateEdit; inherited; end; constructor TCustomValidEdit.Create(AOwner: TComponent); begin inherited Create(AOwner); fonValidate := NIL; fonInvalidate := NIL; end; procedure TCustomValidEdit.KeyPress(var Key: Char); begin inherited KeyPress(Key); if (Word(Key) = VK_RETURN) then begin ValidateEdit; Exit; end; end; procedure TCustomValidEdit.ValidateEdit; begin if (assigned(fonValidate)) then begin if not fOnValidate(self.text) then begin fonInvalidate(text); setfocus; SelectAll; end; end; end; end. Tobi |
Re: Validedit-Komponente
[OT]
Zitat:
[/OT] @Ghotswalker: OnInvalidate solltest du in OnInvalid(ated) umbenennen, da ist es ja schon zu spät ;) . Außerdem könnte man noch "Sender" und eine Option, ob der Inhalt markiert werden soll, hinzufügen. Dann könntest du noch Goodies einfügen, damit man bei Trivialfällen überhaupt keine Eventhandler benötigt. Also z.B. ein Regex als Property, der statt OnValidate prüft, und eine color-Property, die das Edit bei invaliden Eingaben färbt. |
Re: Validedit-Komponente
Zitat:
|
Re: Validedit-Komponente
@EDatabaseError
Danke für die Mühe :) @Khabarakh Zitat:
Zitat:
Auch das mit der Farbe ist ne gute Idee :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 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