Delphi-Version: 10.2 Tokyo
Methode 'DoCreate' nicht in Basisklassis gefunden
Hi zusammen
Zur Zeit arbeite ich daran, meinem Programm das Scannen 'beizubringen'. Dazu verwende ich delphitwain-kluug-1-5--2014-06-25. Sehr ungewöhnlich für mich ist die Initialisierung der Mainform des Beispielprogrammes:
Delphi-Quellcode:
Dabei will ich die Funktonen dieser Mainform auf einen Frame auslagern. Dieser, bzw. sein Vorfahre, kennt aber keine 'DoCreate-Methode.
procedure TForm1.DoCreate;
begin inherited; Twain := TDelphiTwain.Create; Twain.OnTwainAcquire := TwainTwainAcquire; if Twain.LoadLibrary then begin Twain.SourceManagerLoaded := TRUE; //Load source manager ReloadSources; end else begin ShowMessage('Twain is not installed.'); end; end; Grundsätzlich denke ich, das ist kein wirkliches Problem: Ich verpasse dem Frame einfach wie gewohnt einen Constructor - Frame.OnCreate gibt es nicht. Andrerseits aber: Methoden, die wie hier mit einem 'Do' beginnen, sind normalerweise per Konvention Eventhandler zu eigens definiertem Ereignissen. So gesehen wäre obige Methode also ein Eventhandler... Aber sehe ich das wirklich richtig? Oder andersherum: was gibt es für enen Grund, die obige Methode nicht einfach "TDelphiTwain.Create zu nennen? Gruss Delbor |
AW: Methode 'DoCreate' nicht in Basisklassis gefunden
Es ist eigentlich vollkommen unerheblich, wie die Methode heißt, sie sollte nur ratsamerweise aufgerufen werden, bevor Du auf die Variable/Property Twain zugreifst.
|
AW: Methode 'DoCreate' nicht in Basisklassis gefunden
Hi DeddyH
Grundsätzlich ist das so, aber ich meinte, da gäbe es doch noch einige Spezialitäten in Bezug auf TForm, bzw, ihrem Vorfahren. ich hab sowas bei Embarcadero mal gelesen (Constructor von TCustomForm?) aber wohl nicht ganz verstanden. Andrerseits heissen alle meine Initialiesierungsmethoden Txx.Create, ob nun FormCreate oder Frameconstructor. Und das gab nur Probleme, wenn die Dinger vergessen gingen... Gruss Delbor |
AW: Methode 'DoCreate' nicht in Basisklassis gefunden
Der Konstruktor, den du überschreiben kannst, bekommt eben noch den Owner als Parameter. Das ist bei einem Frame der übliche Weg.
|
AW: Methode 'DoCreate' nicht in Basisklassis gefunden
Man muss ja nicht einmal den Konstruktor überschreiben, Lazy Initialization wäre z.B. auch ein gangbarer Weg. Und der Konstruktor ist ja die „Initialisierungsmethode“ und heißt Create, da das ja bereits in der „Mutter aller Klassen“ TObject so festgelegt ist, da sollte man den Namen auch so belassen, gerade wenn es um virtuelle Konstruktoren geht, die überschrieben werden können.
|
AW: Methode 'DoCreate' nicht in Basisklassis gefunden
Ich schmeiß hier noch ein AfterConstruction rein, das es auch bei TFrame gibt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 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