Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Edit nach Create leeren (https://www.delphipraxis.net/40925-edit-nach-create-leeren.html)

LoL 23. Feb 2005 11:08


Edit nach Create leeren
 
hi

ich hab eigentlich ne ganz simple frage:
ich hab mir meine eigene Komponente von TRichEdit abgeleitet und nun möchte ich das das Edit nach dem erstellen geleert wir(clear). Wo muss ich das rein schreiben? Bei Create kann ichs ja nicht machen das das fenster(also das Edit) zu diesem Zeitpunkt nicht erstellt wurde.

Binärbaum 23. Feb 2005 11:10

Re: Edit nach Create leeren
 
Dann mach es doch im Konstruktor der Komponente.

MfG
Binärbaum

LoL 23. Feb 2005 11:12

Re: Edit nach Create leeren
 
ist nicht das Create der Constructor? :gruebel:

Delphi-Quellcode:
constructor Tmeinedit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
end;

alcaeus 23. Feb 2005 11:13

Re: Edit nach Create leeren
 
Ja, versuchs mal nach dem Inherited. Sollte eigentlich funktionieren.

Greetz
alcaeus

LoL 23. Feb 2005 11:15

Re: Edit nach Create leeren
 
das war ja auch mein erste gedanke und ich habs probiert...
wenn ichs zur designer zeit dann aufs form ziehem will kommt:
"Control has no Parent Window"

alcaeus 23. Feb 2005 11:19

Re: Edit nach Create leeren
 
Das scheint mir aber nicht wirklich damit zusammenzuhängen. Schmeiß mal die Zeile mit Lines.Clear raus und probier es dann nochmal. Scheint so als würde es da ein anderes Problem geben...

Greetz
alcaeus

LoL 23. Feb 2005 11:20

Re: Edit nach Create leeren
 
dann gehts ja....
aber solange es drin ist bekomme ich die fehlermeldung

IngoD7 23. Feb 2005 12:17

Re: Edit nach Create leeren
 
Zitat:

Zitat von LoL
aber solange es drin ist bekomme ich die fehlermeldung

Zeig mal, wie du es gemacht hast (Code).

LoL 23. Feb 2005 12:32

Re: Edit nach Create leeren
 
Delphi-Quellcode:
unit dddEdit;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls, ComCtrls, Dialogs, Graphics;

type
  TdddEdit = class(TRichEdit)
  {...}
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TdddEdit]);
end;

constructor TdddEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Width := 121;
  Height := 21;
  Lines.Clear;
end;

IngoD7 23. Feb 2005 13:14

Re: Edit nach Create leeren
 
Wundert mich irgendwie nicht, dass zu diesem Zeitpunkt (also im Konstruktor) auf Lines nicht zugegriffen werden kann. Wenn man in den Units sieht, wie Lines in TRichEdit (und Vorfahren) implementiert ist ... Da begreife ich nichts von. :cry:

Zur Laufzeit erstellte TRichEdits sind übrigens leer. Nur die zur Designzeit erstellten haben ihren eigenen Namen in der ersten Zeile. Aber das nur so nebenbei.

Benutze statt Lines.Clear ein einfachen Text:='';
Das sollte hinhauen.

LoL 23. Feb 2005 13:59

Re: Edit nach Create leeren
 
funktionier ebenfalls nicht. ich hab das nun doch anders gelöst. von daher hat sich eigentlich meine frage erledit... falls aber jemand doch ne ahnung warum das nicht geht wäre ich trotzdem dankbar :wink:

Luckie 23. Feb 2005 14:03

Re: Edit nach Create leeren
 
Zitat:

Zitat von LoL
funktionier ebenfalls nicht. ich hab das nun doch anders gelöst. von daher hat sich eigentlich meine frage erledit...

Wenn du schon hier postest, wäre es nett, wenn du uns an deiner KLösung teilhaben lassen würdest.

shmia 23. Feb 2005 14:14

Re: Edit nach Create leeren
 
Zitat:

Zitat von LoL
ich hab eigentlich ne ganz simple frage:
ich hab mir meine eigene Komponente von TRichEdit abgeleitet und nun möchte ich das das Edit nach dem erstellen geleert wir(clear).

Das wäre kontraproduktiv.
Beim Erzeugen einer Komponente spielt sich folgendes ab:
Speicherplatz wird reserviert, die Methode Create wird aufgerufen.
Falls die Komponente auf einem Formular liegt, werden zusätzlich die Eigenschaften aus der DFM-Datei auf die Komponente kopiert.
Danach wird die virtuelle Methode Loaded der Komponente aufgerufen. (Hier könnte man eingreifen)

Wenn man möchte, dass ein TRichEdit leer ist, braucht man doch nur Lines im Objektinspektor leeren.

IngoD7 23. Feb 2005 14:35

Re: Edit nach Create leeren
 
Zitat:

Zitat von LoL
funktionier ebenfalls nicht.

Was funktioniert denn daran nicht? Auf die Eigenschaft Text kannst du genauso zugreifen, wie auf Width und Height. Rein technisch müsste das gehen. Habe das zur Laufzeit erfolgreich getestet. Zur Designzeit allerdings nicht, weil ich nicht extra deine Komponente registrieren wollte.

Also: Was ging daran nicht?

LoL 23. Feb 2005 14:45

Re: Edit nach Create leeren
 
folgendes ich wollte das zur designer und dann halt zur Laufzeit kein text in dem Feld drin steht. da ich aber daruf hingewiesen wurde das das bei edits die zur laufzeit erstellt worden sind nicht der fall ist mach ich das dann halt immer so das ich alle zur laufzeit erstelle...
Das war schon alles was ich gemeint habe :roll:

IngoD7 23. Feb 2005 15:41

Re: Edit nach Create leeren
 
Zitat:

Zitat von LoL
Das war schon alles was ich gemeint habe :roll:

Schon okay. Wenn du dich zukünftig für Lösung B entscheidest, dann schreibe aber bitte nicht zu einem Lösung-A-Vorschlag, dass er nicht funktioniert, wenn du es nicht wirklich ausprobiert hast.


Wenn es dir lediglich darauf ankommt, zur Laufzeit (bzw. beim Start) des Programmes leere Edits zu haben, dann kannst du sie auch getrost zur Designzeit auf dein Form ziehen und im OnCreate des Forms folgendes machen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
dddEdit1.Lines.Clear;
dddEdit2.Lines.Clear;
end;
Damit sind sie auch leer, bevor du sie im Programm zu sehen bekommst.

alcaeus 23. Feb 2005 15:42

Re: Edit nach Create leeren
 
Zitat:

Zitat von IngoD7
Wenn es dir lediglich darauf ankommt, zur Laufzeit (bzw. beim Start) des Programmes leere Edits zu haben, dann kannst du sie auch getrost zur Designzeit auf dein Form ziehen und im OnCreate des Forms folgendes machen

Naja, oder du ziehst das Richedit aufs Form und löschst die eine Zeile aus der Lines-Property im OI. So schlimm dürfte das auch nicht sein :roll:

Greetz
alcaeus

IngoD7 23. Feb 2005 15:49

Re: Edit nach Create leeren
 
Zitat:

Zitat von alcaeus
Naja, oder du ziehst das Richedit aufs Form und löschst die eine Zeile aus der Lines-Property im OI. So schlimm dürfte das auch nicht sein :roll:

Scheinbar doch, denn das hatte ihm shmia auch schon vorgeschlagen. :roll: :wink:


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