mojaSymfonia FORUM
https://forum.mix-soft.pl/

Kontrolka picturebox
https://forum.mix-soft.pl/viewtopic.php?f=15&t=385
Strona 1 z 1

Autor:  klesta [ 2008-11-07, 11:59 ]
Tytuł:  Kontrolka picturebox

Witam,
Chciałbym uzyskać rzecz następującą:
Przy pomocy, np. procedury wywołanej z okna, w karcie towaru chciałbym móc pokazać fotografię danego towaru.
Domyślam się że można coś takiego osiągnąć używając kontrolki picturebox (lub innej).
W pomocy do AmBasic'a jest informacja, że można z poziomu Symfonii uruchomić różne kontrolki, brak niestety jakichkolwiek szczegółów, lub przykładów jakie kontrolki można stosować i w jaki sosób (metody, etc).
Ponieważ za cienki za mnie bolek jeśli chodzi o programowanie (z dużymi oporami radzę sobie z napisaniem prostego raportu) miałbym gorącą prośbę o pomoc (najchętniej z jakimś przykładem :P)
Z góry wielkie dzienx :)

Autor:  klesta [ 2008-11-07, 16:21 ]
Tytuł: 

zapomniałem dodać, że chodzi o Symfonię Premium :)

Autor:  rafal [ 2008-11-07, 20:30 ]
Tytuł: 

Aby wyswietlić zdjęcie towaru z poziomu kartoteki najprościej :
1. utwórz katalog "zdjęcia" w katalogu z danymi towaru
2. skopiuj tam zdjęcia towarów np:. w formacie jpg z nazwami plików tak jak kody w kartotece np:. Atlas 14 silnik.jpg itd ...
3. Raporty → Kartoteki → Raporty z menu → Towary utwórz nowy raport o nazwie "Pokaż zdjęcie"
4. Wklej do niego nastepujący kod
Kod:
int iPos = SetTaggedPos(FS)

baseTW tw
tw.GetRecById( GetLineId(iPos))

ShellExecute( KatalogFirmy() + "zdjecia\\" + tw.GetField("kod") + ".jpg", "OPEN" )

NoOutput()


Od tej pory masz dostepną funkcję "Pokaż zdjęcie" pod prawym klawiszem myszy w kartotece towarów. Zdjęcie będzie otwierane w domysnym programie zarejestrowanym dla wybranego typu jpg, bmp itp.

[center]Obrazek [/center]

Autor:  mnat [ 2008-11-21, 14:14 ]
Tytuł: 

ewentualnie można zrobić swojego ocx/dispatch, który będzie integralną częścią symfonii i u każdego klienta będzie wyglądał w ten sam sposób niezależnie od domyślnych przeglądarek jpeg'ów

Autor:  Benji_Pete [ 2009-02-28, 13:34 ]
Tytuł: 

a jak zadeklarować taką kontrolkę OCX i się nią posługiwać. Z poleceniem Control jakoś mi nie wychodzi. Poniżej fragment z helpa:

Polecenie umieszcza w oknie dialogowym kontrolkę OCX. Możliwe jest sterowanie działaniem kontroli oraz odczyt generowanych przez nią zdarzeń.

Polecenie jest zasadniczo przeznaczone do współpracy z kontrolkami Symfonii. Niektórych z istniejących w systemie kontrolek OCX nie da się umieścić w oknie dialogowym przy pomocy tego polecenia.

Składnia
Int Control String nOCX, Dispatch ctrl, Int x0, Int y0, Int dx, Int dy
Argumenty

String nOCX Nazwa kontrolki. Może to być nazwa predefiniowana w programie: "grid”, "edit" lub nazwa pod jaką kontrolka jest zarejestrowana w systemie np. "MXGRID.MXGridCtrl.1”.
Dispatch ctrl Nazwa zmiennej utworzonej w celu przechowywania obiektu kontrolki.
Int x0 Odległość lewej krawędzi pola kontrolki od lewej krawędzi okna dialogowego, liczona w pikselach.
Int y0 Odległość górnej krawędzi pola kontrolki od górnej krawędzi okna dialogowego, liczona w pikselach.
Int dx Szerokość pola kontrolki, liczona w pikselach.
Int dy Wysokość pola kontrolki, liczona w pikselach.
Wartość zwracana
Identyfikator kontrolki.

Autor:  piotrek693 [ 2009-03-19, 13:48 ]
Tytuł: 

faktycznie bardzo przydatna rzecz. Ciekaw jestem jak można coś takiego zrobić dla Handlu Forte?

Autor:  Benji_Pete [ 2009-03-19, 18:28 ]
Tytuł: 

No właśnie. To byłoby coś. Ciekawe jakich się nie da (bo piszą, że jest przeznaczone do pracy z kontrolkami Symfonii i niektórych się nie da) i jak podać tę nazwę.

Może ktoś ma doświadczenia w tym temacie?

Pozdro.

Autor:  rafal [ 2009-03-19, 23:12 ]
Tytuł: 

Kontrolka MxGrid dostarczana razem z Symfonią jest dobrym przykładem.
Potestujcie z innymi.

Kod:
dispatch dGrid

FORM "Test MxGrid", 200,400

    CONTROL "MXGRID.MXGridCtrl.1",dGrid, 5,5,185,365
   
int rv = ExecForm( OnCommand )

Autor:  mnat [ 2009-04-06, 10:32 ]
Tytuł: 

Też byłem ciekawy jak można takie coś zrobić i grzebałem, szukałem, aż w końcu zrobiłem.
Pełny .Net do dyspozycji w połączeniu z czymkolwiek z Sage co obsługuje polecenie control.

Technologia jest na tyle sprawdzona, że ruszyła do produkcji.

Jeden minus kontrolek .NET stosowanych w ambasic to obciążenie procesora, ale to już raczej nie wina net'a tylko sposobu w jaki sage wywołuje takie kontrolki.

A szczegóły tego można zobaczyć na forum wlasne kontrolki w AmBasic

Autor:  rafal [ 2009-04-06, 10:56 ]
Tytuł: 

podzielisz się efektem swojej pracy? Może załączysz jakiś przykład jak to robić?

Autor:  Benji_Pete [ 2009-04-07, 19:08 ]
Tytuł: 

Problem jest z wpisaniem nazwy (parametru) w AmBasic. Może ktoś poda przykład deklaracji takiej kontrolki - innej niż z Symfonii (np. MxGrid).

Autor:  mnat [ 2009-04-07, 22:53 ]
Tytuł: 

Benji_Pete co Ty się tak uparłeś na tego AmBasica? Źle projektujesz w .NET (o ile projektujesz a nie korzystasz z gotowych bibliotek)
Niektórych kontrolek faktycznie się nie da, bo nie są przygotowane z myślą o działaniu z Symfonią, Excellem czy InternetExplorerem (ActiveX)

Nie ma za bardzo kiedy tego przygotować ale proszę:
Kod:
dispatch xDsp

int sub PokazJpeg()
   xDsp.ShowPicture("C:\\test.jpg")
endsub

form "hmpLib", 300, 200
   control "hmpLib.JpegBrowser", xDsp, 10, 10, 300, 90
   button "Pokaż jpeg'a z funkcji w AmBasic", 10, 100, 270, 24, PokazJpeg()
execform

error ""


Kod wywołania kontrolki który umieścił rafal jest jak najbardziej w porządku.

Chodzi tutaj o nazwę biblioteki i wewnętrzne nazwy metod, a dokładnie tak jak pisałem w innym poście o parametry InteropServices.

Dokładnie mówiąc po znaczniku 'control' wpisujesz to co masz w projekcie kontrolki w atrybutach InteropServices, a konkretnie atrybut 'ProgId'

Gdyby ktoś jeszcze nie wierzył, to w załączeniu dll (trzeba wcześniej zarejestrować w systemie!) a jego użycie jw.

Metoda xDsp.ShowPicture wywołuje całą formatkę z .NET'a, a control "hmpLib.JpegBrowser" ładuje na formę z AmBasica tylko kontrolkę z biblioteki.

To co jest w załączeniu testowałem na HMP 2008A i 2009C.
Działa bez najmniejszych problemów.

Załączniki:
Komentarz: Biblioteka z kontrolką
hmpLib.zip [3.99 KiB]
Pobrany 481 razy

Autor:  Hubcia [ 2010-06-29, 09:21 ]
Tytuł: 

W jaki sposób połączyć to:

rafal pisze:
Aby wyswietlić zdjęcie towaru z poziomu kartoteki najprościej :
1. utwórz katalog "zdjęcia" w katalogu z danymi towaru
2. skopiuj tam zdjęcia towarów np:. w formacie jpg z nazwami plików tak jak kody w kartotece np:. Atlas 14 silnik.jpg itd ...
3. Raporty → Kartoteki → Raporty z menu → Towary utwórz nowy raport o nazwie "Pokaż zdjęcie"
4. Wklej do niego nastepujący kod
Kod:
int iPos = SetTaggedPos(FS)

baseTW tw
tw.GetRecById( GetLineId(iPos))

ShellExecute( KatalogFirmy() + "zdjecia\" + tw.GetField("kod") + ".jpg", "OPEN" )

NoOutput()



Z tym:
rafal pisze:
Kontrolka MxGrid dostarczana razem z Symfonią jest dobrym przykładem.
Potestujcie z innymi.

Kod:
dispatch dGrid

FORM "Test MxGrid", 200,400

    CONTROL "MXGRID.MXGridCtrl.1",dGrid, 5,5,185,365
   
int rv = ExecForm( OnCommand )


lub z tym:

mnat pisze:
Nie ma za bardzo kiedy tego przygotować ale proszę:
Kod:
dispatch xDsp

int sub PokazJpeg()
   xDsp.ShowPicture("C:\\test.jpg")
endsub

form "hmpLib", 300, 200
   control "hmpLib.JpegBrowser", xDsp, 10, 10, 300, 90
   button "Pokaż jpeg'a z funkcji w AmBasic", 10, 100, 270, 24, PokazJpeg()
execform

error ""



I jeszcze taka sprawa: jeżeli mam trzy kody w kartotece towarów różniące się tylko ostatnią literą (np. CA325/G, CA325/P, CA325/RAD) jak zrobić, żeby wrzucić tylko jedno zdjęcie i pokazało się ono we wszystkich trzech towarach. Albo, żeby to: tw.GetField("kod") polecenie brało pod uwagę kod tylko do "/".

Aha jeszcze jedno: czy jest równie prosty sposób, aby zdjęcie pokazywało się jako miniaturka w formatce towaru?

Autor:  daniel [ 2010-06-29, 11:59 ]
Tytuł: 

Cytuj:
dispatch dGrid

FORM "Test MxGrid", 200,400

CONTROL "MXGRID.MXGridCtrl.1",dGrid, 5,5,185,365

int rv = ExecForm( OnCommand )
Kod:

Po kolei:
dispatch dGrid = przygotowanie zmiennej, która będzie wskazywać na naszego grida
FORM "Test MxGrid", 200,400 = przygotowanie formatki, na której położony będzie grid
CONTROL "MXGRID.MXGridCtrl.1",dGrid, 5,5,185,365 = zainicjowanie wizualnej kontrolki, która jest klasy MXGridCtrl z modułu MXGRID i przypisanie jej do zmiennej dGrid.
Moduł z gridem jest domyślnie dostępny po instalacji Symfonii.
int rv = ExecForm( OnCommand ) = wywołanie formatki na ekran

Odnośnie Twojego problemu z kodami towarów, musisz sprawdzić, czy kod towaru zawiera znak "/" i pobrać pierwszą część kodu, aby wyświetlić odpowiedni plik.
Najprościej będzie to zrobić przy użyciu polecenia find regular.

Miniaturka w formatce towaru - nie wydaje mi się. Aż tak daleko nie możemy ingerować w wygląd aplikacji Symfonii.


Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/