AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [IDE-Experte (2006,07,09,10,XE,XE2)] CustomHelp
Thema durchsuchen
Ansicht
Themen-Optionen

[IDE-Experte (2006,07,09,10,XE,XE2)] CustomHelp

Ein Thema von chaosben · begonnen am 29. Sep 2009 · letzter Beitrag vom 8. Jan 2014
Antwort Antwort
Seite 1 von 13  1 2311     Letzte »    
Benutzerbild von chaosben
chaosben
Registriert seit: 27. Apr 2005
CustomHelp (2.irgendwas )

... ist ein IDE Experte, der die Delphi Hilfe um ein paar nützliche Funktionen erweitert.

Was soll das?
Du "stehst" in deinem Quellcode und brauchst Hilfe zu einer bestimmten Funktion. Du drückst F1 und bekommst deine vertraute Delphi Hilfe. Jetzt hättest du natürlich auch gern ein Beispiel zu deren Anwendung oder du fragst dich, ob jemand in der DP schonmal das gleiche Problem damit hatte mit dem du dich gerade herumschlägst. Oder du sehnst dich nach der "alten" Delphi 7 Hilfe. Also musst du die vertraute schützende Umgebung deiner IDE (ja das ist doppelt gemoppelt) verlassen und dich durch die verschiedenen Suchmaschinen und Hilfedateien hangeln.
Hier hilft CustomHelp. Der Assistent fasst deine Suchanfrage in einem niedlichen kleinen Fenster zusammen, von dem aus du in deinen Lieblingssuchmaschinen und Hilfedateien blättern kannst.

Die Features im Überblick ... oder warum sollte ich weiterlesen? (Für alle die lieber Video gucken anstatt zu lesen ... siehe unten. )
  • Suche über F1 (keine ungewöhnlichen Tastenkombinationen)
  • Suche über alle im System registrierten Hx Namespaces (Microsoft Entwicklerhilfe Umgebung) (z.B. Jedi Hilfe)
  • Suche über die Html-Hilfe (*.chm) Dateien
  • Suche über die gute alte Hilfe (*.hlp-Dateien)
  • Suche per Shell-Kommando
  • Suche dynamisch via RSS-Feeds.
  • Einstellungen werden pro Delphi-Version gespeichert
  • Ab Version 1.3 Mit Windows Search die indizierten Dateien durchsuchen
  • Ab Version 2.0 Native Suche in der Google Codesearch
  • Ab Version 2.0 Erweiterbar durch eigene Provider und eigene GUI's (Fenster in dem die Hilfe angezeigt)
  • Ab Version 2.0 Erweiterte Formatierung (Schriftstile + Farbe)
  • Ab Version 2.1 Thread-Unterstützung zur Beschleunigung

Wie (de-)installiere ich CustomHelp?
Am einfachsten ist es über das SVN-Repository von TUO (Wer es ganz heiß mag und die neuesten Neuerungen und Bugs haben will, kann auch den Trunk nehmen). Vermittels eines SVN-Clients ist das überaus einfach. Andernfalls kann man sie die Dateien auch per Browser und Handarbeit runterladen - jeder eben wie er will.
Dann einfach das Package (auf passende Delphi-Version achten) laden und installieren. Fertig. Zum deinstallieren einfach das entsprechende Package aus der Liste der Entwurfs-Packages entfernen. Nach einer eventuellen Deinstallation ist ein Neustart der IDE erforderlich.
Vorher sollte man auf gleiche Weise TUOCommon installieren. (Hier auschecken und installieren)

Alles weitere über die Benutzung erfahrt ihr im Video (siehe unten)

Vorschläge für Hilfe-Provider (bitte die URLs aus den Links kopieren)
Known Issues
  • Unter D2006 darf man das Package nur einmal installieren. Beim zweiten Mal gibts jede Menge Fehler. Als Workaround startet man Delphi nach der Installation einfach neu.
  • CustomHelp bewahrt nicht davor, die Original-Hilfe zu installieren. Leider prüft Delphi bevor es irgendetwas tut, ob diese installiert.

FAQ
  • Gibts das auf deutsch?.... Nein. Das bissl englisch verträgt jeder Entwickler
  • Gibts das als fertige bpl?.... Nein. Der Aufwand fertige Packages aktuell zu halten ist uns zu groß.
  • Kann ich helfen?.... Ja. Wenn du noch Ideen und Anregungen hast?... Immer her damit.
  • Warum habt ihr so wenige Kommentare im Code?.... Diese Projekte sind primär für unseren eigenen Bedarf geschrieben. Wir stellen sie OpenSource zur Verfügung, weil wir selbst gern von OpenSource profitieren. Es ist kein Lehrprojekt . Wenn ihr jedoch Fragen zu dieser oder jener Funktion habt, könnt ihr Marco oder mich gern fragen.
  • Wie kann ich einen eigenen Provider schreiben? .... CustomHelp2 requiren, Ich2Provider implementieren und bei ch2Main registrieren.
  • Wie kann ich eine eigene GUI schreiben? .... CustomHelp2 requiren, Ich2GUI implementieren und bei ch2Main registrieren.

Danke an ...
  • RWarnecke fürs XE2-Projekt
  • HeikoAdams fürs Debuggen und Testen
  • allen anderen für das Feedback

Viel Spaß damit.
wünschen Marco und Benny

Videos
Version 2.0
Version 1.2
Version 1.0
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)

Geändert von chaosben (26. Jul 2012 um 05:52 Uhr) Grund: Release 2.1
 
Daniel

 
Delphi 10.4 Sydney
 
#2
  Alt 29. Sep 2009, 18:13
Zitat von chaosben:
Falls ihr noch Vorschläge habt (z.B. wie man eine URL auf der WelcomePage öffnet) ... immer her damit.
Das habe ich doch irgendwo schon mal gemacht ... ... ...

Zuerst prüfen, ob die WelcomePage nicht deaktiviert ist:

Delphi-Quellcode:
function TDPxHBConfig.WPIsEnabled : boolean;
begin
  result:= (GetModuleHandle( 'startpageide100.bpl' ) > 0) // Delphi 2007
           OR
           (GetModuleHandle( 'startpageide120.bpl' ) > 0) // Delphi 2009
           OR
           (GetModuleHandle( 'startpageide140.bpl' ) > 0); // Delphi 2010
end;
Dann braucht's zwei Interfaces, die per Standard offenbar nicht dabei sind/waren. Ich habe sie - glaube ich - in einem der Blogs eines Borland/CodeGear/Embarcadero-Mitarbeiter gefunden. Die Code-Kommentare habe ich mal drin gelassen, sie stamm,en nicht von mir.

Delphi-Quellcode:
  IURLModule = interface
  ['{9D215B02-6073-45DC-B007-1A2DBCE2D693}']
    procedure Close;
    function GetURL: string; // tested
    procedure SetURL(const AURL: string); // tested
    procedure SourceActivated;
    function GetWindowClosingEvent: TWindowClosingEvent; // WARNING!!! DO NOT CALL!!!
    procedure Proc1;
    procedure Proc2;
    procedure Proc3;
    procedure Proc4;
    procedure Proc5;
    property URL: string read GetURL write SetURL;
  end;

  IDocModule = interface
['{60AE6F18-62AD-4E39-A999-29504CF2632A}']
    procedure AddToProject;
    function GetFileName: string;
    procedure GetIsModified;
    function GetModuleName: string;
    procedure Save;
    procedure Show; // doesn't seem to work properly...
    procedure ShowEditor(Visible: Boolean; const Filename: string);
    procedure GetProjectCount;
    procedure GetProject;
    procedure GetActiveProject;
    property Filename: string read GetFilename;
    property ModuleName: string read GetModuleName;
  end;
Und nun geht's auch schon los:

Delphi-Quellcode:
function TDPxHBIDEWizard.GoURL(const URL: string) : boolean;
var
  ModuleServices: IOTAModuleServices;
  Module: IOTAModule;
  I: Integer;
  mIdx : integer;
  URLModule: IURLModule;
  DocModule: IDocModule;
begin

  if NOT WPVisible then
    ShowWP;

  result:= FALSE;
  
  mIdx:= -1;
  ModuleServices := BorlandIDEServices as IOTAModuleServices;
  for I := 0 to ModuleServices.ModuleCount-1 do
  begin
    Module:= ModuleServices.Modules[I];
    if Supports(Module, IURLModule, URLModule) then
    begin
      if Supports(Module, IDocModule, DocModule) then
      begin
        URLModule.URL:= URL;
        result:= TRUE;
        mIdx:= i;
        BREAK;
      end;
    end;
  end;

  if (mIdx > -1) AND (mIdx < ModuleServices.ModuleCount) then
    ModuleServices.Modules[mIdx].Show;
end;
Falls die WelcomePage zwar geladen, aber gerade geschlossen ist, kann man sie mit folgendem Code anzeigen:

Delphi-Quellcode:
procedure TDPxHBIDEWizard.ShowWP;
var IDEService : INTAServices;
       actList : TCustomActionList;
           idx : integer;
           act : TContainedAction;
begin
  IDEService:= (BorlandIDEServices AS INTAServices);
  actList:= IDEService.ActionList;

  for idx:= 0 to actList.ActionCount-1 do
  begin
    act:= actList.Actions[idx];

    if act.Name = 'ViewWelcomePageCommandthen
      act.Execute;
  end;
end;

Ich hoffe, das hilft ein wenig.
Daniel R. Wolf
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

 
Delphi 10.1 Berlin Professional
 
#3
  Alt 29. Sep 2009, 18:17
Hallo und vielen Dank,

eigentlich wussten wir ja, daß Du weißt wie es geht ... aber wir haben aus Ehrfurcht nicht gefragt

Mal sehen ob wir Morgen zum einbauen kommen.

gut's Nächtle.
Marco Warm
  Mit Zitat antworten Zitat
Daniel

 
Delphi 10.4 Sydney
 
#4
  Alt 29. Sep 2009, 18:19
Zitat von MarcoWarm:
... aber wir haben aus Ehrfurcht nicht gefragt
Ach Unsinn - sonst schubsen mich doch auch alle rum hier im Forum ... tut auch schon fast nicht mehr weh ... fragt mal meine Mods.
Daniel R. Wolf
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

 
Delphi 10.1 Berlin Professional
 
#5
  Alt 30. Sep 2009, 07:50
Und da sind wir wieder.

Neue Features:

- Unterstützung der alten Win32 Hilfe (z.B. Delphi 7 Hilfe (wer die so mochte) und verschiedene Hilfen von Komponentenanbietern)
- Anzeige des Suchresultats auf der Welcomepage (na endlich hat die mal nen Sinn )

Eine Beispiel-Konfiguration sieht so aus:
http://i467.photobucket.com/albums/r...s/dp/neu-3.jpg
Marco Warm
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

 
Delphi 11 Alexandria
 
#6
  Alt 30. Sep 2009, 08:48
Zwei Dinge:
1. Ladet das Projekt hier hoch.
und b) gibts das auch auf Deutsch?

Edith hat noch ein III: Ich finde es ziemlich schade, daß Ihr gleich mal Null Kommentare da drin habt. Da kann man eigentlich nicht wirklich von lernen.

Zum Projekt an sich aber

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#7
  Alt 30. Sep 2009, 09:22
Danke für das Lob.

Was die anderen Punkte angeht:
Wir wollen es nicht an 2 Stellen pflegen (funktioniert aus Erfahrung nicht) ... deshalb gibts hier nur den Link auf das Original.
Deutsch? Och nö ... wir sind doch alle Entwickler und das bißchen Englisch verträgt man noch.

Und die Kommentare ... Das Tool ist gestern innerhalb eines halben Tages neben der Jahresinventur unseres Brötchengebers her entstanden. Das war so ein Hin-und-Herspringen zwischen dem Telefon, IBExpert und Delphi. Daher sieht der Code auch weniger schön aus. Aber ich werd mal sehen, ob da noch ein paar Kommentare reinkommen.
Benjamin Schwarze
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#8
  Alt 30. Sep 2009, 14:41
So, es hat sich wieder einiges getan:
  • Im ersten Post gibts ein kleines Demo-Video
  • Die Einstellungen werden pro Delphi-Version gespeichert
  • Der Zugriff auf die Standard-Hilfen erfolgt native (und damit schneller)
  • Man kann jede andere HX-Hilfe (z.B. vom VisualStudio, andere Delphi-Version) nutzen
  • Ein paar Bugfixes
Benjamin Schwarze
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

 
Delphi 10.1 Berlin Professional
 
#9
  Alt 1. Okt 2009, 09:08
Das Resultat unserer morgentlichen Bemühungen
  • Bugfix. Unter RAD Studio 2009+ wurde keine Hilfe angezeigt, wenn die Standard Delphi-Hilfe keine Resultate brachte (z.B. Boolean)
  • Unterstützung des Windows HTMLHelp Formates (*.chm) Jetzt kann man auch die VirtualTreeview-Hilfe einbauen (ACHTUNG: die chm-Hilfe muss einen Index haben, sonst geht es nicht)
Marco Warm
  Mit Zitat antworten Zitat
a-s-z-work

 
RAD-Studio 2009 Ent
 
#10
  Alt 1. Okt 2009, 10:22
Hallo,

dieses Plugin ist ja super! Wenn so etwas doch mal als Standard dabei wäre

Ich bin gerade dabei alle Hilfen einzubinden und dabei sind mir ein paar Sachen/Probleme aufgefallen:
  • Ich habe die Reihenfolge der Einträge umgedreht. Namespace-Treffer sind jetzt zuerst aufgelistet. Könnte man ja vielleicht als Konfigurationsoption hinzufügen.
  • function THelpSelector.SelectKeyword:
    in der ersten Zeile sollte nicht idx, sondern Result initialisiert werden. Sonst gibt es einen Fehler wenn man die Auswahl abbricht.
    Delphi-Quellcode:
    function THelpSelector.SelectKeyword(Keywords: TStrings): Integer;
    var
      idx : integer;
      u : String;
    begin
      Result:=-1;
      if TFormHelpSelector.Execute(Keywords, idx, u) then
        Result:=idx;
    end;
  • procedure TCustomHelp.LoadEnabledNamespacesFromRegistry
    Ich habe Probleme mit manchen Namespaces (devExpress-Komponenten). Der Aufruf der Funktion GetNavigationObject löst eine Exception aus (Das Navigationsobject [!DefaultKeywordIndex] konnte nicht abgerufen werden), was dazu führt das das Package nicht mehr geladen werden kann. Deshalb habe ich den Code wie folgt erweitert:
    Delphi-Quellcode:
    procedure TCustomHelp.LoadEnabledNamespacesFromRegistry;
    var
      sl : TStringList;
      idx : integer;
      hxSession: IHxSession;
      hxIndex: IHxIndex;
      NavObject: IDispatch;
    begin
      FEnabledIndices.Clear;
      sl:=TStringList.Create;
      try
        ReadEnabledNamespacesFromRegistry(sl);

        for idx := 1 to Namespaces.Count do
        begin
          if sl.IndexOf(Namespaces.Item(idx).Name)>=0 then
          begin
            hxSession:=CoHxSession.Create;
            hxSession.Initialize('ms-help://'+Namespaces.Item(idx).Name,0);
            try
              NavObject := hxSession.GetNavigationObject('!DefaultKeywordIndex','');
              if Assigned(NavObject) and Supports(NavObject,
                          IID_IHxIndex,
                          hxIndex) then
              begin
                FEnabledIndices.Add(hxIndex);
              end;
            except on e: exception do
              begin
                ShowMessage('Error when checking namespace ' + Namespaces.Item(idx).Name + '! Disabling namespace.'#13#10+ e.Message);
                Self.WriteNamespacesToRegistry(Namespaces.Item(idx).Name, false);
              end;
            end;
          end;
        end;
      finally
        sl.Free;
      end;
    end;
    Kann mir da einer bei den DevExpress-Hilfedateien Tipps geben? In der "normalen" Hilfe funktioniert der Index natürlich

--
CU,
Andre
Andre
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 13  1 2311     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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