Powtórna aktywacja kontrolki speedbutton

dział ogólny

Powtórna aktywacja kontrolki speedbutton

Nowy postprzez szumekjac » Å›roda, 15 lipca 2009, 18:47

Proszę o pomoc. W swojej aplikacji mam kilka kontrolek speedbutton. Swój problem opiszę na przykładnie jednej z nich. Speedbutton ma ustawione opcje AllowAllUp - false, GroupIndex =1. Kliknięcie powoduje wywołanie formularza (Form2), a w głównym oknie aplikacji speedbutton pozostaje "wciśnięty" i nieaktywny, dokładnie tak jak chciałem.
Problem z którym nie potrafię sobie poradzić to sytuacja, w której zamknięcie Form2 (standardową kontrolką w prawym, górnym rogu) powodowałaby powtórną aktywację ("wyciśnięcie") odpowiedniego speedbuttona.
Proszę o pomoc i przepraszam jeśli mój problem wydał się zbyt banalny... ;)
Avatar użytkownika
szumekjac
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): piątek, 10 lipca 2009, 08:05
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Powtórna aktywacja kontrolki speedbutton

Nowy postprzez Cyfrowy Baron » Å›roda, 15 lipca 2009, 21:01

Po pierwsze i przede wszystkim SpeedButton nie jest kontrolkÄ… lecz komponentem - obiektem klasy TSpeedButton.

Stan przycisku SpeedButton możesz zmienić właściwość Down tegoż obiektu, niemniej jednak właściwość AllowAllUp musi byś ustawiona na true, w przeciwnym razie komponent nie powróci do swojego stanu i nic tutaj nie pomoże.

Można posłużyć się jednak pewną sztuczką. Zostawiasz AllowAlUp na false tak jak chcesz, ale w zdarzeniu OnClose formularza Form2 przed zmianą stany przycisku, czyli przed ustawieniem SpeedButton->Down = false; najpierw ustawiasz AllowAllUp na true, potem Down na false i przywracasz AllowAllUp na false.

Kod może wyglądać tak:

Dla Form1 (Unit1.cpp)
Kod: Zaznacz cały
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h" // <--- tutaj odwołanie do Form2
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
Form2->Show();   
}
//---------------------------------------------------------------------------



Dla Form2 (Unit2.cpp)
Kod: Zaznacz cały
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Form1->SpeedButton1->AllowAllUp = true;
Form1->SpeedButton1->Down = false;
Form1->SpeedButton1->AllowAllUp = false;
}
//---------------------------------------------------------------------------

speedbutton.rar
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Powtórna aktywacja kontrolki speedbutton

Nowy postprzez szumekjac » czwartek, 16 lipca 2009, 19:10

Działa wyśmienicie! Dokładnie o to mi chodziło! :)
Dziękuję! :)
Avatar użytkownika
szumekjac
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): piątek, 10 lipca 2009, 08:05
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana


  • 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 6 gości