mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Udostępnienie zdarzeń kontrolki .NET w AmBasic https://forum.mix-soft.pl/viewtopic.php?f=15&t=7348 |
Strona 1 z 1 |
Autor: | lucyfer [ 2016-07-07, 17:10 ] |
Tytuł: | Udostępnienie zdarzeń kontrolki .NET w AmBasic |
Witam Mam problem z udostępnieniem zdarzenia kontrolki .NET w AmBasicu. Poniżej kod kontrolki C#: Kod: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Reflection; using Microsoft.Win32; using System.Threading; namespace ActiveXSourcing { [ComVisible(true)] public delegate void ClickEventHandler(int x, int y); [GuidAttribute("0422D916-C11A-474e-947D-45A107038D12")] [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)] [ComVisible(true)] public interface ControlEvents { [ComVisible(true)] [DispIdAttribute(0x60020000)] void ClickEvent(int x, int y); } [ProgId("ActiveXSourcing.MyWindowControl")] [ClassInterface(ClassInterfaceType.AutoDual), ComSourceInterfaces(typeof(ControlEvents))] [Guid("7C21F7A3-6CFE-4E7B-AA2C-AEC09D4C39D5")] [ComVisible(true)] public class MyWindowControl : System.Windows.Forms.UserControl { System.Windows.Forms.TextBox tx = new TextBox(); private void InitializeComponent() { this.Name = "MyWindowControl"; } event ActiveXSourcing.ClickEventHandler ClickEvent; public MyWindowControl() : base() { initMyWindowControl(); } private void initMyWindowControl() { Size = new System.Drawing.Size(300, 50); tx.Text = "Click on the TextBox to invoke 'ClickEvent'"; tx.Size = this.Size; tx.Click += new System.EventHandler(ClickHandler); this.Controls.Add(tx); } [ComVisible(true)] private void ClickHandler(object sender, System.EventArgs e) { if (ClickEvent != null) { ClickEvent(0, 0); } } } } A tak to wygląda w AmBasicu: Kod: dispatch ct1 int id1 int Sub ct1_ClickEvent(int a,int b) message "Klik" endsub Int Sub OnCommand(int id, int msg) If id == id1 Then endif EndSub form "Test",600,300 control "ActiveXSourcing.MyWindowControl", ct1,10,10,500,200 id1 = button "ok",25,250,50,20,1 int ext = execform OnCommand error "" Kontrolka jest widoczna w formie ale nie reaguje na kliknięcie. Co może być przyczyną? |
Autor: | Jarek75 [ 2016-07-11, 22:03 ] |
Tytuł: | Re: Udostępnienie zdarzeń kontrolki .NET w AmBasic |
Iście szatański pomysł! Też bym chciał, choćby do obsługi grida. Ale nie umiem. Pewnie pan Zbyszek z Sage już o tym myślał, ale czy wcieli w życie... Zdaje się, że eventy z grida nie wrzucają nic do OnCommand, ale możesz się jeszcze upewnić. Może coś się zmieniło. Na pewno próbuj na najnowszej wersji. Przyczyna? To nie jest obsługiwane. Ambasic to nie VBA. W VBA w Erpie na pewno obsłużysz. |
Autor: | rafal [ 2016-07-11, 22:55 ] |
Tytuł: | Re: Udostępnienie zdarzeń kontrolki .NET w AmBasic |
Jarek75 pisze: Iście szatański pomysł! Też bym chciał, choćby do obsługi grida. Ale nie umiem. Zdarzenia obiektu MxGrid są jak najbardziej obsługiwane viewtopic.php?p=25630#p25630 Jarek75 pisze: Pewnie pan Zbyszek z Sage już o tym myślał, ale czy wcieli w życie... Nie wcieli bo już w Sage nie pracuje Jarek75 pisze: Zdaje się, że eventy z grida nie wrzucają nic do OnCommand, ale możesz się jeszcze upewnić. Może coś się zmieniło. Na pewno próbuj na najnowszej wersji. Zdarzenia obiektów nie są w OnCommand tylko w osobnych Sub'ach |
Autor: | Jarek75 [ 2016-07-11, 23:33 ] |
Tytuł: | Re: Udostępnienie zdarzeń kontrolki .NET w AmBasic |
Fajnie, dobrze wiedzieć. Zostałem trochę w tyle. Może zatem trzeba zmienić parametry suba w ambasicu na (dispatch par). |
Autor: | rafal [ 2016-07-12, 09:14 ] |
Tytuł: | Re: Udostępnienie zdarzeń kontrolki .NET w AmBasic |
lucyfer pisze: Witam Mam problem z udostępnieniem zdarzenia kontrolki .NET w AmBasicu. Poniżej kod kontrolki C#:[...] Użyłeś UserControl jako obiektu eksportowanego do COM. Jego właściwości i zdarzenia są widoczne w AmBasic. Wystarczy Kod: int Sub ct1_Click() message "Klik" endsub |
Autor: | lucyfer [ 2016-09-13, 12:52 ] |
Tytuł: | Re: Udostępnienie zdarzeń kontrolki .NET w AmBasic |
Cytuj: Użyłeś UserControl jako obiektu eksportowanego do COM. Jego właściwości i zdarzenia są widoczne w AmBasic. Wystarczy Kod: int Sub ct1_Click() message "Klik" endsub Niestety to nie działa Po kliknięciu w kontrolkę żadnego komunikatu. |
Autor: | rafal [ 2016-09-13, 13:41 ] |
Tytuł: | Re: Udostępnienie zdarzeń kontrolki .NET w AmBasic |
możliwe, że trzeba wystawić zdarzenia na zewnątrz przez Kod: public event EventHandler ControlkaClick { add { this.Click += value; } remove { this.Click -= value; } } |
Autor: | koronen [ 2016-11-04, 01:01 ] |
Tytuł: | Re: Udostępnienie zdarzeń kontrolki .NET w AmBasic |
Panowie udało się z tego zrobić działającą kontrolkę z obsługą zdarzeń w Ambasic czy nie? Jeśli tak to podzielicie się kodem kontrolki i Ambasic? Dzięki. |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |