Announcement

Collapse
No announcement yet.

Oder andere ActiveX-Spezialisten...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Oder andere ActiveX-Spezialisten...

    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:
    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
    Bin für jeden Hinweis sehr dankbar...
Working...
X