TStringGrid - ograniczenie wyświetlanych znaków

dział ogólny

TStringGrid - ograniczenie wyświetlanych znaków

Nowy postprzez GoldWolf » wtorek, 3 marca 2009, 22:07

Witam, taki problemik jak w tytule. Do obiektu wrzucam liczby zmiennoprzecinkowe i chciałbym jakoś je obciąć do postaci 0.00, zastanawiam się czy wystarczy maska. Jednak łatwiej by było obciąć tylko liczbę wyświetlanych cyfr. Szczególnie, iż może się zdarzyć że liczba przed przecinkiem będzie większa np. 00.00 lub 000.00 co troche dyskwalifikuje maskę. Chociaż mógłbym zrobić 0000.00. Co radzicie zrobić z tym fantem, najlepiej było by ograniczyć jak w Edicie długość do 5 - 6 znaków.
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein

Błędów nie popełnia ten, kto nic nie robi. - Theodore Roosevelt
Avatar użytkownika
GoldWolf
Homos antropiczny
Homos antropiczny
 
Posty: 116
Dołączył(a): piątek, 16 stycznia 2009, 18:42
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Siódemka Profesjonalna
Kompilator: Microsoft Visual Studio 2010
Version 10.0.30319.1
Gadu Gadu: 0
    NieznanyNieznana

Re: TStringGrid - ograniczenie wyświetlanych znaków

Nowy postprzez Cyfrowy Baron » czwartek, 5 marca 2009, 10:50

Maska!

► patrz serwis: Cyfrowy Baron dział: porady -> StringGrid -> nakładanie maski
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: TStringGrid - ograniczenie wyświetlanych znaków

Nowy postprzez GoldWolf » czwartek, 5 marca 2009, 17:56

Nie zawracałbym ci głowy gdyby mi to działało:

Kod: Zaznacz cały
void __fastcall TForm1::StringGrid1GetEditMask(TObject *Sender, int ACol, int ARow,
     AnsiString &Value){
   if(ACol == 4)
      Value = "000.000";
}
//---------------------------------------------------------------------------


Dodatkowo zapytałem, bo myślałem, iż jest jakaś inna możliwość, powyższy kod nic nie zmienia.... Kod, który odpowiada za wyświetlanie
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein

Błędów nie popełnia ten, kto nic nie robi. - Theodore Roosevelt
Avatar użytkownika
GoldWolf
Homos antropiczny
Homos antropiczny
 
Posty: 116
Dołączył(a): piątek, 16 stycznia 2009, 18:42
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Siódemka Profesjonalna
Kompilator: Microsoft Visual Studio 2010
Version 10.0.30319.1
Gadu Gadu: 0
    NieznanyNieznana

Re: TStringGrid - ograniczenie wyświetlanych znaków

Nowy postprzez Miroo_007 » czwartek, 5 marca 2009, 18:44

Do ustawienia maski możesz użyć narzędzia MaskEdit ( w palecie: Additional). Wybierz właściwości MaskEdit następnie wybierz plik "us.dem" (plik ten zawiera maski zgodne z formatami używanymi w Stanach Zjednoczonych) i wybierz interesującą Cie maskę. Możesz też ręcznie tworzyć maski. Pomoc dotycząca tworzenia masek znajdziesz w C++ Builder (wpisz MaskEdit w Helpie).

Dodam jeszcze parę linków:
http://www.yevol.com/en/bcb/Lesson24.htm
http://doctor.programuj.com/maskedit
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: TStringGrid - ograniczenie wyświetlanych znaków

Nowy postprzez GoldWolf » czwartek, 5 marca 2009, 20:19

Zaskoczy was rozwiązanie ;-) sam doszedłem(znaczy znalazłem) nie trzeba żadnej maski ;-) :

Kod: Zaznacz cały
StringGrid1->Cells[3][licz + 1] = FormatFloat("0.00", Grupa.kurs_k[licz]);


Jeszcze myślę nad przerobieniem tej maski dla Grid.

Kod: Zaznacz cały
void __fastcall TForm1::StringGrid1GetEditMask(TObject *Sender, int ACol, int ARow,
     AnsiString &Value){

   if(ACol == 2){
//      Value.FormatFloat("0.00", Value);
      Value = FormatFloat("0.00", NULL);
      //   Value.FormatFloat("0.00", StringGrid1->Cells[2]);
     }
}


Czy jest możliwość by podać wartość, która była by domyślna? Sama metoda FormatFloat(maska, wartość) to wyklucza ?
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein

Błędów nie popełnia ten, kto nic nie robi. - Theodore Roosevelt
Avatar użytkownika
GoldWolf
Homos antropiczny
Homos antropiczny
 
Posty: 116
Dołączył(a): piątek, 16 stycznia 2009, 18:42
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Siódemka Profesjonalna
Kompilator: Microsoft Visual Studio 2010
Version 10.0.30319.1
Gadu Gadu: 0
    NieznanyNieznana


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

cron