Otevřeme si plugin v Delphi a běžným způsobem přidáme nový formulář. Tedy přes menu File -> New -> Form.
Tím jsme přidali nový formulář který se jmenuje Form1. Teď musíme ještě formulář vytvořit při spuštění pluginu.
K tomu nám poslouží prozatím prázdné procedury CreateControls a FreeControls. Upravíme je nasledujícím způsobem
CreateControls
Kód: Vybrat vše
{vytvorime hlavni formular}
Form1 := TForm1.Create(nil);
Form1.PluginSvc := @FPluginSvc;
Form1.DllHandle := FPluginInfo.DllHandle;
Form1.DllPath := FDllPath;
Form1.Show;
Kód: Vybrat vše
if Assigned(Form1) then FreeAndNil(Form1);
Kód: Vybrat vše
private
{ Private declarations }
FPluginSvc : pIQIPPluginService;
FDllHandle : Cardinal;
FDllPath : WideString;
public
{ Public declarations }
property PluginSvc : pIQIPPluginService read FPluginSvc write FPluginSvc;
property DllHandle : Cardinal read FDllHandle write FDllHandle;
property DllPath : WideString read FDllPath write FDllPath;
end;
Kód: Vybrat vše
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caHide;
end;
Zobrazení formuláře ihned po spuštení Infia ale není úplně to pravé. Toto zrušíte odstraněním řádku Form1.Show v proceduře CreateControls. Teď se plugin sice spustí, ale náš vytvořený formulář není zobrazen.
Proto si do pluginu přidáme dvě nové zprávy. PM_PLUGIN_CAN_ADD_BTNS která nám vytvoří tlačítko pod avatarem a zprávu PM_PLUGIN_MSG_BTN_CLICK která bude reagovat na kliknutí na tato tlačítka.
Zpravy přidáme do procedury OnQipMessage následujícím způsobem
Kód: Vybrat vše
PM_PLUGIN_CAN_ADD_BTNS : Pridat_tlacitko(PlugMsg);
PM_PLUGIN_MSG_BTN_CLICK : Kliknuti_na_tlacitko(PlugMsg);
Kód: Vybrat vše
procedure TQipPlugin.Pridat_tlacitko(PlugMsg: TPluginMessage);
var BtnInfo : TAddBtnInfo;
begin
{========== Btn1 ===============}
{You can use icon OR png image for your button if you are coding in delphi else you have to use BtnIcon only}
BtnInfo.BtnIcon := 0; //Handle ikony
// OR use png if using delphi
//LongInt of (TPngObject), PngImage library for delphi only;
BtnInfo.BtnPNG := 0;
BtnInfo.BtnHint := 'Popis funkce tlacitka';
{Send adding btn message}
PlugMsg.Msg := PM_PLUGIN_ADD_BTN;
PlugMsg.WParam := LongInt(@BtnInfo);
PlugMsg.DllHandle := FPluginInfo.DllHandle;
FPluginSvc.OnPluginMessage(PlugMsg);
//Vysledkem zaslane zpravy je ID naseho tlacitka
FMyUniqBtn1 := PlugMsg.Result;
end;
procedure TQipPlugin.Kliknuti_na_tlacitko(PlugMsg: TPluginMessage);
var wAccName : WideString;
iUniqueVal, iProtoDllHandle : integer;
PlugMsg1 : TPluginMessage;
aContDetails : pContactDetails;
begin
{Zjisti ID tlacitka na ktere se kliklo}
iUniqueVal := PlugMsg.WParam;
{get contact account name from message}
// wAccName := PWideChar(PlugMsg.LParam);
{get protocol name of contact from message}
// wProtoName := PWideChar(PlugMsg.NParam);
{get protocol dll handle from message}
// iProtoDllHandle := PlugMsg.Result;
{check which of your buttons clicked}
{Klikli jsme na nase tlacitko?}
if (iUniqueVal = FMyUniqBtn1) then
begin
Form1.Show;
SetForegroundWindow(Form1.Handle);
end;
end;
Takto jsme se dostali do stavu kdy můžeme náš formulář zobrazit kliknutím na tlačítko a zase zavřít.
Na konec dnešního dílu si založíme druhý formulář Form2 stejným způsobem jako první a přiřadíme jej tlačítku "Nastavení" v seznamu pluginů. Přiřazení provedeme úpravou zprávy
Kód: Vybrat vše
PM_PLUGIN_OPTIONS : begin
//ShowMessage('Options window');
Form2.Show;
SetForegroundWindow(Form2.Handle);
end;