Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz
  • 0

Powielanie liczby w oknie edit


Gość

Pytanie

Opublikowano

Witam mam pytanie jak powielić liczbę w oknie Edit ? Próbuję napisać kalkulator, ale nie do końca wiem jak zrobić żeby w jego "wyświetlaczu" czyli okienku edit po naciśnięciu przycisku 1 (w Gui a nie na klawiaturze) na ekranie pojawiło się tyle jedynek ile razy nacisnę klawisz.  Proszę o pomoc :}

 

 

$Button1 = GUICtrlCreateButton("1", 32, 64, 49, 49)
$Edit1 = GUICtrlCreateEdit("", 24, 8, 297, 41, BitOR($ES_RIGHT,$ES_READONLY))
GUICtrlSetData(-1, $wynik)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")

 

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Opublikowano

Trochę dziwne, że chcesz do tego używać kontrolki "Edit". Nie lepiej było by użyć "Input"?

Tak jak w poniższym przykładzie kalkulatora do przeliczania liczb binarnych:

#include <GUIConstantsEx.au3>

;tworzenie okna głównego
GUICreate("Przeliczanie liczb binarnych", 400, 300)
GUISetBkColor(0xbbbbbb)                               ;tło okna w kolorze ciemno szarym

;tworzenie kontrolek
GUICtrlCreateGroup ("", 95, 30, 255, 40)              ;wykorzystujemy funkcję do narysowania ramki
GUICtrlCreateGroup ("BIN", 95, 30, 216, 40)
$hLab1 = GUICtrlCreateLabel("0", 106, 46, 192, 15, 2) ;okienko na liczbę binarną, wyrównanie do prawej
GUICtrlSetBkColor(Default, 0xeeeeee)                  ;kolor tła okienka liczby binarnej
GUICtrlSetColor(Default, 0xff0000)                    ;kolor czcionki w okienku liczby binarnej
GUICtrlCreateGroup ("", 100, 135, 200, 40)            ;kolejna ramka
$hLab2 = GUICtrlCreateLabel("0", 120, 152, 160, 15,2)  ;okienko na wynik, wyrównanie do prawej
GUICtrlCreateGroup ("Przelicz na", 100, 85, 200, 50)  ;tworzymy grupę z trzech przełączników RADIO
$hRadio_oct = GUICtrlCreateRadio("OCT", 120, 105)
$hRadio_dec = GUICtrlCreateRadio("DEC", 180, 105)
GUICtrlSetState(-1, $GUI_CHECKED)                     ;ustawiamy status przełącznika "DEC" na zaznaczony
$hRadio_hex = GUICtrlCreateRadio("HEX", 240, 105)
$hButton_0 = GUICtrlCreateButton("0", 100, 190, 40, 40) ;kolejno wszystkie 5 klawiszy
$hButton_1 = GUICtrlCreateButton("1", 150, 190, 40, 40)
$hButton_back = GUICtrlCreateButton("<- Backspace", 200, 190, 100, 40)
$hButton_end = GUICtrlCreateButton("Koniec", 100, 245, 200, 25)
$hButton_clr = GUICtrlCreateButton("CLR", 312, 40, 34, 24)

GUISetState()          ;wywołanie GUI na ekran
$sStrBin="0"           ;deklaracja zmiennej przechowującej liczbę binarną

While 1                ;pętla obsługi GUI
   $msg = GUIGetMsg()  ;odczytanie ID zdarzenia jakie zaszło w GUI
   Switch $msg
      case $GUI_EVENT_CLOSE, $hButton_end
         ExitLoop
      case $hButton_0
         If StringLen($sStrBin)<31 Then $sStrBin &= "0"       ;ograniczenie liczby binarnej do 31 cyfr
         ;wykorzystujemy wyrażenie regularne do pozbycia się zer na początku liczby binarnej
         $sStrBin = StringRegExpReplace($sStrBin, "^0*(.+)$", "$1")
         GUICtrlSetData($hLab1, $sStrBin)               ;aktualizacja danych w okienku liczby binarnej
      case $hButton_1
         If StringLen($sStrBin)<31 Then $sStrBin &= "1"
         $sStrBin = StringRegExpReplace($sStrBin, "^0*(.+)$","$1")
         GUICtrlSetData($hLab1, $sStrBin)               ;aktualizacja danych w okienku liczby binarnej
      case $hButton_back
         If $sStrBin<>"0" Then $sStrBin = StringTrimRight($sStrBin, 1)
         GUICtrlSetData($hLab1, $sStrBin)
      case $hButton_clr
         $sStrBin = " 0"
         GUICtrlSetData($hLab1, $sStrBin)
   EndSwitch
   If $msg<>0 Then
      $iPar =  (GUICtrlRead($hRadio_oct)=$GUI_CHECKED)
      $iPar += (GUICtrlRead($hRadio_dec)=$GUI_CHECKED)*2
      $iPar += (GUICtrlRead($hRadio_hex)=$GUI_CHECKED)*4
      GUICtrlSetData($hLab2, oblicz($iPar, $sStrBin))         ;aktualizacja danych w okienku wyników
   endif
WEnd


;funkcja przeliczająca liczby w zapisie binarnym na liczby ósemkowe, dziesiętne lub szesnastkowe
;do zamiany liczby dwójkowej na dziesiętną piszemy własną procedurę (między For ... Next)
;gdyż w AutoIt nie ma stosownej funkcji
;do zamiany liczby dziesiętnej na ósemkową i szesnastkową wykorzystujemy funkcję formatującą
;StringFormat (opis w rozdziale "Napisy (stringi)")

Func oblicz($iP,$sSbin)
   Local $iLen=StringLen($sSbin), $iLicz=0, $i, $j, $a
   ;zmiana liczby dwójkowej na dziesiętną
   For $i=$iLen to 1 Step -1
      $j = $iLen-$i
      $a = StringMid($sSbin, $i, 1)
      $iLicz += Number($a)*2^$j
   Next
   Switch $iP
      case 1
         Return StringFormat("%o",$iLicz) ;zmiana na liczbę ósemkową
      case 2
         Return $iLicz
      case 4
         Return StringFormat("%X",$iLicz) ;zmiana na liczbę szesnastkową
   EndSwitch
EndFunc

Przykład pochodzi z mojego podręcznika do Autoit'a: https://pl.wikibooks.org/wiki/AutoIt

https://pl.wikibooks.org/wiki/AutoIt/GUI#Kontrolki_GUI_i_ich_obsługa

Opublikowano

Dzięki, przeczytałem ten poradnik i udało mi się zrobić coś co działa dobrze tylko mam jeszcze jeden kłopot kiedy chcę wpisać do kalkulatora 0.2+0.2 to te pierwsze 0 jest usuwane przez komendę               $x = StringRegExpReplace($x, "^0*(.+)$","$1") która dopisana jest do każdej cyfry. Można coś z tym zrobić ? Kalkulator liczy dobrze, ale wizualnie nie jest to zbyt ładne.

Opublikowano

Możesz po prostu usunąć tę linię kodu i nic nie będzie usuwane.

 

Możesz też podejrzeć jak zrealizowałem klawiaturę ekranową w popełnionym przeze mnie parę lat temu kalkulatorze graficznym.

Pliki w załączniku.

Kalkulator.zip

Opublikowano
12 godzin temu, wasta napisał:

Możesz po prostu usunąć tę linię kodu i nic nie będzie usuwane.

 

Możesz też podejrzeć jak zrealizowałem klawiaturę ekranową w popełnionym przeze mnie parę lat temu kalkulatorze graficznym.

Pliki w załączniku.

Kalkulator.zip

@wasta prosiłbym o dodanie skanu pliku w ciągu 12h, w innym przypadku będą go musiał niestety usunąć.

Temat zostanie zamknięty po dodaniu skanu pliku.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...