Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-11-22, 22:31x



Odpowiedz w temacie  [ Posty: 8 ] 
Udostępnienie zdarzeń kontrolki .NET w AmBasic 
Autor Wiadomość

Rejestracja: 2016-07-07, 16:59
Posty: 2
Post 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ą?


2016-07-07, 17:10
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert
Awatar użytkownika

Rejestracja: 2009-03-07, 11:13
Posty: 597
Pomógł: 34
Post 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.


2016-07-11, 22:03
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post 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

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2016-07-11, 22:55
Wyświetl profil
Ekspert
Ekspert
Awatar użytkownika

Rejestracja: 2009-03-07, 11:13
Posty: 597
Pomógł: 34
Post 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).


2016-07-11, 23:33
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post 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

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2016-07-12, 09:14
Wyświetl profil

Rejestracja: 2016-07-07, 16:59
Posty: 2
Post 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.


2016-09-13, 12:52
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post 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; }
        }

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2016-09-13, 13:41
Wyświetl profil

Rejestracja: 2009-01-08, 11:43
Posty: 96
Pomógł: 1
Post 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.


2016-11-04, 01:01
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 8 ] 
   Podobne tematy   Autor   Odpowiedzi   Odsłony   Ostatni post 
Na tym forum nie ma nowych nieprzeczytanych postów. Kontrolki .NET w formatkach AMBASIC Handel > 2015

w Programowanie

Kartomiotacz

1

2342

2016-12-30, 20:59

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki wlasne kontrolki w AmBasic

w Programowanie

sebapr

8

5438

2009-04-15, 12:58

sebapr Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Integracja AMBasic z COM i .Net

w Programowanie

tborawski

3

3245

2015-09-09, 11:26

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Drukarka fiskalna w sieci LAN - UDOSTĘPNIENIE

w Techniczne

cieniucieniu

3

3676

2013-01-29, 11:44

rafal Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 30 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant