AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur

Ein Thema von DeMoehn · begonnen am 26. Nov 2008 · letzter Beitrag vom 27. Nov 2008
Antwort Antwort
Benutzerbild von DeMoehn
DeMoehn

Registriert seit: 22. Jan 2006
Ort: Neunkirchen(Saar)
12 Beiträge
 
Delphi 2005 Architect
 
#1

Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur

  Alt 26. Nov 2008, 17:30
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:
  
procedure _SetupEdit(aEdit : TEdit);
Begin
  aEdit.onExit := AnyEditExit;
End;
--> Als Prozedur welche in eier Schleife so angewandt wurde

_SetupEdit (TEdit(FindComponent('Edit'+IntToStr(i)))); Die Prozedur AnyEditExit sieht so aus:

Delphi-Quellcode:
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;
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.

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
Sebastian
Die Zukunft ist die Zeit, in der du bereust, daß du das, was du heute tun kannst, nicht getan hast.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur

  Alt 27. Nov 2008, 08:56
Hallo,
Zitat von Sebastian:
Ich möchte keine direkten Lösungsvorschläge.
Deshalb mal "grob"

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.
  Mit Zitat antworten Zitat
Benutzerbild von DeMoehn
DeMoehn

Registriert seit: 22. Jan 2006
Ort: Neunkirchen(Saar)
12 Beiträge
 
Delphi 2005 Architect
 
#3

Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur

  Alt 27. Nov 2008, 15:43
Guten Tag.

Ich bin jetzt soweit:

Delphi-Quellcode:
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.
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 http://www.delphi-treff.de/tutorials...icklen/page/1/ jedoch hilft es mir nicht mehr weiter.

Um Hilfe wäre ich sehr dankbar
Sebastian
Die Zukunft ist die Zeit, in der du bereust, daß du das, was du heute tun kannst, nicht getan hast.
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur

  Alt 27. Nov 2008, 15:48
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
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von DeMoehn
DeMoehn

Registriert seit: 22. Jan 2006
Ort: Neunkirchen(Saar)
12 Beiträge
 
Delphi 2005 Architect
 
#5

Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur

  Alt 27. Nov 2008, 15:51
Aber ein TEdit besitzt doch die onExit-Funktion???
Sebastian
Die Zukunft ist die Zeit, in der du bereust, daß du das, was du heute tun kannst, nicht getan hast.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur

  Alt 27. Nov 2008, 15:53
Nein, es besitzt die OnExit-Property (ein Methodenzeiger).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von DeMoehn
DeMoehn

Registriert seit: 22. Jan 2006
Ort: Neunkirchen(Saar)
12 Beiträge
 
Delphi 2005 Architect
 
#7

Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur

  Alt 27. Nov 2008, 16:10
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
Sebastian
Die Zukunft ist die Zeit, in der du bereust, daß du das, was du heute tun kannst, nicht getan hast.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Delphi 5 - Eigene Edit-Komponente mit meiner Prozedur

  Alt 27. Nov 2008, 16:46
TWinControl besitzt die dynamische Methode DoExit. Die kannst Du überschreiben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 04:30 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