Dynamicznie tworzony button i okno

0

Witam, tworze sobie dynamicznie przyciski i do nich podpinam funkcję która ma tworzyć nowe okno. Też dynamicznie. Teraz chciał bym, żeby te okno jakoś było powiązane z konkretnym przyciskiem, aby np gdy niszcze przycisk wiadomo było które okno ma być zniszczone, gdy klikne go drugi raz żeby sprawdzało czy okno już jest czy nie i czy ma utworzyć nowe. Wie ktoś jak to rozwiązać?

0

mozesz uzyc pola Tag

0

Hmm a do czego ono słóży? Czy mam szukać sam :P?
DOPISANO
A już chyba wiem. po prostu zwykła liczbe tam można wstawić tak? Takie wolne pole jak by? Czy jeszcze coś innego?
Wielkie dzięki w każdym razie :)

0

moze byc wskaznik np. dla Buttona do Form a dla Form do Buttona

0

Super!! Działa właśnie tak jak chciałem :) DZIĘKI

0

Hmm a jak mam tablicę struktur to da się jeden z jej elementów do tego pola przypisać?

0

Jak rozmiar mniejszy od rozmiaru int-a to mozesz jak nie to wskaznik.
Paskudne to rozwiazania, lepiej jakies nowe typy sobie porobic.

0

jak wiadomo adres na systemie 32 bitowym jest to liczba 32 bitowa wiec kazdy adres jaki przechowuje dowolony wskaznik mozna przedstawic jako liczbe:

char *str = "tutaj jest jakis tekst";
int adres =  (int)str;

i zmienna adres przechowuje teraz liczbowa reprezentacje adresu wskazujacego lancuch "tutaj jest jakis tekst" i jakbym chcial teraz z powrotem w programie uzyskac dostep do tego tekstu po prostu konwertuje znow reprezentacje liczbowa na konkretyn typ wskaznikowy:

char *tekst = (char*)adres;

odnoszac do Twojego problemu ze struktura czy tablica struktur

mozesz przypisac jej adres do Tag poniewaz tag to liczba 32 bitowa wiec moze go przechowywac a pozniej jak bedziesz chcial uzyskac dostep do tej tablicy struktur zamieniasz sobie ta liczbe na wskaznik do tej tablicy i wszystko ale w sumie takie rozwiazanie sie skrajnie stosuje bo na pewno mozna zrobic to o wiele prosciej.
Tym bardziej ze sa tzw. Parent oraz Owner dzieki ktorym mozna zidentyfikowac jaki obiekt do czego nalezy albo zastosowac po prostu FindComponent i podczas tworzenia dynamicznych Buttonow czy form uzywac pola Name z indeksem liczbowym i pozniej tak tez je sprawdzac sa rozne sposoby

0

No tak "podpięłem" już okno pod przycisk ale teraz chciał bym jeszcze przyciskowi dać inne właściwości numer nazwisko imię itd. Próbowałem dziedziczyć po klase TSpeedButton ale mam problem z konstruktorem. Da się takie coś wykonać?

0

Tworzysz sobie klase i w niej np. taki konstruktor.

class TPrzycisk : public TSpeedButton{
public:
        AnsiString imie, nazwisko;
        __fastcall TPrzycisk(TComponent * Owner,
                const AnsiString & imie,
                const AnsiString & nazwisko ) :
                TSpeedButton(Owner), imie(imie), nazwisko(nazwisko){
        }
};

w public klasy okna dajesz sobie np:

public: // User declarations
        void __fastcall Klik_klik(TObject *Sender);
        TPrzycisk * multum_przyciskow[12];

Gdzies sobie tworzysz przyciski:

for (int i = 0; i < 12; i++){
        multum_przyciskow[i] = new TPrzycisk(this, i, i);
        multum_przyciskow[i]->Parent = this;
        multum_przyciskow[i]->Top = random(300);
        multum_przyciskow[i]->Left = random(300);
        multum_przyciskow[i]->Caption = i;
        multum_przyciskow[i]->OnClick = Klik_klik;
  }

Dla sprawdzenia czy wzystko dziala jak powinno mamy metode:

void __fastcall TForm1::Klik_klik(TObject *Sender){
        TPrzycisk * p = (TPrzycisk *) Sender;
        ShowMessage(p->imie);
}

jak juz konczysz to zwalniasz pamiec i tyle.

0

Całą reszte wiedziałem chodziło mi o konstruktor. Bardzo dziękuję za odpowiedź :) siadam do kodowania :)...

0

Mam jeszcze jedno pytanie. Czy tak samo można dziedziczyć formę? Bo jak tak robie to kompiluje się ale podczas jej tworzenia wyskakuje mi błąd i zaznaczą tą linijke w forms.hpp:
inline __fastcall virtual TForm(Classes::TComponent* AOwner) : TCustomForm(AOwner) { }
Kod mojej klasy:

class TRozmowa : public TForm{
public:
        TSpeedButton *buton;
        __fastcall TRozmowa (TComponent * Owner) : TForm(Owner)
        {}
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1