witam mam taki problem z napisaniem programu w delphi na obliczanie jednostek.Program napisałem ale z dużą ilością okienek edit1,edit2 itd czyli napisałem tak program że liczy cm-cal, cm-stopa, cal-stopa, cal-cm, stopa-cal, stopa-cm czyli jak widać jest dużo okienek a potrzebuje program żeby np były dwa okienka i żebym mógł sobie wybrać w jednym np cm a w drugim cale i mi oblicza. Prosze o pomoc. Bardzo pilne.
Masz taki komponent TCheckListBox zdaje się i tam wstaw jednostki. Potem onClick na ten komponent daj zmiane na daną jednostkę i sprawdzaj if TCheckListBox.ItemIndex = 1
a pod jedynką masz np. cm to zamieniasz jednostkę, którą trzymasz np. w string, a potem ze string tak samo, jak wpisujesz to jaka jednostka jest wybrana. Daj takie 2 komponenty jeden do pierwszej liczby, a drugi do zamiany. No troszkę namieszałem z tym opisem, ale myślę, że wiesz o co mi chodzi :D
Ja bym zastosował dwa combobox'y, a przeliczniki dał w tablice dwuwymiarowej. Cały program miał by kilka wierszy.
Kurde, miałem na myśli combobox
, ale dawno nie widziałem BCB ani Delphi na oczy i zapomniałem, że to combobox
a nie checklistview
. A co do tablic to nie wiem czy autor jest na takim poziomie żeby to wykorzystywać, chyba woli prostsze rozwiązania :)
Przecież to zwykła tablica dwuwymiarowa na dodatek o stałym rozmiarze i ze stałymi wartościami, które da się wyliczyć np w excelu. To o wiele prostsze niż zabawa z ComboBox'em.
xeo545x39 masz racje nie jestem jeszcze na poziomie tablic i wolałbym to napisać prost metodą czyli tak jak pisałeś:) tylko jakbyś jeszcze mógł napisać troche kodu jak to ma wyglądać to byłbym bardzo wdzięczny :)
elzo2 napisał(a)
Program napisałem ale z dużą ilością okienek edit1,edit2 itd
Przede wszystkim naucz się sensownie nazywać komponenty.
elzo2 napisał(a)
xeo545x39 masz racje nie jestem jeszcze na poziomie tablic i wolałbym to napisać prost metodą czyli tak jak pisałeś:) tylko jakbyś jeszcze mógł napisać troche kodu jak to ma wyglądać to byłbym bardzo wdzięczny :)
Jak zrozumiesz ideę programowania, to się okaże, że sposób z tablicami jest łatwiejszy. To komputer ma Ci ułatwiać zadanie, a nie Ty jemu! Ja bym to widział tak: interfejs programu tak, jak pisali poprzednicy - dwa combobox'y. Najbardziej elastycznie by było, gdybyś te combobox'y wypełniał danymi programowo, wtedy dodanie nowej jednostki sprowadzałoby się do dodania nowego elementu do tablicy w kodzie i w interfejsie nie musiałbyś już grzebać (możesz to podpiąć pod zdarzenie onCreate
, dodanie nowego elementu do combobox'a realizuje pewnie jakaś metoda w stylu addItem
, dawno nic nie robiłem w Delphi, więc nie pamiętam, ale to bez problemu znajdziesz w internecie). Teraz tak - indeks wybranego elementu w combobox'ie powinien odpowiadać indeksowi tablicy z odpowiadającym elementem.
[
'cm',
'dm',
'm'
]
[
0.01,
0.1,
1
]
Powyżej masz dwie tablice - jedna z nazwami jednostek, druga z liczbami. Za pomocą tej pierwszej są tworzone combobox'y. Ta druga posiada wartości liczbowe mówiące ile razy trzeba pomnożyć wprowadzoną liczbę, aby przeliczyć ją na ilość metrów. Metr będzie czymś w rodzaju jednostki wyjściowej
. Teraz wystarczy tylko całość podstawić do odpowiedniego wzoru, a następnie jakoś zaprezentować użytkownikowi. Prezentacją danych zajmiesz się sam, wzór Ci podaję:
(liczba * tablica[indeks1]) / tablica[indeks2]
gdzie liczba oznacza liczbę wprowadzoną przez użytkownika, indeks1 oznacza indeks wybranego elementu na combobox'ie odpowiadającego jednostce liczby wprowadzanej, a indeks2 indeks wybranego elementu z drugiego comobox'a. Prawda, że proste? Zaoszczędzony przeze mnie czas możesz poświęcić na wyszukanie w internecie informacji jak dynamicznie dodawać elementy do combobox'a i jak pobierać indeks zaznaczonego elementu :)
PS W Delphi dawno nic nie pisałem, więc podany przeze mnie sposób z tablicami może jest mało elegancki, poczytaj o rekordach i spróbuj to jakoś upakować do jednej zmiennej.
@up Czy autor na pewno to zrozumie?
@autor Wybierz sposób, albo tablice, albo komponentami. Jeżeli to drugie to wstaw na formę dodatkowo 2x TEdit. Stwórz 2 string'i po
i przed
(to samo z komponentami, chociaż chyba się da bez string'ów). W każdym TEdit przy onClick daj po := po_edit.text;
. I przy np. przycisku "oblicz", w onClick daj sprawdzanie warunków, jakiej jednostki jest jeden string, a jakiej drugi i wykonuj odpowiednie działania. Wybierzesz co chcesz, jeżeli nie rozumiesz tego co kolega wyżej napisał, poczytaj jeszcze o tablicach jedno i dwuwymiarowych. Ja ci więcej nie pomogę, bo w Delphi doszedłem do...niczego ;) Tablic nie znam, nie w Delphi.
ok koledzy dzięki za pomoc już zrobiłem program zrobiłem za pomocą 2 combobox i polecenia if itd. Temat zamknięty :)