Aplikacja do obliczeń inżynierskich - jaka platforma?

Odpowiedz Nowy wątek
2019-10-10 00:55
0

Witam,

chciałbym stworzyć stosunkowo prostą aplikację mobilną do obliczeń inżynierskich. Nigdy wcześniej nie pisałem aplikacji, więc proszę o poradę. Aplikacja ma działać w ten sposób, że po dotknięciu jednego z 3 dużych przycisków pojawia się kolejnych kilka przycisków do wyboru. Wybranie któregoś przenosi na ostatni ekran wyboru, gdzie dostępnych jest jeszcze więcej przycisków (tym razem z obrazkami oprócz tekstu). Po dotknięciu jednego przechodzi się do ekranu ze statycznym obrazkiem i kilkoma podpisanymi polami, w które należy wpisać wartości. Dodatkowo w niektórych przypadkach będzie można zaznaczyć okienko wyboru. Następnie użytkownik musi kliknąć przycisk uruchamiający obliczenia. W tym momencie aplikacja powinna podstawić wpisane wartości do 2 zaprogramowanych dla wybranego przypadku wzorów (wzory dosyć rozbudowane) i wyświetlić wyniki.

Aplikacji nie chcę sprzedawać, ma służyć tylko do własnego użytku. W związku z tym pytanie brzmi jakiej platformy najlepiej użyć. Co będzie w tym przypadku lepsze - iOS czy Android ? A może zacząć od programu komputerowego np. w Visual Basic ? Najbardziej użyteczny dla mnie byłby iOS, ale czytałem, że tam trzeba publikować aplikacje i w związku z tym liczyć się z pewnymi utrudnieniami. Tymczasem ja bym chciał tylko stworzyć plik aplikacji, który mógłbym wysłać na mój telefon, zainstalować i korzystać. Jeśli Android też na to nie pozwala to może lepiej będzie zostać przy programie komputerowym (tylko w jakim języku ?). Tym bardziej, że przy aplikacjach mobilnych pewnie występuje problem kompatybilności z nowymi wersjami systemu. Zaktualizują mi iOS/Android i aplikacja przestanie działać. Czegoś takiego chciałbym uniknąć.

Z góry dziękuję za pomoc

Pozostało 580 znaków

2019-10-10 21:18
1

No chyba że da się wyeksportować pliki (.exe czy coś) tak by program mógł działać niezależnie od środowiska Delphi. Wtedy jeszcze pół biedy, bo wysiłek nie pójdzie na marne (program sam w sobie ma być prosty, ale będę musiał do niego wprowadzić bardzo dużo przypadków i wzorów, także czeka mnie trochę pracy).

Tak, program nie będzie musiał działać z Delphi - piszesz go i już masz. Jest twój, działa wszędzie. Ale gdy chcesz zmienić swój program i dodać coś do niego to Delphi i tak ci potrzebne aby wygenerować nową wersję.

A gdybym chciał zacząć od desktopowej to oprócz Delphi jest coś jeszcze wartego uwagi ? Zależy mi właśnie na łatwości tworzenia GUI (żebym nie musiał tydzień walczyć nad przyciskiem z grafiką), ale i stosunkowo prostym kodzie umożliwiającym łatwą implementację wzorów.

C# + WinForms + Visual Studio. Też graficzny edytor komponentów metodą przeciągnij i upuść, też środowisko darmowe (z pewnymi ograniczeniami wersji darmowej takimi jak niemożność użycia w firmie zarabiającej powyżej 1 mln dolarów), i o wiele wiele większa społeczność ludzi, którzy tego używają.

(a po pewnym czasie można przerobić aplikację na Xamarina - czyli zmienić całą warstwę interfejsu użytkownika, ale zachowując wszystko inne - i ją zbudować dla Androida i iOS)

Polecanie Xamarina to chyba tylko komuś, kogo się bardzo nie lubi. Co do reszty, oczywiście że lepiej w C# i WinForms, niż w Delphi i tu nie ma w ogóle dyskusji - Meini 2019-10-11 12:46

Pozostało 580 znaków

2019-10-11 18:19
0

A powiedzcie mi jeszcze proszę - czy w Delphi da się zrobić tak żeby kliknięcie przycisku powodowało przejście do innego ekranu (każdy przycisk prowadzi do innego ekranu) ? Nie chodzi o otwarcie nowego okna Windowsowego (to zdaje się określane jest jako "form" w Delphi) tylko pracę w tym samym oknie, ale z innym interfejsem. Pytam, bo to będzie główna cecha mojego programu i od tego będę musiał zacząć jego pisanie. Jeśli da się tak zrobić to gdzie mogę znaleźć tę opcję i najlepiej też jakiś jej krótki opis ?

Pozostało 580 znaków

2019-10-11 21:37
1

Tak na szybko to mi przychodzi do głowy TPageControl ale z ukrytymi tymi zakładkami na górze. Teraz nie mogę tego sprawdzić, ale coś mi świta, że kiedyś coś takiego robiłem. A przełączanie pomiędzy kartami robisz w obsłudze wciśnięć przycisków, o których pisałeś przed chwilą.

EDIT
Znalazłem chwilę i sprawdziłem. Standardowo po dodaniu kart, TPageControl wygląda tak:
screenshot-20191011215140.png

Ale można ukryć poszczególne karty - wybierasz karty do ukrycia:
screenshot-20191011215233.png

i w inspektorze zmieniasz wartość TabVisible na FALSE:
screenshot-20191011215322.png

W efekcie dostajemy coś takiego:
screenshot-20191011215349.png
Czyli jak widać, karta numer 2 stała się niewidoczna.

Ukrycie kart można tez zrobić z poziomu kodu:

for page := 0 to PageControl1.PageCount - 1 do
  PageControl1.Pages[page].TabVisible := false;

A samą zmianę aktywnej karty można zrobić na dwa sposoby: albo wskazując jej pozycję (pierwsza linia w poniższym kodzie), albo wskazując ją bezpośrednio (linia druga).

PageControl1.ActivePageIndex := 1;
PageControl1.ActivePage := TabSheet1;

Jest jeszcze opcja przełączania na kolejną/poprzednią kartę, bez uwzględniania tego, jaki numer posiada aktualnie wyświetlana:

Form1.PageControl1.SelectNextPage(TRUE, FALSE);

Pierwszy parametr oznacza kierunek - TRUE przesuwa do przodu, FALSE do tyłu. Drugi natomiast odpowiada za sprawdzanie, czy dana karta (a właściwie to zakładka - czyli to, co ukrywaliśmy przez zmianę wartości TabVisible) jest widoczna. Jeśli ustawimy na TRUE, to będzie przełączać jedynie między widocznymi kartami, dlatego w naszym przypadku lepiej jest dać FALSE. Ciekawostka - po dojściu do skrajnej karty, dalsze przełączanie powoduje przeskok na drugą stronę, czyli kolejną kartą po ostatniej jest pierwsza (oczywiście, działa to w obie strony).


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 3x, ostatnio: cerrato, 2019-10-11 22:19
@furious programming: czy nie powinniśmy tego przenieść do Delphi i Pascal ? Jak sądzisz? - cerrato 2019-10-11 21:58
Pierwotne pytania nie dotyczyły Delphi (po tagach też nie pozna), więc niech zostanie tutaj. - furious programming 2019-10-12 03:05
A ten bałagan to przez to, że autor nie mógł się zdecydować, czy w końcu chce aplikację na telefon, czy na desktop. Niech się może zadeklaruje ostatecznie i założy nowy wątek w przypadku problemów, gdy takie napotka pisząc już aplikację - Meini 2019-10-12 12:21
@furious programming: przydałaby się, oprócz opcji "połącz z poprzednim" jeszcze druga - wydziel do osobnego wątku. @Adam Boduch - co Ty na to? - cerrato 2019-10-12 14:57
To też było już omawiane. :d - furious programming 2019-10-12 19:54
No to chyba nie za czasów mojej kadencji ;) Ale skoro temat był poruszany, a teraz ja na niego wpadłem niezależnie od wcześniejszych rozmów, to oznacza, że taka funkcjonalność by się ewidentnie przydała. - cerrato 2019-10-12 20:35

Pozostało 580 znaków

2019-10-30 07:40
0

Minęły 3 tygodnie - czy coś się w sprawie ruszyło? Coś piszesz? Jaka technologię wybrałeś? Dajesz radę? ;)


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

Pozostało 580 znaków

2019-10-30 22:30
0

Szczerze mówiąc nie miałem na razie czasu się tym zająć i musiałem odłożyć temat. Problem głównie w tym, że program będzie musiał mieć bardzo dużo (dziesiątki jak nie więcej) takich okien z innym interfejsem, na które przełącza się przyciskiem. Patent z ukrywaniem kart może się okazać trudny w realizacji dla tylu okien i będzie się łatwo w nich pogubić.

Poza tym program będzie musiał mieć kilka specyficznych cech, takich jak obrazki, pola wyboru itp. Wszystko to będą powtarzalne rzeczy, więc w zasadzie wystarczy przygotować program dla 1 przypadku (pierwsze okno z 1 przyciskiem prowadzącym do drugiego okna z 1 przyciskiem prowadzącym do kolejnego okna z 1 przyciskiem z obrazkiem prowadzącym do okna z obrazkiem w tle, polami do wpisywania danych, polami wyboru i przyciskiem uruchamiającym obliczenia z wpisanego wzoru, których wyniki są potem wyświetlane).
Mogę to przedstawić na prostym schemacie z Painta jeśli opis jest niejasny.

Tak myślę, że chyba najchętniej zleciłbym komuś przygotowanie szkieletu programu (dla tego 1 przypadku jak opisałem wyżej) a sam dodał kolejne przypadki i zadbał o część inżynierską.

edytowany 1x, ostatnio: EngProg, 2019-10-30 22:31

Pozostało 580 znaków

2019-10-30 22:36
0

Szkic zawsze może rzucić nowe światło na temat ;)

A co do dziesiątek okienek/zakładek - na pewno da się to jakoś obejść. Poza tym można je tworzyć dynamicznie podczas pracy aplikacji. Oczywiście - nie znając szczegółów to ciężko jest mi jednoznacznie coś doradzić, ale pewnie jak coś więcej powiesz, to uda się coś wyczarować wspólnie ;)


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

Pozostało 580 znaków

2019-10-31 00:08
0

Załączam schemat (Solving app) pokazujący jak ten program miałby wyglądać (tych przycisków w oknie ostatniego poziomu na pewno będzie więcej). Na dole jest przycisk pozwalający wrócić do poprzedniego okna. Problem w tym, że tych okien musi być naprawdę dużo. Np. jeśli w menu głównym klikniemy przycisk OPTION 2 to pojawi się inny zestaw okien niż gdy klikniemy tam OPTION 1. Ten zestaw okien będzie prowadził do kolejnego itd. Czyli całość ma strukturę drzewa. To pokazuje drugi załącznik (option tree). Oczywiście tam będą różne opcje, tylko nazwałem je tak powtarzalnie dla uproszczenia. No i musi ich być znacznie więcej.

edytowany 1x, ostatnio: EngProg, 2019-10-31 00:09

Pozostało 580 znaków

2019-10-31 10:04
0

Ale zauważ, że (przynajmniej tak to wygląda z Twoich rysunków) - schemat jest taki sam (albo bardzo zbliżony) dla wszystkich opcji.

Wybierasz "Opcja 1" i pojawiają Ci się "option 1" i "option 2", z czego każda z nich ma znowu dwie subopcje. Więc tak naprawdę to układ/logika przechodzenia przez ekrany będzie z grubsza stała, a jedynie będzie się różnić treściami - np. jeśli najpierw wybierzesz "okrąg" to na późniejszym etapie będzie Cię pytać o średnicę, a w przypadku trójkąta - o długość przeciwprostokątnej ;)

Tak samo obrazki, które chcesz wstawiać - tworzysz sobie układ z miejscem na obrazek, a potem wstawiasz odpowiednią grafikę, w zależności od tego, jakie wybory zostały dokonane wcześniej.


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 2x, ostatnio: cerrato, 2019-10-31 10:05

Pozostało 580 znaków

2019-10-31 10:46
0

Dla pełnej jasności, na bliższym mi przykładzie z fizyki klasycznej można to też tak przedstawić:

  • w pierwszym oknie jest do wyboru mechanika, termodynamika, elektromagnetyzm, optyka:
  • po wybraniu mechaniki przechodzi się do okna, w którym do wyboru jest mechanika płynów i mechanika ciał stałych; po wybraniu tej drugiej przechodzi się do okna z wyborem statyki, kinematyki lub dynamiki; po wybraniu statyki pojawia się okno z zagadnieniami: belki, kratownice, tarcie; po wybraniu kratownic trzeba wybrać jeden z przypadków, dalej podaje się wymiary i siły a program liczy reakcje
  • jeśli zamiast mechaniki wybierze się elektromagnetyzm to kolejne okno pozwala na wybór: prąd elektryczny, pole magnetyczne lub indukcja elektromagnetyczna; po wybraniu prądu elektrycznego kolejnego okno zawiera przyciski: prawo Ohma, prawo Kirchhoffa, prawo Joule’a; wybranie prawa Kirchhoffa powoduje przejście do przypadków obwodów, gdzie można obliczyć prądy dla danego przykładu

Realizacja tego schematu na ukrywanych kartach wydaje się trudna, bo do każdego okna musiałaby być osobna karta (każde okno ma inne przyciski).

Pozostało 580 znaków

2019-10-31 10:53
0

No to można zrobić np. nowe okno wyskakujące. Czyli masz główne okno, na którym masz możliwość dokonania wyboru pierwszego stopnia, a następnie wyskakuje nowe okienko, które już jest dopasowane do danego zagadnienia. Tutaj już ilość kart znacznie spada ;)


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

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