CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Dodanie danych do StringGrid - problem:)

Dodanie danych do StringGrid - problem:)

dział ogólny

Dodanie danych do StringGrid - problem:)

Nowy postprzez mayday » wtorek, 24 maja 2011, 18:24

Jestem poczatkujacym w programowaniu i mam maly problem, sprobuje go opisac :)
w kontrolce ComboBox mam np. 4 dane:

-ford
-fiat
-mazda
-hona

i do kazdej pozycji mam przypisane po 4 wartości :

KOD cpp:     UKRYJ  
double V1[]={1,2,3,4}
double V2[]={5,6,7,8}
double V3[]={9,10,11,12}
double V4[]={13,14,15,16}

teraz bym chcial wypelnic tabelke StringGrid po naciscnieciu w kontrolke Button danymi ww, tylko w taki sposob gdy wybiore z ComboBox 'fiat' to do StringGrida wejda dane fiat(pozycja [0 0]) 2(pozycja [1 0]) 6(pozycja [2 0]) 10(pozycja [3 0]) 14(pozycja [4 0]), i analogicznie po dodaniu nastepnej danej z ComboBox zostanie doday nastepny wiersz wypelniony odpowienimi warosciami (np. mazda 3 7 11 15).

Bede wdzieczny za pomoc :)
Avatar użytkownika
mayday
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): wtorek, 24 maja 2011, 17:40
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows 7Chrome

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez Cyfrowy Baron » wtorek, 24 maja 2011, 20:53

Twoje pytanie jest absolutnie niezrozumiałe!!! :twisted:

mayday napisał(a):i do kazdej pozycji mam przypisane po 4 wartości :


Jak przypisane, gdzie przypisane?

mayday napisał(a):gdy wybiore z ComboBox 'fiat' to do StringGrida wejda dane fiat(pozycja [0 0]) 2(pozycja [1 0]) 6(pozycja [2 0]) 10(pozycja [3 0]) 14(pozycja [4 0]),


Skąd to się bierze? Gdzie to jest zapisane.



► patrz serwis: Cyfrowy Baron dział: porady

sekcja: ComboBox
sekcja: StringGrid
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
    Windows XPFirefox

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez mayday » czwartek, 9 czerwca 2011, 18:41

zanalazlem odpowiedz na moje zawile pytanie:)

Kod: Zaznacz cały
void __fastcall TForm1::DodajClick(TObject *Sender)
{
//Parametr1
  double V1[]={1,2,3,4};
    //Parametr2
       double V2[]={5,6,7,8};
         //Parametr3
           double V3[]={9,10,11,12};
             //Parametr4
                 double V4[]={13,14,15,16};

  int zmienna1=StringGrid1->RowCount;

  StringGrid1->Cells[1][zmienna1]=FloatToStr(V1[ComboBox1->ItemIndex]);
    StringGrid1->Cells[2][zmienna1]=FloatToStr(V2[ComboBox1->ItemIndex]);
      StringGrid1->Cells[3][zmienna1]=FloatToStr(V3[ComboBox1->ItemIndex]);
        StringGrid1->Cells[4][zmienna1]=FloatToStr(V4[ComboBox1->ItemIndex]);

          StringGrid1->RowCount++;
}


mam jeszcze jeden problem, chce rowniez aby dodawano do kolejnego "StringGrid2" same parametry, np gdy wybiore pierwsza pozycje z "ComboBox1" i zalozmy pozycje trzecia to cztery zmienne z V1 i V3 dodaly sie do siebie (wynik oczekiwany - 10 12 14 16)? jakies pomysly? :)
Avatar użytkownika
mayday
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): wtorek, 24 maja 2011, 17:40
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows 7Chrome

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez Cyfrowy Baron » piątek, 10 czerwca 2011, 16:55

mayday napisał(a):cztery zmienne z V1 i V3 dodaly sie do siebie


V1 i V3 to zmienne, a konkretnie tablice typu double. Nie zawierają zmiennych lecz wartości liczbowe. Typ double przechowuje liczby zmienno-pozycyjne.

Do sumowania najlepiej skorzystać z funkcji accumulte z biblioteki numeric

KOD cpp:     UKRYJ  
 double V1[] = {1,2,3,4};
 double V3[] = {9,10,11,12};

 double Result1 =  accumulate(V1, V1 + 4, 0.0);
 double Result2 =  accumulate(V3, V3 + 4, 0.0);

 double sum = Result1 + Result2;
mayday napisał(a):chce rowniez aby dodawano do kolejnego "StringGrid2" same parametry,


Pytanie niezrozumiałe.

mayday napisał(a):jakies pomysly?


Pytaj tak by inni zrozumieli o co Tobie chodzi, a będą jakieś pomysły.
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
    Windows XPFirefox

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez mayday » czwartek, 16 czerwca 2011, 14:25

Specjalnie nie potrafie skorzystac z funkcji accumult tak aby bylo ok.
Ponizej zamieszczam czesc kodu i fotke zeby bylo jasniej o co mi chodzi.
Na fotce w drugim StringGridzie jest sumowanie, gdzie niestety mam problem, wartosci te sie nie sumuja, tylko jakby przypisuja.
Prawidłowo powinno byc tak: Spalanie=4, Rocznik=12, Cena=20, Pojemnosc=28. I oczywiscie przy dodaniu obojetnie ktorej marki z pola combox1,wartosci maja rowniez sie zsumowac.

Kod: Zaznacz cały
void __fastcall TForm1::DodajClick(TObject *Sender)
{
//Zmienna1
  float V1[]={1,2,3,4};
    //Zmienna2
       float V2[]={5,6,7,8};
         //Zmienna3
           float V3[]={9,10,11,12};
             //Zmienna4
                 float V4[]={13,14,15,16};


int zmienna1=StringGrid1->RowCount;

StringGrid1->Cells[0][zmienna1]=ComboBox1->Text;
   StringGrid1->Cells[1][zmienna1]=FloatToStr(V1[ComboBox1->ItemIndex]);
     StringGrid1->Cells[2][zmienna1]=FloatToStr(V2[ComboBox1->ItemIndex]);
       StringGrid1->Cells[3][zmienna1]=FloatToStr(V3[ComboBox1->ItemIndex]);
         StringGrid1->Cells[4][zmienna1]=FloatToStr(V4[ComboBox1->ItemIndex]);

StringGrid1->RowCount++;

   float zm1 = StrToFloat(V1[ComboBox1->ItemIndex]);
     float zm2 = StrToFloat(V2[ComboBox1->ItemIndex]);
       float zm3 = StrToFloat(V3[ComboBox1->ItemIndex]);
         float zm4 = StrToFloat(V4[ComboBox1->ItemIndex]);


    float Result1 =  accumulate(V1,V1,zm1);
      float Result2 =  accumulate(V2,V2,zm2);
        float Result3 =  accumulate(V3,V3,zm3);
          float Result4 =  accumulate(V4,V4,zm4);


      StringGrid2->Cells[1][1]=Result1;
        StringGrid2->Cells[2][1]=Result2;
          StringGrid2->Cells[3][1]=Result3;
            StringGrid2->Cells[4][1]=Result4;

}


http://zapodaj.net/dc9f8bf8f0b5.jpg.html
Avatar użytkownika
mayday
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): wtorek, 24 maja 2011, 17:40
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows 7Firefox

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez Cyfrowy Baron » piątek, 17 czerwca 2011, 08:45

KOD cpp:     UKRYJ  
  float Result1 =  accumulate(V1,V1,zm1);
      float Result2 =  accumulate(V2,V2,zm2);
        float Result3 =  accumulate(V3,V3,zm3);
          float Result4 =  accumulate(V4,V4,zm4);


Błędy! Przecież pokazałem, jak używać funkcji accumulate:

Powinno być:

KOD cpp:     UKRYJ  
  float Result1 =  accumulate(V1,V1 + 4, 0.0); /* + 4 - liczba elementów w tablicy; 0.0 - wartość od której zaczyna się sumowanie */
       float Result2 =  accumulate(V2,V2 + 4, 0.0);
        float Result3 =  accumulate(V3,V3 + 4, 0.0);
          float Result4 =  accumulate(V4,V4 + 4, 0.0);
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
    Windows XPFirefox

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez mayday » piątek, 17 czerwca 2011, 12:37

Tylko nie o ten rezultat mi chodzi, w ten sposob wszystkie wartosci odrazu sa zsumowane, nawet gdy wybiore tylko jedna pozycje z "Combobox" , chce aby tylko te pozycje ktore zostana wybrane z "Combobox" zostana zsumowane tak jak na zdjeciu wybralem dwie pozycje i chce aby tylko te dwie sie zsumowaly, i analogicznie gdy bym dodal 3 zsumowala by sie itd. (jak bym np. wybral tylko jedna pozycje zalozmy fiat to wyswietlic sie powinny tylko wartosci do fiata, jak dodam nastepna np. ford bedzie zsumowana z wartosciami fiat itd. ). Jeszcze dodam link do fotki, gdzie pokazuje rezultat funkcji accumulate w polu "StringGrid2", i czerwona czcionka poprawione jakie byc powinny w tym przypadku prawdziwe wartosci. (nic nie ma byc na sztywno zsumowane tylko to co zostanie wybrane z "ComboBox" i dodanie do "StringGrid1")

http://zapodaj.net/38bbaf101731.jpg.html
Avatar użytkownika
mayday
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): wtorek, 24 maja 2011, 17:40
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows 7Chrome

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez Cyfrowy Baron » piątek, 17 czerwca 2011, 12:40

Ja nie wiem o co Tobie chodzi z tym ComboBox-em bo opisujesz problem w sposób niezrozumiały. Nie wiem jak ComboBox jest połączony z tymi tablicami, gdyż w Twoim kodzie nie ma tego połączenia.

Chciałeś sumowanie - masz sumowanie.
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
    Windows XPFirefox

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez Cyfrowy Baron » sobota, 18 czerwca 2011, 09:39

Domyśliłem się już, co chcesz zrobić i widzę, że pomysł z tablicami jest do dupy.

Zasadnicze pytanie, czy ten program piszesz na jakieś zaliczenie i użycie tablic jednowymiarowych jest konieczne, czy też piszesz go dla własnych potrzeb i uznałeś po prostu, że tablice to dobry pomysł?
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
    Windows XPFirefox

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez mayday » sobota, 18 czerwca 2011, 14:07

Dzieki za pomoc! Juz poradzilem sobie z tym problem troche w inny sposob.:)

KOD cpp:     UKRYJ  
void __fastcall TForm1::DodajClick(TObject *Sender)
{

//Zmienna1
  float V1[]={1,2,3,4};
    //Zmienna2
       float V2[]={5,6,7,8};
         //Zmienna3
           float V3[]={9,10,11,12};
             //Zmienna4
                 float V4[]={13,14,15,16};

 float b = StrToFloat(V1[ComboBox1->ItemIndex]);
   float c = StrToFloat(V2[ComboBox1->ItemIndex]);
     float d = StrToFloat(V3[ComboBox1->ItemIndex]);
       float e = StrToFloat(V4[ComboBox1->ItemIndex]);

        int zmienna1=StringGrid1->RowCount;

 StringGrid1->Cells[0][zmienna1]=ComboBox1->Text;
   StringGrid1->Cells[1][zmienna1]=FloatToStr(V1[ComboBox1->ItemIndex]);
     StringGrid1->Cells[2][zmienna1]=FloatToStr(V2[ComboBox1->ItemIndex]);
       StringGrid1->Cells[3][zmienna1]=FloatToStr(V3[ComboBox1->ItemIndex]);
         StringGrid1->Cells[4][zmienna1]=FloatToStr(V4[ComboBox1->ItemIndex]);

         StringGrid1->RowCount++;

         b1+=b;
          c1+=c;
            d1+=d;
              e1+=e;
                i1+=ilosc;


 String b4 = FloatToStrF(b1, ffNumber, 7, 2);
  String c4 = FloatToStrF(c1, ffNumber, 7, 2);
   String d4 = FloatToStrF(d1, ffNumber, 7, 2);
    String e4 = FloatToStrF(e1, ffNumber, 7, 2);
     String i4 = FloatToStrF(i1, ffNumber, 7, 2);

 StringGrid2->Cells[1][1]=b4;
  StringGrid2->Cells[2][1]=c4;
   StringGrid2->Cells[3][1]=d4;
    StringGrid2->Cells[4][1]=e4;
     StringGrid2->Cells[5][1]=i4;
}
 


Mam jeszcze jeden maly problem, chce zabezpieczyc pole edit tak aby tylko mozna bylo wprowadzic cyfry od 0 do 9 i przycisk backspace.
Od 0 do 9 mam tylko mam problem z przyciskiem backspace ;/

KOD cpp:     UKRYJ  
void __fastcall TForm1::Edit5KeyPress(TObject *Sender, char &Key)
{
  if ((Key!='0')&&(Key!='1')&&(Key!='2')&&(Key!='3')&&(Key!='4')&&
        (Key!='5')&&(Key!='6')&&(Key!='7')&&(Key!='8')&&(Key!='9'))
          {Key=0;}
 
Avatar użytkownika
mayday
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): wtorek, 24 maja 2011, 17:40
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows 7Chrome

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez Cyfrowy Baron » sobota, 18 czerwca 2011, 21:43

mayday napisał(a):Mam jeszcze jeden maly problem, chce zabezpieczyc pole edit tak aby tylko mozna bylo wprowadzic cyfry od 0 do 9 i przycisk backspace.


KOD cpp:     UKRYJ  
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
  if(!strchr("0123456789", Key) && Key != VK_BACK) Key = 0;  
}




mayday napisał(a):Juz poradzilem sobie z tym problem troche w inny sposob.:)


Ten pomysł z tablicami jest nieadekwatny do potrzeb, ale skoro Tobie to wystarcza, to nie będę już podawał sposobu z zastosowaniem map i vector-ów :x

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
mayday
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
    Windows XPFirefox

Re: Dodanie danych do StringGrid - problem:)

Nowy postprzez mayday » niedziela, 19 czerwca 2011, 00:01

Powiedzmy ze wystarcza :D Wazne ze prgramik chodzi jak nalezy i mam nadzieje ze zaliczenie bedzie na pozytyw :) jeszcze raz dzieki :x
Avatar użytkownika
mayday
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): wtorek, 24 maja 2011, 17:40
Podziękował : 1
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows 7Chrome


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