logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C++] Jak przekazać zmienne z okien dialogowych do formularza głównego w C++ Builder 6?

SACZI 31 Sie 2004 10:14 4066 8
REKLAMA
  • #1 824173
    SACZI
    Poziom 16  
    Posty: 302
    Pomógł: 6
    Ocena: 14
    W aplikacji mam kilka formularzy. Na formularzu głównym jest trzon aplikacji, natomiast na formularzach tworzonych jako okienka dialogowe modalne umieszczam funkcje zapisu wartości do zmiennych globalnych, które mam zdefiniowane na formularzu głównym.
    Lub inaczej, na formularzu głównym przycisk Button1 wywołuje mi oddzielny formularz, okienko konfiguracyjne ... Z kolei w tym oknie wprowadzając sobie dane, poprzez kliknięcie przyciku umieszczeonego na nim, zapisuje dane do zmiennych zadeklarowanych w formularzu głównym.

    Niestety nie moge sie dostać do do tych zmiennych okna głównego z formularzy dialogowych.
    Jak to zrobić ?

    C++ Builder 6

    Zamykam. - arnoldziq
  • REKLAMA
  • #2 824290
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Można to zrobić na dwa sposoby.
    1. objektowy, przekazać wskaźniki do tych zmiennych w konstruktorze do wnętrza objektu. Dostęp realizować przez lokalne wskaźniki.
    2. kombinowany, exportować/importować określone zmienne lokalne.
  • REKLAMA
  • #3 827861
    krzychoo_soft
    Poziom 17  
    Posty: 233
    Pomógł: 16
    Ocena: 13
    chyba chodzi ci o to;]
    to jest przykład edycji zmiennych (pseudo) globalnych formularza głównego. Zmiennymi globalnymi były by zmienne zadeklarowane (tak mi się wydaje) w "project source" a nie jak w tym przykładzie i zapewne w twoim przypadku w unit1.cpp czy klasie Form1. Ale to co podesłałem działa, i podejżewam że właśnie o to ci chodziło.

    pozdrawiam,
    Załączniki:
    • przyklad.rar (348.81 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 829231
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    krzychoo_soft napisał:
    to jest przykład edycji zmiennych (pseudo) globalnych formularza głównego. Zmiennymi globalnymi były by zmienne zadeklarowane (tak mi się wydaje) w "project source" a nie jak w tym przykładzie i zapewne w twoim przypadku w unit1.cpp czy klasie Form1. Ale to co podesłałem działa, i podejżewam że właśnie o to ci chodziło.

    z twojego opisu można wywnioskować że kombinujesz jak 'koń pod górke' :) ja napisałem coś co działa w inny sposób. Od tego są pliki nagłówkowe. W unit1 dołączyłem plik nagłówkowy unit2.h a w unit2 dołączyłem plik nagłówkowy unit1.h i mam dostęp do forularzy tak jak w załączniku.
    Załączniki:
    • dostep_do_innych_formulazy.rar (24.2 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #5 829459
    krzychoo_soft
    Poziom 17  
    Posty: 233
    Pomógł: 16
    Ocena: 13
    BoskiDialer :arrow:
    Cytat:
    W unit1 dołączyłem plik nagłówkowy unit2.h a w unit2 dołączyłem plik nagłówkowy unit1.h



    Hehe, ciekawe ;]
    Jak byś chociaż zajrzał do źródła które podesłałem, sprawa była by jasna. To co podesłałeś, to nic innego jak edycja (własności) obiektu, który jest na innym formularzu!!!! Nie widze tam żadnych zmiennych globalnych! Ani jakichkolwiek innych zmiennych które możemy deklarować i edytować z innego formularza.

    A to co napisałeś, nie działa w inny sposób!!! - to nie działa wcale.
    Co do kombinowania pod górę... to chyba nie o mnie ;]

    pozdrawiam,
  • REKLAMA
  • #6 830566
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    Krzychoo_soft:
    Radze tobie przeczytać post zaczynający temat, niema tam nic na temat zmiennych globalnych aplikacji (pisałeś coś o project surce) tylko zmiennych globalnych formularza, mowa jest o przekazywaniu danych z okna modalnego do formularza głównego, a jeśli z Form2 zapisuje dane do Form1->Edit1 to równie dobrze moge zadeklarować zmienne i odwoływać się do nich w ten sam sposób. a pozatym edycja obiektu może być utożsamiana z przesyłaniem danych gdyż to jest przesyłanie danych. najprostrza metoda przekazywania danych to w formularzu głównym zdefiniować kilka zmiennych(jak już napisałem) bądź funkcje która jako parametry pobiera jakieś dane wynikowe, w pliku okna modalnego dołączyć plik nagłówkowy okna głównego i po określonych warunkach wywoływać funkcje formularza głównego.

    p.s. Owszem zajżał bym do źródełka gdyby nie te 3pkt przez które ten twój plik jest dla mnie bezwartościowy (moge sobie napisać inny własny kod).
  • REKLAMA
  • #7 831220
    SACZI
    Poziom 16  
    Posty: 302
    Pomógł: 6
    Ocena: 14
    Witam.
    Rozwiazanie problemu juz znalazłem. Rozchodziło się o przekazywanie obiektów pomiędzy formularzami.
    Program rozpisałem w sposób, jaki podał Krzycho_soft.
  • #8 831516
    krzychoo_soft
    Poziom 17  
    Posty: 233
    Pomógł: 16
    Ocena: 13
    BoskiDialer ->
    Cytat:
    Radze tobie przeczytać post zaczynający temat, niema tam nic na temat zmiennych globalnych aplikacji


    A ja radzę tobie przeczytać: Operacje na zmiennych globalnych z okien dialogowych. Tak właśnie nazywa się ten temat. I dlaczego się sprzeczasz.


    Cytat:
    ...a pozatym edycja obiektu może być utożsamiana z przesyłaniem danych gdyż to jest przesyłanie danych

    nie, edycja obiektu w twoim wykonaniu to nic innego jak dostęp (nie przesyłanie danych!!) do klasy TForm1 i TForm2 za pomocą wskażników itd. Nie myl tych pojęć.

    Cytat:
    Owszem zajżał bym do źródełka gdyby nie te 3pkt przez które ten twój plik jest dla mnie bezwartościowy (moge sobie napisać inny własny kod).

    Więc, jak możesz oceniać coś czego nie znasz? Jeśli chodzi o punkty, to ja straciłem 0.75 na coś nietrafionego w temat, ale cóż.

    Temat (chyba) zamknięty.
    Pozdrawiam,
  • #9 831596
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    krzychoo_soft ->
    SACZI napisał:
    W aplikacji mam kilka formularzy. Na formularzu głównym jest trzon aplikacji, natomiast na formularzach tworzonych jako okienka dialogowe modalne umieszczam funkcje zapisu wartości do zmiennych globalnych, które mam zdefiniowane na formularzu głównym.

    dokładniej o to mi chodziło. Jeśli kod Form2 modyfikuje Edit1 znajdujący sie na Form1 to jest to wymiana danych, Edit1 jest niczym innym jak klasą zmiennych i metod, jeśli na Form1 zdefiniuje zmienną Error_modal typu bool (dostęp jest taki sam jak do Edit1) i jeśli okno modalne wpisze wartość 'true' do tej zmiennej to jest nic innego jak przekazanie danych! inny sposób przekazywania danych to tak jak już opisałem zdefiniować funkcje pobierającą jako parametry wszystkie dane które mają być przekazane do formularza głównego, a w kodzie tej funkcji wykorzystać te zmienne.

    co do załącznika.. załącznik jest opisany, nietrzeba go było ściągać :)

    ja sie wyłączam z tej dyskusji.
    EOT

Podsumowanie tematu

✨ W dyskusji poruszono problem przekazywania zmiennych z okien dialogowych modalnych do formularza głównego w środowisku C++ Builder 6. Głównym zagadnieniem było, jak uzyskać dostęp do zmiennych zadeklarowanych w formularzu głównym z poziomu formularzy dialogowych. Zaproponowano dwa podejścia: przekazywanie wskaźników do zmiennych w konstruktorze formularza dialogowego lub eksport/import zmiennych lokalnych. Wskazano, że zmienne globalne aplikacji różnią się od zmiennych formularza i że dostęp do zmiennych formularza głównego można uzyskać poprzez dołączenie odpowiednich plików nagłówkowych i odwołania do instancji formularza głównego (np. Form1->Edit1). Podkreślono, że modyfikacja właściwości obiektu formularza głównego z poziomu formularza dialogowego jest formą przekazywania danych. Alternatywnie, można zdefiniować w formularzu głównym funkcje przyjmujące parametry, które będą wywoływane z formularza dialogowego w celu przekazania danych. Ostatecznie rozwiązanie polega na odpowiednim zarządzaniu referencjami do obiektów formularzy i wykorzystaniu mechanizmów C++ Builder do komunikacji między formularzami.
Wygenerowane przez model językowy.
REKLAMA