Ich bin gerade dabei, eine ActiveX-Komponente (OCX) zu entwickeln.
Dieses OCX soll in einem Visualisierungssystem mehrfach (mehrere Instanzen) eingesetzt werden.
Ich scheitere dabei, den Namen der Instanz (vom fertigen OCX) zu ermitteln. Warum bekomme ich den korrekten Namen erst so spät (nach manuellem Betätigen eines Buttons zum Auslesen und nicht schon im OnCreate, oder OnPaint meiner zugehörigen Form?
Zur Überprüfung habe ich mal eine kleine Log-Funktion mitreingenommen...
Mein Quellcode sieht folgendermassen aus:
Wenn ich in mein Logfile schaue, dann kommt der korrekte Name "name_y" (den ich in der Eigenschaft Name beim Platzieren des Elements in der Visualisierung aber auch in einem separaten Delphi-Projekt eingegeben habe) erst in der Logdatei an, wenn ich den BitBtn1 manuell betätige.
In der Logdatei sieht das ganze so aus:
Bin für jeden Hinweis sehr dankbar...
Dieses OCX soll in einem Visualisierungssystem mehrfach (mehrere Instanzen) eingesetzt werden.
Ich scheitere dabei, den Namen der Instanz (vom fertigen OCX) zu ermitteln. Warum bekomme ich den korrekten Namen erst so spät (nach manuellem Betätigen eines Buttons zum Auslesen und nicht schon im OnCreate, oder OnPaint meiner zugehörigen Form?
Zur Überprüfung habe ich mal eine kleine Log-Funktion mitreingenommen...
Mein Quellcode sieht folgendermassen aus:
Code:
procedure TMyActiveX.ActiveFormCreate(Sender: TObject); begin g_err.LogErrorMsg('<ActiveFormCreate> Start..',[],C_PRIO_DEBUG); g_err.LogErrorMsg('<ActiveFormCreate> Get_Name=%s',[Name],C_PRIO_DEBUG); finally g_err.LogErrorMsg('<ActiveFormCreate> ..Ende',[],C_PRIO_DEBUG); end; end; procedure TMyActiveX.ActiveFormPaint(Sender: TObject); begin g_err.LogErrorMsg('<ActiveFormPaint> Start..',[],C_PRIO_DEBUG); g_err.LogErrorMsg('<ActiveFormPaint> Get_Name=%s',[Name],C_PRIO_DEBUG); BitBtn1Click(self); g_err.LogErrorMsg('<ActiveFormPaint> ..Ende',[],C_PRIO_DEBUG); end; procedure TMyActiveX.BitBtn1Click(Sender: TObject); begin g_err.LogErrorMsg('<BitBtn1Click> Get_Caption=%s',[Caption],C_PRIO_DEBUG); g_err.LogErrorMsg('<BitBtn1Click> Get_Name=%s',[Name],C_PRIO_DEBUG); end; function TMyActiveX.Get_Name: WideString; begin Result := WideString(Name); end;
Wenn ich in mein Logfile schaue, dann kommt der korrekte Name "name_y" (den ich in der Eigenschaft Name beim Platzieren des Elements in der Visualisierung aber auch in einem separaten Delphi-Projekt eingegeben habe) erst in der Logdatei an, wenn ich den BitBtn1 manuell betätige.
In der Logdatei sieht das ganze so aus:
04.06.2008 16:57:14.333 [DEBUG] <ActiveFormCreate> Start..
04.06.2008 16:57:14.333 [DEBUG] <ActiveFormCreate> Get_Name=MyActiveX
04.06.2008 16:57:14.333 [DEBUG] <ActiveFormCreate> ..Ende
04.06.2008 16:57:14.333 [DEBUG] <ActiveFormPaint> Start..
04.06.2008 16:57:14.348 [DEBUG] <ActiveFormPaint> Get_Name=MyActiveX
04.06.2008 16:57:14.348 [DEBUG] <BitBtn1Click> Get_Name=MyActiveX
04.06.2008 16:57:14.348 [DEBUG] <ActiveFormPaint> ..Ende
04.06.2008 16:57:27.145 [DEBUG] <BitBtn1Click> Get_Name=name_y
04.06.2008 16:57:14.333 [DEBUG] <ActiveFormCreate> Get_Name=MyActiveX
04.06.2008 16:57:14.333 [DEBUG] <ActiveFormCreate> ..Ende
04.06.2008 16:57:14.333 [DEBUG] <ActiveFormPaint> Start..
04.06.2008 16:57:14.348 [DEBUG] <ActiveFormPaint> Get_Name=MyActiveX
04.06.2008 16:57:14.348 [DEBUG] <BitBtn1Click> Get_Name=MyActiveX
04.06.2008 16:57:14.348 [DEBUG] <ActiveFormPaint> ..Ende
04.06.2008 16:57:27.145 [DEBUG] <BitBtn1Click> Get_Name=name_y