Strona 4 z 4

Re: Programowanie - where to begin? O_o

: 05 kwietnia 2015, 00:46
autor: Maveral
Nie mam możliwości tego przetestować, ale dla mnie to by było chyba jakoś tak.

Kod: Zaznacz cały

textBox4.Text = Math.Round(zmienna_typu_float, 3).ToString();
Albo jeśli w textboxa chcesz wpisać tylko wynik, to wyciągasz zaokrąglenie.

Kod: Zaznacz cały

zmienna_typu_float = Math.Round(zmienna_typu_float, 3);
textBox4.Text = zmienna_typu_float.ToString();

Re: Programowanie - where to begin? O_o

: 05 kwietnia 2015, 16:00
autor: eLPeeS
Dzięki Panowie. Ostatecznie wziąłem pomysł Mava i po poddaniu go lekkiej modyfikacji "na antka oko" zaczęło działać tak jak miało w założeniu. Co prawda znowu utknąłem w martwym punkcie ale już nie z powodu braku umiejętności do programowania tylko z powodu niedokładnego zaplanowania co ten mój program w zasadzie ma robić żeby było dobrze. Tak to jest jak się programuj ad hoc ;)

Re: Programowanie - where to begin? O_o

: 07 kwietnia 2015, 20:08
autor: eLPeeS
Inne pytanko - dalej pozostajemy w klimatach C# (jakby kto pytał ;)). Co zmienić w ustawieniach obiektu textBox albo w kodzie żeby po ustawieniu kursora w polu textBox program automatyczne zaznaczał całą znajdująca się tam zawartość? Tak żeby od razu można było klepać nową zawartość pola bez konieczności kasowania tego co było tam uprzednio wprowadzone. Mam nadzieję, że kumacie o co mi chodzi ;)

PS Jak wyrażam się nie precyzyjnie i "nieprorgamistycznie' to pamiętajcie, że ja programować nie umiem i się tego już nigdy (no chyba) nie nauczę a moje programy,choć działają (czy może raczej robią to czego od nich oczekuje), napisane są tragicznie i ad hoc ;)

Re: Programowanie - where to begin? O_o

: 07 kwietnia 2015, 21:07
autor: Leming
eLPeeS pisze:Co zmienić w ustawieniach obiektu textBox albo w kodzie żeby po ustawieniu kursora w polu textBox program automatyczne zaznaczał całą znajdująca się tam zawartość? Tak żeby od razu można było klepać nową zawartość pola bez konieczności kasowania tego co było tam uprzednio wprowadzone
W oknie formy zaznaczasz wybrany obiekt "TextBox".
W zakładce "Events" (obok zakładki "Properties" ) znajdujesz metodę "MouseDown" (zrób coś po naciśnięciu przycisku myszy na obiekcie). Klikasz przy jej nazwie.
W kodzie procedury, która się powinna wyświetlić piszesz:

Kod: Zaznacz cały

TextBox.Text = "";
Działanie. Po kliknięciu przyciskiem myszy na TextBoxa kasujesz poprzedni tekst, kursor jest gotowy do wpisania nowej treści.

EDIT:
Jeśli niekoniecznie chcesz zaznaczać wybrane pola myszą (masz kilka pół i nie chce Ci się klikać na każdym i wolałbyś np. Tab, a nie boisz się, że sobie przypadkiem zepsujesz zapisane pole, zamiast metody "MouseDown" możesz użyć metody "Enter" i wpisać w nią kod:

Kod: Zaznacz cały

TextBox.Text = "";
Jednakże w tym przypadku jakakolwiek metoda wybrania określonego pola skasuje jego zawartość.

Re: Programowanie - where to begin? O_o

: 07 kwietnia 2015, 21:18
autor: eLPeeS
Ok. Dzięki. W sumie o to chodziło (tzn. chyba już wiem gdzie grzebać). Ale nie do końca bo i tak nie działa ;) Głównie dlatego, że nie chodzi o automatyczne kasowanie tego co jest wpisane, ale tylko o zaznaczenie (coś jak w pasku adresu przeglądarki). Poza tym tam na sztywno jest wpisana wartość domyślna przez co wykasować się tego nie da - program jest tak zrobiony że z automatu tam (tj. w pole textBoxa) wklepuje "tą jedna" podstawową wartość. Jakieś inne pomysły? ;)

EDIT
Dobra już rozkminiłem do końca. Trzeba było w w kodzie procedury dla MouseDown wklepać:

Kod: Zaznacz cały

textBox.SelectAll();
A ja się głupi męczyłem. Dzięki Leming! Na następnym zlocie złodziei stawiam dobre piwo (czyli pewnie nigdy - eLPeeS zaciera ręce i liczy kasę w kiermanie a jego pejsy falują na wietrze) ;)

Re: Programowanie - where to begin? O_o

: 07 kwietnia 2015, 21:35
autor: Leming
eLPeeS pisze:Głównie dlatego, że nie chodzi o automatyczne kasowanie tego co jest wpisane, ale tylko o zaznaczenie (coś jak w pasku adresu przeglądarki).
W procedurze wybranej metody dopisz:

Kod: Zaznacz cały

TextBox.SelectAll();
Będzie podświetlało cały tekst jaki tam był wcześniej.

EDIT:
Oj Ty taki i owaki. Zdążyłeś edytować zanim wysłałem posta.
A już oczami wyobraźni widziałem jedno z tych piw, których degustację opisujesz czasami w sąsiednim temacie. ;)

Re: Programowanie - where to begin? O_o

: 20 kwietnia 2015, 20:53
autor: eLPeeS
Jadymy dalej z C#. Można jakoś ustawić parametry/właściwości zmiennej typu float żeby po jej wyświetleniu się w np. richTextBoxie miała format X.XX, tj. z zachowaniem 2 miejsc po przecinku i by taki format był wyświetlany nawet w przypadku gdy po przecinku mamy same zera (chodzi o wyświetlenie kwoty pieniężnej). Oczywiście mógłbym zamienić zmienne float na string i ustawić format tejże wartości bo to umiem (zmienna_float.ToString("0.00")) no ale na około iść... nie tędy droga ;) Da się jakoś prościej?

Re: Programowanie - where to begin? O_o

: 20 kwietnia 2015, 22:42
autor: Maveral
To czego szukasz, to odpowiedni tzw. "format specifier". W tym wypadku spójrz tutaj - Twój aktualny przypadek rozwiąże "The Currency ("C") Format Specifier".

Kod: Zaznacz cały

zmienna_float = 235.00000;
richTextBox.text = zmienna_float.ToString("C2");
Voila! ;)

Re: Programowanie - where to begin? O_o

: 21 kwietnia 2015, 19:01
autor: eLPeeS
No nie do końca Viola bo to co proponujesz to z tego co widzę w zasadzie to samo co napisałem powyżej tylko inaczej. Chodzi o to by zmiennej float nie zamieniać na string jak w twoim przykładzie. Skoro richTextBox radzi sobie z wyświetlaniem wartości float to po co to komplikować i dodatkowo je konwertować? ;) No i u mnie richtextBox wyświetla tekst który jest zlepkiem różnych zmiennych (zmienna1 + zmienna2 + zmienna 3 z czego niektóre to float a niektóre to string). Zatem też nie mogę tak po prostu zadeklarować że richTxtBox.text = jedna_zmienna.

Re: Programowanie - where to begin? O_o

: 21 kwietnia 2015, 20:22
autor: Leming
Skorzystaj z zewnętrznej procedury.

Przed funkcjami twojego programu stwórz takie coś:

Kod: Zaznacz cały

// "Zmienna" typu float jest parametrem
// i nie przyjmuje żadnych konkretnych wartości w tym momencie
String Zf( float Zmienna )
{
    return Zmienna.ToString("0.00");
}
Funkcja przyjmuje jako parametr liczbę zmiennoprzecinkową, odpowiednio ją konwertuje i zwraca w postaci stringa gotowego do wyświetlenia.

Teraz w dowolnym miejscu programu piszesz np:

Kod: Zaznacz cały

textBox2.Text = Zf( zmienna_float );
Nie musisz od teraz za każdym razem pisać formuły na konwersję typów. Zadeklarowana funkcja "Zf( parametr )" skonwertuje to za Ciebie.

EDIT:
Możesz oczywiście sklejać np. w taki sposób:

Kod: Zaznacz cały

textBox2.Text = Zf( zmienna_float + inna_zmienna_float) + jakis_tekst;
EDIT:
Można jakoś ustawić parametry/właściwości zmiennej typu float...
Nie można. Zmienna to zmienna, marne kilka bajtów pamięci RAM bez żadnych funkcji dodatkowych. Zmienna zmiennoprzecinkowa ZAWSZE będzie liczona i wyświetlana (matematycznie) do tylu cyfr znaczących lub miejsc po przecinku na ile pozwoli jej typ. To, że my (jej wizualizację) konwertujemy i wyświetlamy do np. 2 miejsc wcale nie sprawi, że zmienna będzie zajmować mniej miejsca w pamięci, lub że obliczenia będą szybsze.
Zmienna to nie np. "przycisk", który jest "oblepiony dookoła" mnóstwem parametrów i funkcjami go obsługującymi.

EDIT:
Skoro richTextBox radzi sobie z wyświetlaniem wartości float to po co to komplikować i dodatkowo je konwertować?
Tak Ci się tylko wydaje, że sobie radzi z wyświetlaniem typu float. :) Po prostu, o ile nie zaczniesz żonglować różnymi typami wewnątrz pola, to wyniki skonwertują się same na typ string, tyle że tego nie widzisz w swoim kodzie programu (takie ułatwienie od kompilatora: "o! widzę liczbę w polu tekstowym. Ciekawe co ona tu robi? Pewnie chce, żeby ją skonwertować na typ tekstowy i wyświetlić". :) ). Gdybyś podejrzał co się dzieje w procesorze w trakcie wyświetlenia, to byś zobaczył, że jednak procedura konwersji typów występuje. :).

Re: Programowanie - where to begin? O_o

: 21 kwietnia 2015, 22:18
autor: Maveral
eLPeeS, chcesz zrobić niby "nie naokoło", a nieświadomie zrobisz właśnie "naokoło" z powodu, o którym wspomniał Leming ;) Zmienne pakowane do textBox'a są i tak "po maską" zamieniane na String, więc bez sensu jest próba uniknięcia tej zamiany, bo ona i tak nastąpi. To co ty chcesz osiągnąć, czyli upierdolenie we float-cie kilku liczb po przecinku do dwóch, można uzyskać tylko za pomocą zaokrąglenia, ale nie jest to niestety rozwiązanie, które by cię satysfakcjonowało.

Kod: Zaznacz cały

Math.Round(zmienna_float, 2, MidpointRounding.ToEven)
W przypadku wartości pieniężnych się nie sprawdzi, bo zmienną o wartości "1.0014" pokaże ci jako "1", a nie tak jak chcesz "1.00".

Nie bój się tych zamian na String. Twórcy C# po coś wprowadzili np. właśnie taki "The Currency ("C") Format Specifier" w Stringu, a nie we Float, nie sądzisz? I nie sądzę, że nie wiedzieli co robią ;)

Re: Programowanie - where to begin? O_o

: 22 kwietnia 2015, 07:42
autor: eLPeeS
Być może dłubię na około. No ale jak wspominałem wcześniej strach się bać mojego kodu i metod kodowania ;) Z mojego punktu widzenia mój sposób jest szybszy bo już teraz w richTextBoxie wyświetlam masą floatów których nie konwertowałem na stringi (czuje się jak byśmy gadali o gaciach ;)) a konieczność ich konwersji to dla mnie masa klepania. Niewiele więcej niż przy mojej wyimaginowanej metodzie ale więcej. Tak czy siak pobawiłem się i w końcu robi to co chciałem. A że twórcy C# wiedzieli co robią to być może też prawda, ale ja z natury nikomu nie ufam ;)

Re: Programowanie - where to begin? O_o

: 22 kwietnia 2015, 11:49
autor: timon
eLPeeS pisze: richTextBoxie wyświetlam masą floatów których nie konwertowałem na stringi
A nie boisz się błędów zaokrągleń? Jak się domyślam, raczej nie są to obliczenia inżynierskie a raczej pieniężne. Więc 1000 operacji po 1,00 zł to nie to samo co 1000 po 1,001 i dopiero zaokrąglone.

Re: Programowanie - where to begin? O_o

: 22 kwietnia 2015, 12:45
autor: eLPeeS
Nie boje z prostego powodu. Nie przewiduje operacji typu 1000 x 1,001 bo takich nie będzie. Jak się kwoty bazowe do programu wprowadza dobrze to będzie ok. W jednym miejscu gdzie to było konieczne program zaokrągla odpowiednio wcześnie wartości aby właśnie nie było takich cyrków i dalsze działania były prowadzone w oparciu o zmienne X.XX000000000 itp.. Problemem było jedynie to że jak się prowadziło w odpowiednim polu (których kilka jest) wartość np. "20" to potem w richtextBoxie też pokazywało jedynie "20" a powinno "20.00" (uproszczenie dla leniwych użytkowników) ew. jak się wklepało "20.10" pokazywało "20.1". Dzięki za troskę ale co jak co ale piniondze to ja liczę dobrze. No chyba, że się pomylę ;)

Re: Programowanie - where to begin? O_o

: 12 lutego 2018, 13:31
autor: eLPeeS
No i nadszedł znowu ten moment w życiu, że muszę (czy raczej chcę celem usprawnienia pracy) podłubać i wydłubać sobie do roboty mały programik. Niestety mój laptop z racji wieku i swoich parametrów słabo współpracuje z Visual Studio (muli się niemożebnie). Stąd moje pytanie: jest jakiś inny "lżejszy" kombajn do programowania w C#? Można jakoś VS wykastrować żeby przyspieszył? Ewentualnie zna ktoś równie prosty (pojęcie względne - dla mnie prosty ;)) język programowania obiektowego. Ja buduje trywialne konstrukcje w oparciu wczytywanie wprowadzonych danych ich przetwarzanie głownie poprzez wszelkie IFy i proste działania matematyczne i wypluwanie gotowych tekstów - rodem z lekcji informatyki w liceum. Ktoś coś? :)

Re: Programowanie - where to begin? O_o

: 12 lutego 2018, 13:58
autor: Maveral
Przychodzi mi do głowy jedynie C++ Builder, ale stricte do C#, to nie kojarzę. Alternetywą jest jeszcze Java, w której też sobie aplikacje okienkowe dość łatwo możesz zrobić, aczkolwiek C# chyba jest prostszy.

Re: Programowanie - where to begin? O_o

: 12 lutego 2018, 14:31
autor: Juliusz
Do C# (i nie tylko) polecam Visual Studio Code - jest to okrojona wersja VS, w której instalujesz support konkretnych języków poprzez pluginy:

https://code.visualstudio.com/docs/languages/csharp

Na codzień korzystam z niego do programowania w pythonie. Nie wiem, jakie ilości danych przetwarzasz, ale może Python właśnie by Tobie wystarczył. Jest stosunkowo prosty, jeśli chodzi o składnię. Jest to język interpretowany, a nie kompilowany, a więc łatwiejszy w użyciu choć wolniejszy.
Jeśli byś potrzebował też GUI, to polecam wówczas PySide - czyli Qt dla Pythona.

Re: Programowanie - where to begin? O_o

: 13 lutego 2018, 07:59
autor: eLPeeS
Dzięki Panowie! Będę musiał podłubać i zobaczyć co się nada. Bo najbliżej mi do C# ale z drugiej strony apka musi mieć przyjazny GUI dla mnie i umożliwiać łatwo stworzyć GUI dla odbiorcy bo nie robię jej tylko dla siebie ale też będą z niej korzystać małpiszony w pracy ;) Tak, że musi być ładnie schludnie, kolorowo i w ogóle.

Re: Programowanie - where to begin? O_o

: 13 lutego 2018, 12:03
autor: Juliusz
Zatem C# i Windows forms.
Jeśli nie miałeś z tym do czynienia, to poszperaj tutoriale - trzeba się trochę wgryźć w temat, żeby coś sensownego uzyskać.

Visual Studio (ten, którego nie chcesz używać) ma graficzny edytor do budowania okienek z kontrolkami itp...

Re: Programowanie - where to begin? O_o

: 14 lutego 2018, 12:43
autor: eLPeeS
Ja bym bardzo chciał używać Visual Studio, ale mój lapek odmawia współpracy ;)

Re: Programowanie - where to begin? O_o

: 14 lutego 2018, 14:31
autor: Maveral
Spróbuj tego - KLIK.

Nie sprawdzałem, po prostu wklepałem w googla "visual studio ide in cloud" ;)