[Borland C++ Builder 6] Program obliczeniowy - problemy

dział ogólny

[Borland C++ Builder 6] Program obliczeniowy - problemy

Nowy postprzez Raffallo » środa, 22 marca 2017, 18:48

Witam wszystkich serdecznie!
Zastanawiałem się czy zrobić kilka oddzielnych tematów poruszających poszczególne problemy, ale zdecydowałem iż zamieszczę wszystko w jednym temacie. Powodem podjętej decyzji jest głownie to, że być może znając cały zamysł programu i wszystkie aspekty mi potrzebne, ktoś może zaproponować nieco inne rozwiązanie niektórych problemów.

Na wstępie chciałbym jeszcze napisać, że nie należę do znawców języka C++, znam jedynie podstawy i elementy, który były mi potrzebne do pisania poprzednich (prostych, obliczeniowych) programów. Napisałem wcześniej kilka programików okienkowych w Code::Blocks i z jeden w Borlandzie. Były to programy do własnego użytku, więc nie wszystko musiało działać jak należy, ponieważ ja sam wiedziałem jak zrobić by było dobrze :) Tym razem będę pracował nad nieco poważniejszym programem (praca inżynierska), więc wypadałoby żeby wszystko działało i wyglądało jak należy :)

Opiszę nieco działanie programu, a następnie przejdę po kolei do każdego z problemów, które wiem, że bedę miał już na samym etapie rozplanowywania aplikacji. Jak napisałem w tytule program będzie obliczeniowy, a więc jego schemat działania również nie będzie skomplikowany : wybranie obliczenia - > wprowadzenie danych -> sprawdzenie danych (kompletność, poprawność) -> wykonanie obliczeń -> wyświetlenie wyników + narysowanie szkicu na podstawie wyników -> export wyników i obrazka (najlepiej plik graficzny + rft).
Program będzie poruszał obliczenia z 3 różnych zakresów, więc na początku trzeba dać użytkownikowi możliwość wyboru obliczenia, a następnie przekierować do odpowiednich formuł z możliwością wprowadzania / importu danych i przeprowadzenia obliczeń.

Problemy:

1. W związku z tym, iż program dotyczy 3 niezależnych obliczeń potrzebna jest możliwość przekierowywania użytkownika do odpowiednich formularzy po wybraniu obliczenia. Niestety po zastanawianiu się nad tym nie wiem jak to wykonać w Borland C++ Builder 6. Do wyświetlenia danych/wyników/obrazka planuję użyć PageControl i w każdym z TabSheet dać po jednym z elementów (wprowadzanie danych, wyniki, rysunek).
Pisząc ten post wpadłem na pomysł umieszczenia 4 PageControlów w całym programie (3 z obliczeniami, z początku ukryte, a ten czwarty z wyborem obliczeń itp) i po prostu "przełączanie" pomiędzy nimi za pomocą visible. Ma to rację bytu czy lepiej spróbować czegoś innego?

2. Mam wybór obliczeń, teraz przyszedł czas na wprowadzenie danych. Do tego zadania pomyślałem o użyciu StringGrid. Największym problemem (tak myślę), będzie konwersja wpisanych danych przez użytkownika na liczby oraz kontrolowanie, żeby w żadnym miejscu nie pojawiły się litery, bo inaczej program się wysypie przy obliczeniach. Dobrze byłoby też nie pogubić żadnych "końcówek liczb". Fajnie jak by była możliwość zablokowania Grida żeby mógł odbierać od użytkownika tylko dane liczbowe, to by znacznie ułatwiło wszystko.

2.1 Dodatkowo poruszając temat StringGrida chciałbym zapytać o kilka rzeczy, których nie znalazłem w internecie:
-czy da się zablokować poszczególne komórki? np zablokować komórkę [3,2] do edycji itp.
-czy da się zoptymalizować wypełnianie tego Grida danymi, tzn wystarczy raz kliknąć żeby móc wypełniać daną komórkę (aktualnie trzeba 2 razy), po naciśnięciu "enter" wypełnianie przeskakuje do kolejnej komórki, a jeżeli kończy sie wiersz to do kolejnego wiersza pierwszej komórki itp (podobnie do Excela)?
-dodawanie wierszy do Grida, gdy poprzednie są już wypełnione? (Aczkolwiek tu wydaje mi sie, ze dam radę. Wystarczy chyba sprawdzać, czy jest wymagana zawartość poprzednich wierszy/komórek i jeżeli tak jest to dodać po prostu kolejny wiersz)

3. Mamy już pobrane dane od użytkownika, obliczone wyniki (obliczenie dam radę zrobić), teraz czas na prezentację wyników. Do prezentacji wyników również użyję raczej StringGrid i po prostu przypiszę odpowiednie komórki macierzy wynikowej do odpowiednich komórek Grida i po sprawie. Jeżeli chodzi o rysunek to wydaje mi się, ze też dam radę go zrobić przy użyciu oczywiście TCanvas, tylko nie wiem czy uda mi się zautomatyzować ten proces, ale to będę pytał jak będą problemy. Mam tylko pytanie w czym najlepiej to rysować? Są dostępne Shape i Image, więc nie wiem co wybrać. Niestety się na tym nie znam, aczkolwiek pamiętam, że kiedyś sie chyba bawiłem (uczyłem sie) rysowaniem w Image.

3.1 W jaki sposób w tym builderze tworzyć zmienne globalne i funkcje/procedury? Pamiętam kiedyś tworząc program nie mogłem sobie z tym poradzić i zrobiłem jak zrobiłem. Tym razem jednak przydałoby się stworzyć kilka procedur, np.: do rysowania, żeby móc umieszczać je w kilku miejscach itp. Te procedury miałyby się odwoływać do poszczególnych obiektów jak Image itp. Czy mógłby ktoś jakoś podpowiedzieć w jaki sposób to zrobić? Nadmienię iż próbowałem to kiedyś zrobić nawet z jakimiś kursami/poradnikami, ale zawsze wyskakiwał błąd :/

4. Gdy wszystko jest już obliczone i wyświetlone przyszedł czas na najgorsze (moim zdaniem). Wyniki tych obliczeń trzeba exportować do pliku. Najlepiej byłoby zapisać je w formie tabelarycznej z jakimś małym opisem itp, a więc najlepszym pomysłem chyba jest export do pliku rtf. Niestety problemem jest to, że nie mam bladego pojęcia jak tego dokonać oraz nie wiem jak później te tabele zdefiniować itp. W tym aspekcie chyba najbardziej potrzebuję Waszej pomocy. Do tego dobrze by było dać możliwość exportu szkicu (obrazka), który powstał na podstawie wyników obliczeń. Chciałbym by export tego obrazka nie zmieniał jego rozmiaru ani nic w tym stylu, tak aby można było go później wydrukować w skali (o ile uda mi się dojść do tego jak go najpierw narysować w skali :) ale to zostawiam sobie do odkrycia, popróbowania itp, żeby wszystkiego nie brać od kogoś).


Z góry dziękuję za wszelkie próby (udane bądź nie) pomocy i za ogólne zainteresowanie tematem (o ile takowe będzie). Przepraszam również, że jest tyle różnych elementów w jednym temacie, ale tak jak napisałem we wstępie - wydawało mi się iż to będzie miało większy sens.

Pozdrawiam!
Avatar użytkownika
Raffallo
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): środa, 22 marca 2017, 18:43
Podziękował : 3
Otrzymał podziękowań: 0
System operacyjny: Win 7
Kompilator: Borland C++ Builder 6
Gadu Gadu: 0
    Windows 7Chrome

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości

cron