![]() |
Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur
Guten Abend liebe User.
Ich habe ein kleines Schulprojekt vor mir und möchte nun eine eigene Edit-Komponente erstellen. Dazu hatte ich bereits eine Funktion gefertigt welche bei Verlassen der Edit-Box die Zahelen von 1-9 eine 0 vorordnet und Zahlen größer 15 erkennt. Dies sah so aus:
Delphi-Quellcode:
--> Als Prozedur welche in eier Schleife so angewandt wurdeprocedure _SetupEdit(aEdit : TEdit); Begin aEdit.onExit := AnyEditExit; End;
Delphi-Quellcode:
Die Prozedur AnyEditExit sieht so aus:
_SetupEdit (TEdit(FindComponent('Edit'+IntToStr(i))));
Delphi-Quellcode:
Nun möchte ich das ganze in eine Komponente packen die das ganze regelt aber ich hab keine wirklich Ahnung wie das möglich ist.
procedure TForm1.AnyEditExit(Sender: TObject); // Prozedur für die Editfelder
var field: TEdit; eingabe: integer; begin field := Sender as TEdit; if(field.Text <> '') then begin if(TryStrToInt(field.Text)) then begin eingabe := StrToInt(field.Text); if(eingabe > 15) then begin ShowMessage('Zahl zu groß'); field.Text := IntToStr(15); end; if((StrToInt(field.Text[1]) = 0) and (field.Text[2] = '')) then field.Text := '0'+field.Text else if(((eingabe < 10) and (eingabe <> 0)) and (Length(field.Text) < 2)) then field.Text := '0'+field.Text; end else ShowMessage('kein gültiger Integerwert'); end; end; Ich möchte keine direkten Lösungsvorschläge. Tipps, Hinweise und Links wären mir auch schon sehr recht. EDIT: Kann man diesem Edit-Feld auch einfach noch einen Boolean-Wert mitgeben? z.B. Edit32.note und da steht dann true oder false? Mit freundlichen Grüßen |
Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur
Hallo,
Zitat:
Mach' Dir 'ne neue Komponente mit dem Vorfahren TEdit (Menü Komponenten, Neue Komponente...). Im Quelltext fügst Du Deine Ereignisroutine ein, im Create der neuen Komponenten weist Du dem OnExit-Ereignis Deine Ereignisroutine zu. Und wenn Du schon dabei bist, eine eigene Ereignisroutine zuzufügen, wird es Dir leicht fallen, auch noch ein zusätzliches boolsches Attribut hinzuzufügen. Wenn Du nicht klar kommst, suche Dir den Quelltext von irgendeiner Komponente und schau, wie es da gemacht wird. Eventuell wirst Du dazu ja schon in den Sourcen von Delphi fündig. Mein Vorschlag, füge erst das Attribut "Note" hinzu, dass dürfte zum Lernen einfacher sein. |
Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur
Guten Tag.
Ich bin jetzt soweit:
Delphi-Quellcode:
Jedoch weiß ich nicht wie es weiter geht denn der Compiler meldet immer "Methode 'onExit' nicht in Basisklasse gefunden" ich habe ein wunderbares Tutorial gefunden unter
unit MarkEdit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; procedure Register; type TMarkEdit1 = class(TEdit) private { Private-Deklarationen } Fnote: boolean; eingabe: string; function TryStrToInt(string_in:string):boolean; protected { Protected-Deklarationen } published { Published-Deklarationen } property Note:boolean read Fnote write Fnote; public { Public-Deklarationen } procedure onExit; override; // Hier ist die onExit Proz. end; implementation procedure Register; begin RegisterComponents('Win32', [TMarkEdit1]); end; // Funktion zum Prüfen ob Eingabe ein String function TMarkEdit1.TryStrToInt(string_in:string):boolean; begin Try StrToInt(string_in); Result := true; except on EConvertError do Result := false; end; end; procedure TMarkEdit1.onExit; // Hier soll sie verändert werden begin if(AText.Text <> '') then begin if(TryStrToInt(AText.Text)) then begin eingabe := StrToInt(AText.Text); if(eingabe > 15) then begin ShowMessage('Zahl zu groß'); AText.Text := IntToStr(15); end; if((StrToInt(AText.Text[1]) = 0) and (AText.Text[2] = '')) then AText.Text := '0'+AText.Text else if(((eingabe < 10) and (eingabe <> 0)) and (Length(AText.Text) < 2)) then AText.Text := '0'+AText.Text; end else ShowMessage('kein gültiger Integerwert'); inherited OnExit; end; end. ![]() Um Hilfe wäre ich sehr dankbar |
Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur
Der Compilrausdruck sagt dir eigentlich schon direkt was los ist.
Deine MaskEdit ist abgeleitet von TEdit und willst die Funktion onExit überschreiben, jedoch gibt es die Funktion in der Basisklasse (= TEdit) nicht |
Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur
Aber ein TEdit besitzt doch die onExit-Funktion???
|
Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur
Nein, es besitzt die OnExit-Property (ein Methodenzeiger).
|
Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur
Naja ist ja auch ganz egal (im Moment) was es besitzt.
Ich müsste diese Komponent schnellstmöglich fertig bekommen, Es wäre sehr nett wenn mir jemand sagen könnte wie man dieses Problem - das ich im Moment habe - lösen kann. Ich bin nicht auf Komplettlösungen fixiert. Es wäre schon schön wenn mir jemand sagt ob und besten Falls wo sowas beschrieben steht oder mir einen vernünftigen Tipp gibt. Mfg |
Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur
TWinControl besitzt die dynamische Methode DoExit. Die kannst Du überschreiben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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 by Thomas Breitkreuz