|
|
Strona 1 z 1
|
[ Posty: 14 ] |
|
Autor |
Wiadomość |
klesta
Rejestracja: 2008-09-05, 11:06 Posty: 29
|
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 :)
|
2008-11-07, 11:59 |
|
|
Autor |
Wiadomość |
Mix-soft.pl
|
|
|
klesta
Rejestracja: 2008-09-05, 11:06 Posty: 29
|
zapomniałem dodać, że chodzi o Symfonię Premium :)
|
2008-11-07, 16:21 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
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] [/center]
|
2008-11-07, 20:30 |
|
|
mnat
Rejestracja: 2008-04-10, 09:34 Posty: 24
|
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
|
2008-11-21, 14:14 |
|
|
Benji_Pete
Rejestracja: 2008-06-03, 12:18 Posty: 106
|
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.
|
2009-02-28, 13:34 |
|
|
piotrek693
Rejestracja: 2009-03-17, 15:25 Posty: 18 Pomógł: 2
|
faktycznie bardzo przydatna rzecz. Ciekaw jestem jak można coś takiego zrobić dla Handlu Forte?
|
2009-03-19, 13:48 |
|
|
Benji_Pete
Rejestracja: 2008-06-03, 12:18 Posty: 106
|
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.
|
2009-03-19, 18:28 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
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 )
|
2009-03-19, 23:12 |
|
|
mnat
Rejestracja: 2008-04-10, 09:34 Posty: 24
|
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
|
2009-04-06, 10:32 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
podzielisz się efektem swojej pracy? Może załączysz jakiś przykład jak to robić?
|
2009-04-06, 10:56 |
|
|
Benji_Pete
Rejestracja: 2008-06-03, 12:18 Posty: 106
|
Problem jest z wpisaniem nazwy (parametru) w AmBasic. Może ktoś poda przykład deklaracji takiej kontrolki - innej niż z Symfonii (np. MxGrid).
|
2009-04-07, 19:08 |
|
|
mnat
Rejestracja: 2008-04-10, 09:34 Posty: 24
|
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 482 razy
|
2009-04-07, 22:53 |
|
|
Hubcia
Rejestracja: 2010-06-28, 10:04 Posty: 12
|
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?
|
2010-06-29, 09:21 |
|
|
daniel
Rejestracja: 2009-11-02, 11:47 Posty: 8
|
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.
|
2010-06-29, 11:59 |
|
|
|
Strona 1 z 1
|
[ Posty: 14 ] |
|
Kto jest online |
Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 18 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
|
|
|
|