XbpStatusbar() Fehler trotz erfolgreichem new()

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Werner_Bayern »

Servus,

wieder das Thema:

Code: Alles auswählen

      if (oStatusbar := XbpStatusbar():new(oDlg)) == NIL
         fehler("Bitte manuell install.msi ausführen!")
         quit
      endif
      confirmbox(,"Statusbar: " + valtype(oStatusbar))
      oStatusbar:create(,,{0, 0}, {aPos[1], STATUSBARHOEHE})
Tja, die confirmbox gibt mir ein "O" zurück und in der nächsten Zeile knallt es:

Code: Alles auswählen

Betriebssystem      : Windows Server 2003 05.02 Build 03790 Service Pack 2
------------------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: U VALUE: NIL
          -> VALTYPE: U VALUE: NIL
          -> VALTYPE: A VALUE: {0, 0}
          -> VALTYPE: A VALUE: {1242, 30}
          -> VALTYPE: U VALUE: NIL
          -> VALTYPE: L VALUE: .T.
oError:canDefault   : J
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : NIL
oError:description  : Could not create ActiveX control
oError:filename     : NIL
oError:genCode      :       6503
oError:operation    : XBPACTIVEXCONTROL:CREATE
oError:osCode       : NIL
oError:severity     :          2
oError:subCode      :       6500
oError:subSystem    : Automation
oError:thread       :          1
oError:tries        : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------

Called from XBPSTATUSBAR:CREATE(671)
Wie soll ich das dann abfangen?
Danke!
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Herbert »

...weil das create() fehlt?
OCX hast du installiert, nehme ich aus deiner Anderen anfrage abgeleitet an
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Werner_Bayern »

Herbert hat geschrieben:...weil das create() fehlt?
OCX hast du installiert, nehme ich aus deiner Anderen anfrage abgeleitet an
Das create() hab ich doch in der letzten Zeile drin, dort wo es knallt.
Jein, das ocx ist als Admin 1malig installiert und registriert, jedoch nicht für den jeweiligen Benutzer. Das ist ja mein Problem.
Danke.
es grüßt

Werner

<when the music is over, turn off the lights!>
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von peternmb »

am Besten abfangen bevor das Programm abstürzt - ich habe das so gelöst:

Code: Alles auswählen

   oSBar := XbpStatusBar():new( oDlg:drawingArea )
   //
   //Save default error handler
   bOldError := ErrorBlock ( {|e| Break(e)} )
   BEGIN SEQUENCE
   //
   oSBar:create( ,, {0,0}, {oDlg:drawingArea:currentSize()[1],30} )    // abfangen wenns nicht funktioniert !!
   //
   RECOVER Using oError
     MsgBox( 'Ein zum Betrieb des Programmes notwendiges ActiveX-Steuerelement         ' +chr(13)+ ;
             '(ocx-Datei) wurde nicht gefunden. Bitte wenden Sie sich an unseren Service.' +chr(13)+ ;
             'Eine Neuinstallation des Programmes könnte das Problem beheben!','System-Meldung   [ocx]')
     Quit
   ENDSEQUENCE
   //Reset default error handler
   ErrorBlock (bOldError)
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Werner_Bayern »

Servus,

so könnte es funktionieren, hab heute schon ewig rumprobiert, wie es gehen könnte. Den errorblock setze ich früher an, deshalb auch mein Problem. Hier der gesamte Code:

Code: Alles auswählen

ErrorBlock({|oError|Statusbarfehler(oError)})
begin sequence
   if (oStatusbar := XbpStatusbar():new(oDlg)) == NIL
      fehler("Statusbar konnte nicht erzeugt werden, MSComCtl.ocx (install.msi) muss nachinstalliert werden!")
   endif
   oStatusbar:create(,,{0, 0}, {aPos[1], STATUSBARHOEHE})
   oPanel := oStatusbar:getItem(1)
   oPanel:autosize := XBPSTATUSBAR_AUTOSIZE_CONTENTS  // Panel-Objekt passt seine Größe an den Text an
   oDlg:cargo := oStatusbar
   RECOVER
   ErrorBlock(bAlterFehlerblock)
   if datei("msComCtl.ocx")
      RunShell("msComCtl.ocx","regsvr32.exe", .f., .f.)
      if (oStatusbar := XbpStatusbar():new(oDlg)) == NIL
         fehler("msComCtl.ocx konnte nicht erfolgreich registriert werden, bitte manuell install.msi ausführen!")
         quit
      endif
      oStatusbar:create(,,{0, 0}, {aPos[1], STATUSBARHOEHE})
      oPanel := oStatusbar:getItem(1)
      oPanel:autosize := XBPSTATUSBAR_AUTOSIZE_CONTENTS  // Panel-Objekt passt seine Größe an den Text an
      oDlg:cargo := oStatusbar
   endif
end sequence
ErrorBlock(bAlterFehlerblock)
Deshalb gings nicht... Aber komisch ist das Verhalten immer noch...
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:das ocx ist als Admin 1malig installiert und registriert, jedoch nicht für den jeweiligen Benutzer. Das ist ja mein Problem.
schon mal meine "native" DXE_Statusbar ausprobiert ;)
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Werner_Bayern »

AUGE_OHR hat geschrieben:schon mal meine "native" DXE_Statusbar ausprobiert ;)
Ist das was zum Essen? :?: :)

Ich benutze keine Fremdlibs (bisher). Oder ist das 100% Xbase?

Danke.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von brandelh »

Werner_Bayern hat geschrieben:Ich benutze keine Fremdlibs (bisher). Oder ist das 100% Xbase?Danke.
ActiveX ist immer die Nutzung fremder Resourcen ;-)
und dazu keinesfalls unproblematisch wie du oben ja selbst schreibst :D

wenn ich es richtig verstanden habe, nutzt Jimmy den direkten Aufruf von Systemkomponenten über die Windows-API.
Dafür dürfte er neben seinem Quellcode noch die OT4XB benötigen, genauso wie ich bei meiner HBPrintPDF Klasse.

Die OT4XB kann man bedenkenlos einsetzen, Pablo weiß was er tut.
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Werner_Bayern »

Servus Hubert,
danke. Die ot4xb ist schon auf meiner Festplatte, hätte ich mal wg. Zugriff auf die Registrierung unter Win7 eingesetzt, hat aber nicht funktioniert, deshalb hab ich es sein lassen.
Macht es Sinn, mittels direkter DLL-Aufrufe an eine Statusbar zu kommen? Ist das den Aufwand wert? Gibts da schon eine fertige Lösung?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Jan »

Werner,

mir fällt auf, das Du eisern daran festhältst, die Statusbar auf dem Dialog zu erstellen, und nicht auf der DrawingArea. Das mag nicht das Problem beheben, aber sicher andere.

Ansonsten arbeite ich auch mit der Statusbar, unter allen Windows-Versionen von 2000 - 7 (auch 64 Bit). Ohne irgendwelche OCX selber nachzuinstallieren.

Ansonsten sieht mein Code so aus

Code: Alles auswählen

// Statusbar erzeugen
oStatusBar := XbpStatusbar():new(oDlg:drawingArea, ;
                                 , ;
                                 {0, oDlgApp:drawingArea:currentSize()[2] - 20}, ;
                                 {oDlgApp:drawingArea:currentSize()[1], 20}, ;
                                 , ;
                                 .T. )

// Ist das entsprechende ActiveX-Element überhaupt installiert?
bOldError := ErrorBlock( {|e| BREAK(e)} )
BEGIN SEQUENCE
   oStatusBar:create()
 RECOVER USING bOldError
   lStatusBar := .F.
END SEQUENCE
ErrorBlock(bOldError)

IF lStatusBar == .T.
   // Die einzelnen Felder erzeugen
   oPanel := oStatusBar:getItem( 1 )
   oPanel:caption  := "Programmname " + cVersion
   oPanel:autosize := XBPSTATUSBAR_AUTOSIZE_SPRING

   oPanel := oStatusBar:addItem()
   oPanel:Style := XBPSTATUSBAR_PANEL_INSERT
   oPanel:autosize := XBPSTATUSBAR_AUTOSIZE_CONTENTS
Ich habe also in der Sequence-Schleife nur das :create() drin, der Rest kommt je nach Fall erst hinterher.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von brandelh »

Werner_Bayern hat geschrieben:Macht es Sinn, mittels direkter DLL-Aufrufe an eine Statusbar zu kommen? Ist das den Aufwand wert? Gibts da schon eine fertige Lösung?
Zunächst, ICH nutze kein XbpStatusbar(), daher habe ich damit auch keine Erfahrung.
Ich dachte Alaska hätte diese über ActiveX angebunden, falls JA würde ich diese nie nehmen.
Ich nehme ActiveX nur in der allergrößten NOT ;-)
Bei einem Programm hatte ich mal ein XbpSLE unten für eine Art von Statusbar (also Textmeldungen unten) eingesetzt,
das ging ganz gut, nur beachtet niemand die kleinen Meldungen da unten, meine Anwender brauchen MSGBOX() :D

JIMMY hat oben doch geschrieben, dass er den direkten Zugriff auf die richtige Windows-Statusbar realisiert hat. Versuche es ...

Von QuickPDF könnte man z.B. auch das ActiveX Interface nutzen, das ist lahm und fehlerträchtig (die Xbase++ Implementierung desselben !).
Die direkten DLL Aufrufe sind sehr stabil, benötigen keine GUI und mindestens um den Faktor 10 schneller. Sonst noch Fragen ;-)
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Jan »

Hubert,

die XbpStatusBar() benutzt per ActiveX die Microsoft Common Controls, Version 6.0. So steht es in der Online-Hilfe.

Ich bin ansich auch kein Freund von ActiveX. Zum Einen hast Du Recht, das ist lahm (zumindest im Zusammenhang mit Xbase++). Zum Anderen habe ich massive Probleme damit, die OCXe auf den Kundenrechnern ordentlich zu installieren (Rechteprobleme, etc.). Ich habe daher alles, was ich früher als ActiveX eingebunden habe, rausgeschmissen und durch dll-Versionen ersetzt. Alle Probleme sind weg.

Aber die Statusbar hat noch nie Probleme bei mir erzeugt. Ob die wegen ActiveX langsam ist? Keine Ahnung.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Werner_Bayern »

Servus Jahn,

Danke.
Ich sehe da keinen Unterschied ob die Statusbar auf der drawingArea oder dem Dialog selbst liegt (ausser die Systemschrift). Im Gegenteil, lege ich die Statusbar direkt auf den Dialog, stimmt die Anzeige meines Hintergrundbildes. Lege ich sie auf die DrawingArea (inkl. Anpassung mit setposandsize), wird das Hintergrundbild nicht mehr korrekt skaliert.
Bisher habe ich auch keine Probleme damit, es geht ja nur darum, ist kein Office auf dem Rechner installiert, hab ich keine Statusbar. Das muss ich abfangen. Du hast es in Deinem Errorblock korrekt abgefangen, so wie es peternmb schreibt. Mich irretiert halt, dass das new() ein "gültiges" Objekt zurückgibt, das create() dann aber einen Betriebssystemfehler liefert. Das ist so nicht dokumentiert.
Hier geht es um den Fall, dass auf dem Server das zum Office alternative ocx installiert ist, aber nicht unter dem aktuellen Benutzer. Deshalb wohl auch das new()- und create()-Problem.
Diesen Fall hatte ich bisher noch nicht, das new() gab ein NIL zurück und entsprechend sprach ich auch kein oPanel-Objekt an.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Werner_Bayern »

brandelh hat geschrieben:Sonst noch Fragen ;-)
Wie geht ein DLL-Aufruf von Outlook und Word und Excel? :?:
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Werner_Bayern »

AUGE_OHR hat geschrieben:schon mal meine "native" DXE_Statusbar ausprobiert ;)
Habs gefunden, in der Wissensbasis.
Danke.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Werner_Bayern »

brandelh hat geschrieben:nur beachtet niemand die kleinen Meldungen da unten, meine Anwender brauchen MSGBOX() :D
Das kommt darauf an, was Du ihnen anbietest :wink:
Bei mir steht da der angemeldete Benutzer, oder der "Erzeuger" des Datensatzes, der letzte Bearbeiter mit Datum, das sind oft sehr wichtige, statische Informationen. Dafür eine msgbox zu verwenden... :confused2:
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von brandelh »

Werner_Bayern hat geschrieben:
brandelh hat geschrieben:Sonst noch Fragen ;-)
Wie geht ein DLL-Aufruf von Outlook und Word und Excel? :?:
wenn es ins Programm soll, geht es nur über ActiveX, ansonsten generiere ich z.B. Excel Arbeitsblätter im XML Format direkt ohne Excel.
Es kommt halt immer drauf an ;-)

PS: ich denke auch, dass die Statusbar bei MDI Anwendungen nicht zur drawingarea gehört, da es ja eher ein Rahmenteil ist ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von AUGE_OHR »

Jan hat geschrieben:Ohne irgendwelche OCX selber nachzuinstallieren.
Ansonsten sieht mein Code so aus
hm ... ein XbpStatusbar() ohne M$ComCtl.OCX :shock:
du verwechselst es nicht vielleicht mit XbpProgressbar() ?
schon mit Dependency Walker mal nachsehen ob er die M$ComCtl.OCX lädt

funktioniert bei dir das Demo von XbpToolBar() aus dem Hilfe File ?
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Jan »

Jimmy,

ich habe nur gesagt, das ich selber nix nachinstalliere. Vielleicht kommt das bei den Kunden ja mit MS-Office automatisch drauf, oder sonstwas. Aber ich mache da nix mehr, das habe ich mir nach schmerzhaften Erfahrungen abgewöhnt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: XbpStatusbar() Fehler trotz erfolgreichem new()

Beitrag von Herbert »

Jan hat geschrieben:Jimmy,
ich habe nur gesagt, das ich selber nix nachinstalliere. Vielleicht kommt das bei den Kunden ja mit MS-Office automatisch drauf, oder sonstwas. Aber ich mache da nix mehr, das habe ich mir nach schmerzhaften Erfahrungen abgewöhnt.
Jan
Jan, falls der Kunde kein Office hat, musst du etwas tun, denn die OCX wird bei der Statusbar von Alaska verwendet.
Hier nochmals der Link zum "OCX-Directory" http://www.ocxdump.com/ocx-files/M_2.html
Grüsse Herbert
Immer in Bewegung...
Antworten