Program na dwóch ekranach oprócz jednego okna

Odpowiedz Nowy wątek
2019-07-09 13:51
2

Robię program który będzie pokazywany różnym klientom.
Ale klient nie powinien widzieć, jakich klientów mam w bazie programu.
I tu pytanie:
Jak zrobić aby program działał równocześnie na dwóch ekranach (na komputerze operatora i na ekranie na który patrzą klienci).ale okienko wyboru klientów pokazać tylko na ekranie u operatora
Jest takie coś możliwe?

Pozostało 580 znaków

2019-07-09 14:01
3

Klasa Tscreen posiada Screen.MonitorCount, który zwraca ilość monitorów.

Następnie możesz zrobić coś w stylu

Form1.Monitor:= Screen.Monitors[1];

Ustawiasz sobie tą właściwość osobno dla okna głównego (widocznego dla operatora) oraz dla klienta. Czyli - przykładowo, główne okno dajesz na monitor numer 1, a okno klienckie na monitor 2. Zainteresuj się także właściwością formatki o nazwie DefaultMonitor.

http://docwiki.embarcadero.co[...]io/Rio/en/Handling_the_Screen
https://4programmers.net/Foru[...]a_na_wielu_ekranach?p=1034194
http://www.delphigroups.info/2/df/74296.html
http://docwiki.embarcadero.co[...]en/Vcl.Forms.TScreen.Monitors


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
edytowany 1x, ostatnio: cerrato, 2019-07-09 14:04
W Delphi właściwość Form1.Monitor jest read only i tak nie przypiszesz. - PrzemysławWiśniewski 2019-07-09 19:04
Słuszna uwaga. Dawno się tym nie bawiłem i pisałem z pamięci. Za to można skorzystać z czegoś innego - http://docwiki.embarcadero.co[...].TCustomForm.MakeFullyVisible - cerrato 2019-07-09 20:13

Pozostało 580 znaków

2019-07-09 14:32
2

Rozumiem co masz na myśli.
Ale problem w tym, że główne okno ma być wyświetlone jednocześnie na obu ekranach (jak w trybie kopiowania pulpitu).
Chyba że mam zrobić zrobić główne okno w dwóch kopiach?
Ale i tak muszę obsługiwać wszystkie zdarzenia na obu jednocześnie.

edytowany 1x, ostatnio: My Razem, 2019-07-09 14:34

Pozostało 580 znaków

2019-07-09 14:35
2

Nie kojarzę, żeby dało się TO SAMO okno jednocześnie wyświetlić na dwóch ekranach, a do tego jeszcze żeby treść okna mogła być odmienna na każdym z monitorów. Moim zdaniem (jeśli ktoś zna jakiś patent jak to zrobić - sam się chętnie czegoś dowiem) musisz mieć dwa osobne okienka, które będziesz niezależnie obsługiwać, zapełniać treścią itp.


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
edytowany 1x, ostatnio: cerrato, 2019-07-09 16:13
Da się oczywiście wyświetlić to samo okno na dwóch ekranach. Pod warunkiem, że jest tak duże, iż jest widoczne na obu ekranach ;-) - wloochacz 2019-07-10 10:44
Słuszna uwaga, aczkolwiek chyba nie do końca o to pytającemu chodziło ;) - cerrato 2019-07-10 10:45
Ale wiesz, takie jedno wielkie okno może mieć na sobie inne kontenery (tj. okna lub ramki, panele, itd.) i wyświetlać w danym obszarze (tj. na oknie) dane wrażliwe. Ale to naprawdę jest kiepski pomysł, ale realny ;-) Nie takie już cuda w kodzie widziałem :P - wloochacz 2019-07-10 10:50
Wszystko się da, ale tak, jak piszesz - będzie z tym więcej zamieszania, niż stworzenie dwóch osobnych okien, albo (jak piszesz poniżej) dwóch instancji tego samego. Tylko w przypadku instancji i tak trzeba będzie jakoś ogarnąć temat ukrycia pewnych treści przed klientem, więc raczej się skłaniałbym się ku stworzeniu dwóch niezależnych klas oraz jednego kontrolera, który będzie je zapełniał treścią. - cerrato 2019-07-10 10:52
Jedna klasa, rożne kontrolery (code injection!), jeden model. - wloochacz 2019-07-10 11:17

Pozostało 580 znaków

2019-07-09 16:04
2

musisz to sobie sam napisać - możesz to samo okno stworzyć dwa razy ale całą logikę uzupełniania okna "dla klientów" danymi z okna "dla operatora" musisz dopisać sam


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2019-07-09 18:42
5
My Razem napisał(a):

Ale klient nie powinien widzieć, jakich klientów mam w bazie programu.

My Razem napisał(a):

Ale problem w tym, że główne okno ma być wyświetlone jednocześnie na obu ekranach (jak w trybie kopiowania pulpitu).

Czegoś tu nie rozumiem – skoro klienci nie mogą widzieć pewnych danych, to po co chcesz duplikować formularz na dwa ekrany, swój i ten dla klientów? Przecież jedno wyklucza drugie. :/


Jeśli chesz aby okno z taką samą zawartością było wyświetlane na dwóch ekranach, to utwórz dwie instancje tego okna i wyświetl oba, na różnych ekranach. Do tego celu skorzystaj z zawartości obiektu Screen – znajdziesz tam wszystko co dotyczy pulpitu, obszaru roboczego i ekranów. Tylko jeśli modyfikacja danych w jednym oknie ma być widoczna również w drugim, to rób to w jakimś kontrolerze, który po zmodyfikowaniu danych odświeży widok obu formularzy.

Natomiast jeśli klient ma widzieć nieco ”uboższe” okienko w stosunku do tego dla Ciebie, to utwórz okna z różną zawartością (może nawet na bazie frame'ów) i pewne dane wyświetl tylko na tym okienku, którego ma klient nie widzieć. No i to samo zrób, jeśli chodzi o aktualizację danych.


edytowany 2x, ostatnio: furious programming, 2019-07-09 18:43

Pozostało 580 znaków

2019-07-10 09:41
0

Nic się nie wyklucza.
Gdy przychodzi klient to ja na swoim ekranie szukam go na liście i dalej klient ma widzieć możliwości programu i wszystkie dane które dotyczą tylko tego jednego klienta..
Ale mam już jakieś pomysły jak można to zrobić.

edytowany 1x, ostatnio: My Razem, 2019-07-10 09:41

Pozostało 580 znaków

2019-07-10 10:48
0
My Razem napisał(a):

Rozumiem co masz na myśli.
Ale problem w tym, że główne okno ma być wyświetlone jednocześnie na obu ekranach (jak w trybie kopiowania pulpitu).
Chyba że mam zrobić zrobić główne okno w dwóch kopiach?

Tak, oczywiście.

Ale i tak muszę obsługiwać wszystkie zdarzenia na obu jednocześnie.

Nic nie musisz, poza zrozumieniem różnicy pomiędzy klasą a obiektem.
Powołujesz do życia dwie instancje klasy (czyli obiektu). Jedna leci na inny ekran, a oba okna są zarządzane dokładnie przez ten sam kod.
Oczywiście nic nie stoi na przeszkodzie, aby dodatkowy lub inny kod wstrzyknąć do konkretnej instancji w run-time.
Nie widzę problemu...

Pozostało 580 znaków

2019-07-10 10:59
1

Proponował bym zrobić obiekt, który robi logikę. Dajmy na to, że ma to być program do obsługi np. zamówienia - klient patrzy na listę zamówien, a operator wklepuje kolejne. Okno służy tylko do uruchamiania funkcji api obiektu logiki, oraz pobierania z niego danych. Okno klienta przedstawia się w trybie K, a operatora w trybie O. Wtedy obiekt zwraca dane do których O lub K ma prawo. Co więcej okna te rejestrują się jako obserwatorzy tegoż obiektu więc jak coś zmienisz u siebie to zmieni się też na oknie klienta (musisz oprogramować obsługe tego).

Jeśli chodzi o same dane a nie to, że klient ma widzieć jak otwierasz combo, wpisujesz w calcedit kwoty etc. to starczy żeby okno się wyswietlało klientowi i było zbindowane do bazy danych i edytując ten sam dokument, klient widzi to samo co ty (tylko trzeba zadbac o refresh okna), a jest to prostsze i prawie ootb .

Pozostało 580 znaków

2019-07-10 11:01
0

Chyba nie kumam pytania. Operator i klient mają takie same opcje oprócz listy klientów? Masz jakiś system logowani czy każdy kto ma program może wprowadzać zmiany?

Pozostało 580 znaków

2019-07-10 11:03
0

Bardziej to operator chodzi po apcke a klient patrzy - np. czy zamówienie się zgadza, ale nie szukając jego danych - nie chcemy pokazywać jakich innych klientów mamy - bądź co bądź może to być tajemnica handlowa.

może to być tajemnica handlowa są większe zagrożenia. Patrz: RODO ;) - cerrato 2019-07-10 11:10
RODO nie dotyczy podmiotów handlowych. Jeśli jesteś klienta gościa A, gość B kupuje od Ciebie towar C, i teraz B przyjdzie do Ciebie i zobaczy, że A też u Ciebie kupuje może to spowodować, że będzie B chciał wyciągnąć u Ciebie towar C za taką kwotę jak dla A lub zażąda od Ciebie rabatu. Generalnie śliskie tematy ;) - somedev 2019-07-10 11:17
RODO nie dotyczy podmiotów handlowych - nie zgodzę się. Zwłaszcza w przypadku JDG - tutaj trochę ustawodawca dał ciała. Poza tym nie jest powiedziane, że w tym konkretnym przypadku klientem nie może być osoba prywatna. Ponadto - podmiotów prawa handlowego RODO rzeczywiście nie dotyczy, ale już Moniki z działu handlowego spółki, która się na liście klientów może wyświetlić, jak najbardziej. - cerrato 2019-07-10 11:21
Monika tak. Chrońmy Monikę i jej dane. Niemniej kartoteka klientów pewnie będzie zawierała klientów jak "Urbex sp. z o.o." czy "Skanska", a nie dane fizyczne osób. Przynajmniej nie spotkałem się z listą klientów (ofc b2b), gdzie były by dane osobowe pracowników w kartotece klientów. - somedev 2019-07-10 11:23
Ale nigdzie nie jest powiedziane, że będą to klienci B2B. Równie dobrze może to być jakaś placówka sprzedaży detalicznej, np. komis GSM albo gastronomia - cerrato 2019-07-10 12:04

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0