Hi,
Ich schreibe gerade ein kleines Delphi Plugin. Es funktioniert soweit auch ganz gut.
Im Menu der
IDE wird ein neues Untermenu erstellt mit dem Namen meines Plugins und darin ist ein MenuItem namens "Anzeigen" (z.B)
Bevor ich mein
Package installiere siehts so aus:
Code:
| Datei | Bearbeiten | ... | Hilfe |
dann installiere ich mein
Package:
Code:
| Datei | Bearbeiten | ... | Hilfe | Mein Plugin |
| Anzeigen |
Soweit, so gut. Ich klicke auf das Anzeigen-MenuItem und mein Plugin Formular wird angezeigt
Jetzt schließe ich die
IDE und starte sie wieder.
Das Menu:
Code:
| Datei | Bearbeiten | ... | Hilfe | Mein Plugin |
| Anzeigen |
Ich klicke auf "Anzeigen" und.....nichts.
Habe das ganze schon debuggt. Das OnClick des MenuItems wird ausgeführt. Aber das Formular wird nicht sichtbar.
Hier mal etwas Quelltext (verreinfacht, abstrahiert):
Delphi-Quellcode:
unit Plugin;
interface
uses PluginMenu;
// ...
implementation
procedure InitializePlugin;
begin
PluginMenu.PluginMenuErstellen;
// Form: TDockableForm;
Form := TForm.Create(
nil);
end;
procedure FinalizePlugin;
begin
Form.Free;
end;
initialization
InitializePlugin;
finalization
FinalizePlugin;
end.
Delphi-Quellcode:
unit PluginMenu;
interface
procedure PluginMenuErstellen;
implementation
procedure PluginMenuErstellen;
var FMainMenu: TMainMenu;
FPluginMenu,FAnzeigen: TMenuItem;
begin
FMainMenu := (BorlandIDEServices
as INTAServices).MainMenu;
if FMainMenu =
nil then
begin
ShowMessage('
Kein MainMenu da');
exit;
end;
FPluginMenu := TMenuItem.Create(FMainMenu);
with FPluginMenu
do
Caption := '
Mein Plugin';
FMainMenu.Items.Add(FPluginMenu);
FAnzeigen := TMenuItem.Create(FPluginMenu);
with FAnzeigen
do
begin
Caption := '
Anzeigen';
OnClick := MenuClick;
end;
FPluginMenu.Add(FAnzeigen);
end;
procedure TTicketMenu.MenuClick(Sender: TObject);
begin
Form.ForceShow;
end;
end.
Also wie gesagt. Es funktioniert in der Session in der man das Plugin-
Package installiert hat. Wenn man die
IDE aber neustartet funktioniert Form.ForceShow (und alle anderen Varianten von Show) nicht. Form <> nil und Form.Left,Form.Top,Form.Width und Form.Height sind auch in Ordnung.
PS: Es handelt sich um eine Delphi 2007 IDE.
PS2: Habe dadurch, dass ich meine Form jetzt Modal anzeigen lasse etwas herausgefunden. Und zwar WIRD das Formular angezeigt, aber es ist unsichtbar
Gruß
Neutral General