Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ActiveX-Komponente prüfen und ggf. installieren (https://www.delphipraxis.net/29665-activex-komponente-pruefen-und-ggf-installieren.html)

axelf98 12. Sep 2004 21:34


ActiveX-Komponente prüfen und ggf. installieren
 
Hallo!

Ich habe ein Programm geschrieben, dass die Komponente ChartFX benutzt. Da das Programm ohne Registrierung der Komponente auf Delphi-losen Rechner nicht läuft, muss dies beim Start passieren.

Ich habe bisher folgenden Code:

Delphi-Quellcode:
 shellexecute(application.Handle,nil,PChar('regsvr32 /s -'+ExtractfilePath(Application.Exename)+'cfx32.ocx'),nil,nil,SW_Shownormal);
Leider kann ich im Moment nicht testen ob das klappt, weil ich ja schon Delphi drauf habe..
Dann wäre es noch schön, wenn man prüfen könnte, ob die Komponente schon da ist.. Man muss ja nicht bei jedem Start registrieren!

Folgender Code hat übrigens nicht geklappt:
Delphi-Quellcode:
var hLib : Cardinal;
    proc : function : HRESULT;

  hLib := LoadLibrary('e:\Borland\dcube.ocx');
  if hLib = 0 then
     raise Exception.Create('dcube.ocx bla bla');    
  try
    proc := GetProcAddress(hLib, 'DLLRegisterServer'); arbeiten.
    if Assigned(proc) then
       OleCheck(proc());
  finally
    FreeLibrary(hLib);
  end;

Bernhard Geyer 13. Sep 2004 07:25

Re: ActiveX-Komponente prüfen und ggf. installieren
 
1, Wieso ChartFX? In Delphi gibt es doch auch die TChart-Komponente, welche ohne irgendwelche ActiveX-Registrierung auskommt. Und ist auch m.E. Leistungsfähiger.

2, Dein Code wird nur funktionieren wenn der User auch Admin-Rechte hat. Und aufgrund der ganzen Viren/Wurm-Problematik wird das immer weniger der Fall sein. Also solltest Du einen richtigen Installere spendieren, welcher alles erledigt wenn der User ihn mit Admin-Rechten startet.

3, Die Registierung einer COM/ActiveX-Komponente könntest Du folgendermaßen überprüfen:
Delphi-Quellcode:
function IsMyActiveXOK: Boolean;
var
  myComponente: TActiveXToCheck;
try
  myComponente := TActiveXToCheck.Create(nil);
  result := True;
  myComponente.Free;
except
  result := False;
end;

axelf98 13. Sep 2004 14:15

Re: ActiveX-Komponente prüfen und ggf. installieren
 
Zitat:

Zitat von Bernhard Geyer
1, Wieso ChartFX? In Delphi gibt es doch auch die TChart-Komponente, welche ohne irgendwelche ActiveX-Registrierung auskommt. Und ist auch m.E. Leistungsfähiger.

Leider hat mein Delphi 5 Standard keine TChart-Komponente... Leider habe ich diese Komponente schon eingebaut und kann sie nur mit viel Aufwand wieder rausnehmen!
Den Installer wollte ich nicht haben, da ich soetwas immer sehr lästig finde.
Den Tipp mit der Überprüfung ist gut, werde ich notfalls mit einem Hinweis verbinden, der nach ADMIN-Rechten verlangt!

--- EDIT!
Wobei ich echt langsam die Nase voll von ActiveX habe.. Das hat nur Probleme gemacht. Ich werds rausschmeissen und mich nach einer anderen Komponente umsehen!

Bernhard Geyer 14. Sep 2004 07:49

Re: ActiveX-Komponente prüfen und ggf. installieren
 
Zitat:

Zitat von axelf98
Wobei ich echt langsam die Nase voll von ActiveX habe.. Das hat nur Probleme gemacht. Ich werds rausschmeissen und mich nach einer anderen Komponente umsehen!

M$ hat ja auch erkannt das das ActivX-Konzept diverse "Optimierungsmöglichkeiten" besitzt (Stichwort: DLL-Hölle). Ich für meinen teil nehme schon lange bei Auswahlmöglichkeit ActiveX <-> kein ActivX immer nur die Version ohne X.
M$ bietet ja mit .NET die XCopy-Version an (DLL einfach in Anwendungsverzeichnis legen). Gut das man als Delphi-Entwickler eigentlich fast immer auf ActiceX verzichten kann :-)

axelf98 14. Sep 2004 13:37

Re: ActiveX-Komponente prüfen und ggf. installieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich bins nochmal!

Für alle, die es interessiert: Ich habe ja nach einer Alternativkomponente für einfache Balkendiagramme gesucht und leider keine wirklich überzeugende gefunden.
Dazu habe ich jetzt meine eigene als Klasse programmiert.

Sie funktioniert wie folgt:
Grundlage ist eine TImage-Komponente, die beim Initialieren angegeben wird.
Füllen und Zeichen der Grafik geschieht folgendermaßen:

Delphi-Quellcode:
 Chart1 := Tpowerchart.INIT(Image1);
 Chart1.Ueberschrift := 'Hochrechnungsergebnisse';
 Chart1.suffix := '%'; // Suffix an Zahlen
 Chart1.Ganzzahl := true; // nur ganze Zahlen anzeigen

 Chart1.LoescheAlles;
 Chart1.NeuerBalken(45,clblue,'Name 1');
 Chart1.NeuerBalken(31,clred,'Name 2');
 Chart1.Zeichnen;

Die Komponente ist natürlich individuell anpassbar!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz