Entwickler-Ecke

Datenbanken - eigenes TBlobField


Fienix - Do 17.02.11 15:18
Titel: eigenes TBlobField
Ich möchte gern mein eigenes TBlobField erzeugen, klappt auch soweit wunderbar.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
type
  TMyWideMemoField = class(TBlobField)
  private
  protected
  public
    procedure SetAsString(const Value: string); override;
    function GetAsString: stringoverride;
end;


Allerdings gibt es eine Fehlermeldung das er die Komponenten TMyWideMemoField in den Formularen nicht finden kann wenn ich dies öffne.
Klasse TMyWideMemoField nicht gefunden. ...

Compilieren geht ohne Probleme und es läuft auch.


Tranx - Do 17.02.11 18:01

Du erledigst dies am Besten, indem Du bei Delphi "Neu..." wählst, und dort "Komponente" auswählst. Dann gibst Du den Vorfahrtyp ein, hier TBlobField und Deinen Typnamen und den Namen der Unit. Dann wird eine Prozedur RegisterComponent erzeugt. Anschließend schreibst Du in die Komponente Deine Prozeduren, wie gehabt und speicherst Die Unit ab. Dann Rufst Dur "Komponente installieren" auf und installierst die Komponente. Dann hast Du Deine Komponente abrufbereit in einem der Reiter, meist "Beispiele", aber Du kannst auch einen anderen Reiter wählen. Dann sollte das Ganze klappen.


Fienix - Fr 18.02.11 08:44

Hi,

an diesen Weg hab ich noch garnicht gedacht.
Funktioniert aber leider nicht, ich kann das TBlobField nicht als Vorfahre auswählen. :(


Steve1024 - Fr 18.02.11 08:50

schau mal ob im initialization coderl der unit ein RegisterClass hilft.
Möglicherweise löst das dein Problem.


jasocul - Fr 18.02.11 08:58

Kann es sein, dass du die Unit, in der TBlobField definiert ist, nicht mit Uses eingebunden hast?

Allerdings bin ich jetzt auch ein wenig verwirrt, weil du im Start-Posting geschrieben hast, dass die Fehlermeldung Klasse TMyWideMemoField nicht gefunden erscheint.

Sind alle Suchpfade richtig eingestellt?


Steve1024 - Fr 18.02.11 09:02

Suchpfade können es weniger sein da sonst das kompilieren nicht klappen würde.
Ich habe mal ein Programm geschrieben das dfm Dateien zur Laufzeit lädt. Dabei habe ich eine solche Meldung erhalten. Allesdings für TButton etc. Lösen konnte ich das mit RegisterClass im Initialization Code von der Unit. da hab ich alle möglichen Komponenten einer dfm Datei registriert und schon ging das alles.


jasocul - Fr 18.02.11 09:10

user profile iconSteve1024 hat folgendes geschrieben Zum zitierten Posting springen:
Suchpfade können es weniger sein da sonst das kompilieren nicht klappen würde

Wo steht denn, dass es compiliert werden kann?
Ich hatte dieses Phänomen in einem alten Projekt schonmal. Die genutzten Komponenten waren zum Teil neu benannt worden oder lagen in anderen Verzeichnissen. Dabei kam exakt diese Fehlermeldung.


Fienix - Fr 18.02.11 09:12

und schon gehts! :rofl:


Delphi-Quelltext
1:
2:
3:
initialization

RegisterClass(TMyWideMemoField);

hat es gebracht!

Danke!