• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak nadać fukncję przyciskowi w Builer 6?

VPS Starter Arubacloud
0 głosów
369 wizyt
pytanie zadane 24 października 2015 w C i C++ przez Klasyczny Użytkownik (610 p.)
przywrócone 27 października 2015 przez Klasyczny
Witam,

jestem w środowisku programu Builerd 6 c++ i

1) mam przycisk Button1 oraz GroupBox1, a w nim różne elementy. Chce pod przyciskiem Button1 (nazwany "Dalej") przejść na GroupBox2 w tym samym miejscu wraz z ukryciem elementu GroupBox1.

2) mam przycisk Button1 i chce nadać tylko jemu kolor zielony. W kodzie wpisałem Color=clGreen; ale robi mi się całę tło programu, co muszę dopisać aby dotyczyło tylko tego jednego przycisku?

Bardzo proszę o pomoc!

Pozdrawiam,

Piotr

2 odpowiedzi

+1 głos
odpowiedź 24 października 2015 przez Patryk Krajewski Nałogowiec (26,170 p.)
edycja 24 października 2015 przez Patryk Krajewski
1.W evencie on click buttona wpisujesz GroupBox1->Visible=false; i GroupBox2->Visible=true;

2.Nie wiem czy można zmienić kolor w Buttonie ale w BitBtn można zmienić grafike zobacz tutaj http://www.ireneuszpolec.net/zmiana-tla-przycisku-c-builder-6-0/
komentarz 24 października 2015 przez Klasyczny Użytkownik (610 p.)
1) super działa, a jak mam jeszcze kilka tych GroupBox'ów i chce dalej pod przyciskiem "Dalej" zmienić na GrupBox3?

2) próbowałem tego, ale mi ten obraz się nie wczytywał nie wiem czemu, zrobiłem go przez Image Editor, ustawiłem te samą rodzielczość (obrazku jak i przycisku) załadowałem i nic. :/
komentarz 24 października 2015 przez Patryk Krajewski Nałogowiec (26,170 p.)
1.To może dodaj zmienną int i inkrementuj ją po kliknięciu przycisku a jeśli będzie większa od 2 to ustaw na 1 a potem sprawdzaj wartość zmiennej np jeżeli ma 1 to GroupBox1->Visible=true; GroupBox2->Visible=false; GroupBox3->Visible=false; itd jak nie wiesz o co chodzi to napisz

2. A wczytywałeś plik z rozszerzeniem bmp? bo mi to działa
komentarz 24 października 2015 przez Klasyczny Użytkownik (610 p.)
1) Nie wiem jak to zrobić, jakbyś mógł to w kodzie przedstawić?

2) Oczywiście .bmp, po wprowadzeniu nic mi się nie zmienia.
komentarz 24 października 2015 przez Patryk Krajewski Nałogowiec (26,170 p.)
to daj kod napisze ci to
komentarz 24 października 2015 przez Klasyczny Użytkownik (610 p.)
Na ogół mam stworzone 5 GroupBox'ów a w nim kilka elementów i przycisk Button3 - "Dalej".

W kodzie nic nie mam. Wiec co mam Ci wysłać?

Jestem zielony w te klocki, wiec wybacz.
komentarz 24 października 2015 przez Patryk Krajewski Nałogowiec (26,170 p.)
Robisz zmienną int wybor; Potem w Evencie OnclickButton wpisujesz to: http://wklej.org/id/1824519/ i pamiętaj żeby na początek włączyc widoczność tylko dla GroupBox1
komentarz 24 października 2015 przez Klasyczny Użytkownik (610 p.)

Robię od początku (jak zrobię ten przycisk to zajmę się tą pętlą).

Co do tego przycisku, napiszę jak dokładnie zrobiłem.

1. Utowrzyłem BitBtn1 - o wymiarach 75x25

2. Wszedłem do Image Editor, stworzyłem obraz o formacie .bmp o wymiarach 75x25 w kolorze zielonym.

3. Wszedłem w jego właściwości i wybrałem w fukcji Glyph ten obrazek co stworzyłem, załadowałem, OK i poniżej screen:

Dodam że chce, aby po wciśnieciu tego przycisku pokazał mi się kolor zielony.

komentarz 24 października 2015 przez Patryk Krajewski Nałogowiec (26,170 p.)
Narysuj w paincie coś na rozmiar tego przycisku zapisz w bmp i i wrzuć go do folderu a zamiast tego przycisku utwórz Image z zakładki Additional . I w OnClick tego image daj to wcześniejszą pętle co ci pisałem i dopisz Image1->Picture->LoadFromFile("abc.bmp");

w miejsce abc napisz nazwe twojej grafiki co masz w folderze.

Jak coś nie rozumiesz to pisz.
0 głosów
odpowiedź 24 października 2015 przez furas Maniak (53,800 p.)
Nie używam Buildera ale pytanie jets gdzie użyłeś `Color=clGreen;` ? Jeśli w klasie, w której tworzysz button to odnosi się to do tej klasy a nie buttona. Trzeba by raczej użyć `obiekt_button1.Color=clGreen;` (zamiast `obiekt_button1` użyj nazwę jaką nadałeś temu obiektowi)
komentarz 24 października 2015 przez Klasyczny Użytkownik (610 p.)
edycja 24 października 2015 przez Klasyczny

Dokładnie mam tak:

void_fastcall Tform1: :ZielonyClick(TObject *Sender)

{

Color=clGreen;

}

Co mam w tym zmienić?

komentarz 24 października 2015 przez furas Maniak (53,800 p.)

To jest funkcja należąca do `Tform1` więc samo `Color` odnosi sie do tego `Tform1`.

Powinieneś użyć nazwy obiektu przycisku aby pokazać, że chcesz zmienić kolor tego przycisku.

jakis_button.Color = clGreen;

// lub 

jakis_button->Color = clGreen;

W `Sender` też powinna być informacja, ktor wywołał tą funkcję czyli ,który przycisk został wciśnięty.

TButton *przycisk = static_cast<TButton*>(Sender);

przycisk->Color = clGreen;

 

komentarz 24 października 2015 przez Klasyczny Użytkownik (610 p.)
Wywala mi błąd.
komentarz 24 października 2015 przez furas Maniak (53,800 p.)
Każdy programist Ci powie, że tekst "wywala mi błąd" jest gów.. wart ;)

Jeśli masz błąd to podawaj jego treść - najlepiej w całości - bo bez tego to można jedynie z fusów wróżyć :)

---

ps. Osobiście nie używam Buildera i przykład znalazłem przez Google.
komentarz 24 października 2015 przez Klasyczny Użytkownik (610 p.)

Kod przedstawiłem w postaci:

void_fastcall Tform1: :ZielonyClick (TObject *Sender)
TButton *Button11 = static_cast<TButton*>(Sender);
 
{
 
Button11->Color = clGreen;
 
}

Bład:

[C++ Error] Unit1.cpp(70): E2333 Class member '_fastcall TForm1::Button11Click(TObject *)' declared autside its class

[C++ Error] Unit1. cpp(70): E2141 Declaration syntax error

[C++ Error] Unit1. cpp(72): E2040 Declaration terminated incorrectly

komentarz 24 października 2015 przez furas Maniak (53,800 p.)
void_fastcall Tform1::ZielonyClick(TObject *Sender)
{
  TButton *przycisk = static_cast<TButton*>(Sender);

  przycisk->Color = clGreen;  
}

Deklaracja zmiennej musi być wewnątrze funkcji - to jest zmienna lokalna, potrzebna tylko chwilowo na przekonwertowanie Sender na odpowiedni typ (TButton) aby system wiedział, że w tym typie istniej `Color`.

Sama nazwa zmiennej nie ma znaczenia ale ponieważ jest to zmienna lokalna dlatego nadałem jej niezobowiązującą nazwę. Funkcję "ZielonyClick" można podczepić pod kilka przyciskow jednocześnie i wtedy nazwa zmiennej lokalnej nie będzie miała odniesienia do konkretnego przycisku.

 

komentarz 24 października 2015 przez Klasyczny Użytkownik (610 p.)
Wykanłem to w nowym projekcie utworzyłem Buttona wpisałem kod i mam kolejny błąd:

[C++ Error] Unit1.cpp(21): E2247 'TControl::Color' is not accessible
komentarz 24 października 2015 przez furas Maniak (53,800 p.)
W błędzie wymieniona jest linia 21 - należy sie jej przyjrzeć i pewnie też liniom poprzedającym. Bez kodu nie sposób nic powiedzieć. Może to tylko literówka lub użycie gdzieś TControl zamiast TButton.
komentarz 24 października 2015 przez Klasyczny Użytkownik (610 p.)
Tak jak napisałem stworzyłem nowy program, wrzuciłem Buttona1 i zapodałem kod pod Click i wyskoczył mi ten błąd. Nie mam co patrzeć i zmieniać. Jest jakaś inna opcja żeby po kliknięciu na buttona zmienił się jego kolor?

Podobne pytania

+1 głos
1 odpowiedź 536 wizyt
0 głosów
1 odpowiedź 169 wizyt
pytanie zadane 30 grudnia 2015 w C i C++ przez dragon218 Nowicjusz (180 p.)
+1 głos
1 odpowiedź 282 wizyt

92,782 zapytań

141,712 odpowiedzi

320,600 komentarzy

62,114 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...