używanie obiektów z Form1 w funkcji

dział ogólny

używanie obiektów z Form1 w funkcji

Nowy postprzez Bert1223 » czwartek, 5 listopada 2009, 10:03

Witam, chciałbym zapytać w jaki sposób mogę w funkcji używać obiektów z klasy Form1?
Uciążliwe jest ciągłe pisanie:
Kod: Zaznacz cały
Form1->SQL->CommandText = insert;
         if(Form1->SQL->ExecSQL(True) == 1)
         {
            ShowMessage("Nowy dystrybutor został dodany!");
         }
Łatwiej było by po prostu SQL->CommandText...

Drugie pytanie to jak mogę przekazać nazwy obiektów w funkcji. Nie wiem czy użyłem prawidłowych określeń ale już tłumaczę na przykładzie.
Pracuję na kilki polach typu ComboBox. Złym pomysłem jest pisanie tej samej funkcji pod każdym przyciskiem 'dodaj pozycje' dla kaślżdego pola ComboBox.
Chciałbym napisać jedną funkcję tylko nie wiem w jaki sposób przekazać nazwę pola ComboBox na którym mają być wykonywane operację.
Avatar użytkownika
Bert1223
Bladawiec
Bladawiec
 
Posty: 45
Dołączył(a): czwartek, 15 października 2009, 02:41
Podziękował : 6
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: używanie obiektów z Form1 w funkcji

Nowy postprzez Darek_C++ » czwartek, 5 listopada 2009, 10:50

NP:
Kod: Zaznacz cały
void MyTest(TComboBox *ComboBox1, String tekst)
{
   ComboBox1->Text = tekst;
}
// wywolanie
MyTest(ComboBox1,"Jakiś tekst") ;
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: używanie obiektów z Form1 w funkcji

Nowy postprzez Cyfrowy Baron » czwartek, 5 listopada 2009, 11:08

Co do tego wskaźnika na Form1 to jeżeli np. obiekt SQL znajduje się na formularzu Form1, to nie musisz pisać Form1->SQL->... wystarczy samo SQL->...
Jeżeli np. obiekt SQL znajduje się na Form1 a Ty odwołujesz się do niego z Form2 to nie ma rady musisz adresować obiekt poprzez Form1->SQL.
Możesz stworzyć funkcję, która jako argument będzie posiadała wskaźnik na obiekt SQL, ale adresując ten wskaźnik, jeżeli funkcja i obiekt nie są przypisane do klasy formularza Form1 musisz używać adresowania poprzez Form1->SQL->...

Zakładam, że SQL to obiekt typu TSQLDataSet (na przyszłość podawaj pełną nazwę obiektu by nie trzeba się domyślać), przykład i wywołanie funkcji:

// przykładowa funkcja
Kod: Zaznacz cały
//w pliku nagłówkowym np. Unit2.h sekcja private:
private:
   void __fastcall FunkcjaSQL(TSQLDataSet *SQL); // deklaracja funkcji
//-------------------------

//w pliku źródłowym np. Unit1.cpp
#include "Unit1.h" // zawiadomienie o formularzu Form1

void __fastcall Form2::FunkcjaSQL(TSQLDataSet *SQL) // definicja funkcji
{
  SQL->CommandText = insert;
  if(SQL->ExecSQL(True) == 1)
  {
    ShowMessage("Nowy dystrybutor został dodany!");
  }
}


Wywołanie funkcji - zakładając, że funkcja i jej wywołanie znajdują się na tym samym formularzu np. Form2
Kod: Zaznacz cały
void __fastcall TForm2::Button1Click(TObject *Sender)
{
  FunkcjaSQL(Form1->SQL);
}




Co do tego ComboBox to postępujesz podobnie:

Kod: Zaznacz cały
void __fastcall TForm1::Funkcja(TComboBox *ComboBox)
{
  ComboBox->... coś tam ...
}
//---------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Funkcja(ComboBox1);
}
//---------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Funkcja(ComboBox2);
}


Koniecznie przeczytaj artykuł w serwisie Cyfrowy Baron w dziale teoria -> Przekazywanie obiektów i funkcji pomiędzy formularzami.
Pomocny może też być artykuł: Cyfrowy Baron dział: teoria ->Funkcje

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Bert1223
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: używanie obiektów z Form1 w funkcji

Nowy postprzez Bert1223 » czwartek, 5 listopada 2009, 17:28

Dziękuje za pomoc.
Avatar użytkownika
Bert1223
Bladawiec
Bladawiec
 
Posty: 45
Dołączył(a): czwartek, 15 października 2009, 02:41
Podziękował : 6
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 12 gości

cron