Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-11-25, 06:01x



Odpowiedz w temacie  [ Posty: 16 ]  Przejdź na stronę 1, 2  Następna
Kontrolka UserControl .NET w Handel Premium 
Autor Wiadomość

Rejestracja: 2010-10-19, 11:19
Posty: 6
Post Kontrolka UserControl .NET w Handel Premium
Witam serdecznie
Wiem, że temat ten był już poruszany wcześniej, mimo tego od paru dni próbuję bezskutecznie uruchomić kontrolkę UserControl stworzonej w .NET w Handlu Premium. Opiszę krok po kroku jak to robię.
1. Tworzę w Visual Studio projekt ClassLibrary
2. Towrzę następującą klasę:

Kod:
namespace SymfoniaCOM2
{
    [Guid("6E804126-7FD5-40EE-B93E-E2B6C7B2DC95")]
    public interface ComInterface
    {
        void pokazCos();
    }
   
    [ComVisible(true), Guid("F5283D99-AC0C-4E44-94E5-65372C075C16"),
    ClassInterface(ClassInterfaceType.None), ProgId("SymfoniaCOM2.Class1")]
    public class Class1: ComInterface
    {
        public Class1()
        {
            new Kontrolka();
        }
        public void pokazCos()
        {
            new Kontrolka();
        }

    }
}

3. Dodaję do projektu kontrolkę UserControl o nazwie Kontrolka, którą następnie wywyołuję w powyższej klasie. Do UserControl dodaję tylko przycisk.
4. W Handlu wywołuję ją następującym poleceniem:
Kod:
dispatch xDsp

form "UserControl", 400, 400
    control "SymfoniaCOM2.Class1.1", xDsp, 10, 10, 300, 300
execform


Niestety wyświetla się pusta kontrolka form. Co robię źle? Próbowałem już na różne sposoby m.in. utworzyłem metodę w klasie do wywoływania tej kontrolki. Klasa utworzona rejestruje się jako obiekt COM, ponieważ jeśli do projektu dodam WindowsForm, to bez problemu wywołuję się okno WindowsForm po wywołaniu komendy xDsp.Create("SymfoniaCOM2.Class1"), natomiast UserControl nie.

Pozdrawiam
Darek


2010-10-19, 12:01
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post 
Ta wiadomość była pomocna.(2)
We właściwościach ClassLibrary
- w zakładce Build zaznacz Register for COM interop
- w zakładce Application przycisk w Assembly Information zaznacz Make assembly COM-Visible

masz to?

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

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


2010-10-19, 15:39
Wyświetl profil

Rejestracja: 2010-10-19, 11:19
Posty: 6
Post 
Tak, mam to zaznaczone.


2010-10-19, 15:44
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post 
Ta wiadomość była pomocna.(1)
a : [ComRegisterFunction()], [ComUnregisterFunction()] ?

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

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


2010-10-19, 15:50
Wyświetl profil

Rejestracja: 2010-10-19, 11:19
Posty: 6
Post 
Tego nie mam. Jak się domyślam to funkcje do rejestracja i wyrejestrowania kontrolki COM. A czy jest to konieczne, skoro dla WindowsForm działało bez tych funkcji??


2010-10-19, 15:58
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post 
Ta wiadomość była pomocna.(2)
Kod:
    public partial class mixKartoteka : UserControl
    {


Kod:
[ComRegisterFunction()]
public static void RegisterClass ( string key )
{
  // Strip off HKEY_CLASSES_ROOT\ from the passed key as I don't need it
  StringBuilder sb = new StringBuilder ( key ) ;
  sb.Replace(@"HKEY_CLASSES_ROOT\","") ;

  // Open the CLSID\{guid} key for write access
  RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(),true);

  // And create the 'Control' key - this allows it to show up in
  // the ActiveX control container
  RegistryKey ctrl = k.CreateSubKey ( "Control" ) ;
  ctrl.Close ( ) ;

  // Next create the CodeBase entry - needed if not string named and GACced.
  RegistryKey inprocServer32 = k.OpenSubKey ( "InprocServer32" , true ) ;
  inprocServer32.SetValue ( "CodeBase" , Assembly.GetExecutingAssembly().CodeBase ) ;
  inprocServer32.Close ( ) ;

  // Finally close the main key
  k.Close ( ) ;
}


Kod:
[ComUnregisterFunction()]
public static void UnregisterClass ( string key )
{
  StringBuilder sb = new StringBuilder ( key ) ;
  sb.Replace(@"HKEY_CLASSES_ROOT\","") ;

  // Open HKCR\CLSID\{guid} for write access
  RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(),true);

  // Delete the 'Control' key, but don't throw an exception if it does not exist
  k.DeleteSubKey ( "Control" , false ) ;

  // Next open up InprocServer32
  RegistryKey inprocServer32 = k.OpenSubKey ( "InprocServer32" , true ) ;

  // And delete the CodeBase key, again not throwing if missing
  k.DeleteSubKey ( "CodeBase" , false ) ;

  // Finally close the main key
  k.Close ( ) ;
}

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

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


2010-10-19, 16:09
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post 
napisz czy to pomogło.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

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


2010-10-19, 16:25
Wyświetl profil

Rejestracja: 2010-10-19, 11:19
Posty: 6
Post 
Pomogło wstawienie tych dwóch metod. Działa super! Wielkie dzięki!


2010-10-19, 16:29
Wyświetl profil

Rejestracja: 2008-10-28, 13:24
Posty: 14
Post Re: Kontrolka UserControl .NET w Handel Premium
Spróbowałem zrobić podobną kontrolkę, ale niestety w HMF pokazuje pusty formularz, w WinForms działa poprawnie. Wywołanie w HMF:


dispatch xDsp

form "UserControl", 400, 400
control "SymfoniaCOM2.Class1", xDsp, 10, 10, 300, 300
execform


nooutput()


Załączniki:
Komentarz: Spakowany projekt w C#
SymfoniaCom2.zip [39.02 KiB]
Pobrany 226 razy
2013-11-11, 00:36
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post Re: Kontrolka UserControl .NET w Handel Premium
A dlaczego odwołujesz się przez klasę a nie bezpośrednio do UserControl.

Kod:
dispatch xDsp

form "UserControl", 400, 400
control "SymfoniaCOM2.kontrolka", xDsp, 10, 10, 300, 300
execform

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

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


2013-11-11, 15:02
Wyświetl profil

Rejestracja: 2008-10-28, 13:24
Posty: 14
Post Re: Kontrolka UserControl .NET w Handel Premium
Cytuj:
dispatch xDsp

form "UserControl", 400, 400
control "SymfoniaCOM2.kontrolka", xDsp, 10, 10, 300, 300
execform


Przy takim wywołaniu handel forte przestaje działać. Może coś jest nie tak w moim systemie?


2013-11-11, 20:34
Wyświetl profil

Rejestracja: 2009-01-08, 11:43
Posty: 96
Pomógł: 1
Post Re: Kontrolka UserControl .NET w Handel Premium
Cześć
Na pewno można również obsłużyć zdarzenia takiej kontrolki w Ambasic, ale czy tylko w OnCommand? Dokładnie chodzi mi o to czy można obsłużyć zdarzenie kontrolki wywoływanej poza formem ambasic?
Np. napisałem kontrolkę "Excel" którą rejestruję poza formem:
dispatch excel= CreateObject("Excel")
i chcę obsłużyć jej zdarzenie excel_BeforeSave
Jest coś takiego możliwe? Np. w VBA mogę to zrobić jeżeli zarejestruję obiekt z WithEvents, a w ambasic?

Pozdrawiam


2013-11-18, 22:56
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post Re: Kontrolka UserControl .NET w Handel Premium
Wyszukaj na FORUM wiadomości dotyczące MxGrid. W podanych przykładach są użyte zdarzenia np:. OnDblClick

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

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


2013-11-18, 23:25
Wyświetl profil

Rejestracja: 2009-01-08, 11:43
Posty: 96
Pomógł: 1
Post Re: Kontrolka UserControl .NET w Handel Premium
No tak ale mxgrid jest umieszczony na form. A ja pytam o zdarzenia kontrolek (własnych np w C#) nie umieszczonych na form.


2013-11-19, 00:17
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post Re: Kontrolka UserControl .NET w Handel Premium
Dokładnie tak samo.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

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


2013-11-19, 17:05
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 16 ]  Przejdź na stronę 1, 2  Następna
   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

2344

2016-12-30, 20:59

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki Wywołanie funkcji napisanej w .NET dla modułu Handel

w Programowanie

arnoldinho

8

4077

2017-06-06, 12:24

arnoldinho Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki Kontrolka picturebox

w Programowanie

klesta

13

9187

2010-06-29, 11:59

daniel Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Kontrolka MxDlg

w Programowanie

tatanka

8

5088

2018-10-31, 07:43

rafal Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 12 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