CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Problem z kontrolką Label.

Problem z kontrolką Label.

dział ogólny

Problem z kontrolką Label.

Nowy postprzez Proton » poniedziałek, 2 lipca 2018, 15:52

Witam.

W środowisku C++ XE Berlin 10.1 mam problem z wyświetleniem wartości w kontrolce Label.
Jest zadeklarowana zmienna int Licznik;

W timerze co 1 s :
inkrementuję Licznik ++;
oraz wyświetlam jego wartość na dwóch kontrolkach :
Edit1->Text = IntToStr(Licznik);
Label1->Caption = IntToStr(Licznik);

W kontrolce Edit1 co sekundę pojawia się wartość licznika, natomiast w kontrolce Label1 czasami się coś pojawi,
jakby był problem z odświerzaniem formy.

Będę wdzięczny za pomoc.

Ed.
Avatar użytkownika
Proton
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 27 czerwca 2016, 10:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: XP,Win7
Kompilator: C++ Builder 5 , C++ Builder XE6
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z kontrolką Label.

Nowy postprzez lukagrom » poniedziałek, 2 lipca 2018, 16:17

Też mam Berlin, tyle że okrojony do wersji Starter.
Ja to robię tak: W sekcji prywatnej projektu deklaruje zmienną licznik
deklaruję -
KOD cpp:     UKRYJ  
private:
int licznik


Na początku w - FormCreate, daje mu - 0.
KOD cpp:     UKRYJ  
void __fastcall TForm1::FormCreate(TObject *Sender)
{

 licznik=0;
}
 

i w głównym zdarzeniu Timera zwiększam co 1.
KOD cpp:     UKRYJ  
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{


 Timer1->Enabled=true;
 Timer1->Interval=1000;
 Edit1->Text=IntToStr(licznik);
 Label1->Caption=IntToStr(licznik);
 ++licznik;
}
 

Odświeża się i Label i Edit. Inna kwestia, że ten Berlin u mnie zawsze dopiero kompiluje się za 2 razem, za pierwszym pokazuje błędy adresowania.
Avatar użytkownika
lukagrom
Homos antropiczny
Homos antropiczny
 
Posty: 64
Dołączył(a): wtorek, 1 stycznia 2013, 14:54
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows Vista
Kompilator: C++ Builder 10.1 Starter
Gadu Gadu: 0
    Windows VistaChrome

Re: Problem z kontrolką Label.

Nowy postprzez Proton » poniedziałek, 2 lipca 2018, 18:51

Ot takie pytanie co wyświetli Label1 a co Edit2 :
Dla właściwości formy FormStyle : system Win 7 Prof 64 bit ,program kompilowany na 64 bit
1. fsNormal
2. fsStayOnTop
3 .fsMDIForm

za godzinę odpowiem.

KOD cpp:     UKRYJ  
void __fastcall TMainForm::Timer1Timer(TObject *Sender)
{
 Label1->Caption= Licznik;
 Edit2->Text= Licznik;
 if(Licznik < 10)
  {
   Licznik += 1;
  }
  else
  {
   if(Licznik < 100)
        {
                Licznik += 10;
        }
        else
        {
         if(Licznik < 1000)
          {
                Licznik += 100;
          }
          else
           {
                 Licznik += 1000;
           }
          }
        }

}
//---------------------------------------------------------------------------
Avatar użytkownika
Proton
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 27 czerwca 2016, 10:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: XP,Win7
Kompilator: C++ Builder 5 , C++ Builder XE6
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z kontrolką Label.

Nowy postprzez Proton » wtorek, 3 lipca 2018, 10:10

Odpowiedź :
Dla wybranej właściwości formy FormStyle : fsNormal lub fsStayOnTop
Edit2 będzie wyświetlał 0,1,2...9,10,20,30 ...90,100,200,300...1000,2000.. itd
Label1 będzie wyświetlał to co powyżej

Dla wybranej właściwości formy FormStyle : fsMDIForm
Edit2 będzie wyświetlał 0,1,2...9,10,20,30 ...90,100,200,300...1000,2000.. itd
natomiast Label1 będzie wyświetlał 0,10,100,1000,10000

Czyżby programiści z Embarcadero coś przeoczyli.

Ed.
Avatar użytkownika
Proton
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 27 czerwca 2016, 10:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: XP,Win7
Kompilator: C++ Builder 5 , C++ Builder XE6
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z kontrolką Label.

Nowy postprzez Mironas » wtorek, 3 lipca 2018, 10:13

Proton napisał(a):w kontrolce Label1 czasami się coś pojawi, jakby był problem z odświerzaniem formy.

Aby odświeżyć label spróbuj wykonać jedną z tych metod:
KOD cpp:     UKRYJ  
  Label1->Refresh();
  Label1->Repaint();
 

A wstawiając kod na forum stosuj znaczniki CPP.

lukagrom napisał(a):ten Berlin u mnie zawsze dopiero kompiluje się za 2 razem, za pierwszym pokazuje błędy adresowania.

Błędy czy ostrzeżenia?
Bo u mnie (Tokyo) przy kompilacji wysypuje się cała masa ostrzeżeń. Dzieje się tak przy wyłączonej opcji:
Packages >> Runtime Packages >> Build with runtime packages
Być może jest konflikt z jakimś doinstalowanym komponentem. W wolnej chwili przeinstaluję środowisko i może uda mi się namierzyć problem.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 431
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder XE
TMS Components Pack
    WindowsChrome

Re: Problem z kontrolką Label.

Nowy postprzez Proton » wtorek, 3 lipca 2018, 11:13

Z moich obserwacji wynika ,że nie jest to problem z odświerzaniem ale z konwersją liczby na tekst.

Dla ustawionego FormStyle : fsNormal lub fsStayOnTop Label wyświetla to samo co Edit ,
natomiast dla fsMDIForm
Label jakby sam się przeskalowywał dla liczb : od 0...9 wyświetla 0 ,od 10...99 wyświetla 10, od 100 ... 999 wyświetla 100, od 1000 ... 9999 wyświetla 1000, w zależności jaką wartość przekroczy wyświetlana liczba jest wyświetlana inna wartość konwersji.

Podczas kompilacji nie jest zgłaszany żaden błąd ani ostrzeżenie.
Obecnie testuję środowisko Berlin 10.1 i zaobserwowałem to dziwne zjawisko.

Ed.
Avatar użytkownika
Proton
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 27 czerwca 2016, 10:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: XP,Win7
Kompilator: C++ Builder 5 , C++ Builder XE6
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z kontrolką Label.

Nowy postprzez polymorphism » środa, 4 lipca 2018, 10:54

Jak by to był problem z konwersją na tekst, to miałbyś problem z wyświetleniem wszystkich liczb. Zresztą po co konwertujesz dwa razy tę samą liczbę? Jedno wywołanie IntToStr wystarczy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2171
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 201
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z kontrolką Label.

Nowy postprzez lukagrom » środa, 4 lipca 2018, 15:59

Nawiązaując jeszcze do podwójnej kompilacji u "mojego Berlina" to niemal zawsze, za pierwszym razem (a zawsze przy użyciu instrukcji new/delete) pokazuje się error - Access violation at address 6CCA18C10 in module 'ieframe.dll'. Read of address 000000. Na takie coś daje - Project->Build All Projects i wszystko za drugim razem kompiluje się i uruchamia bez problemu.
Avatar użytkownika
lukagrom
Homos antropiczny
Homos antropiczny
 
Posty: 64
Dołączył(a): wtorek, 1 stycznia 2013, 14:54
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows Vista
Kompilator: C++ Builder 10.1 Starter
Gadu Gadu: 0
    Windows VistaChrome

Re: Problem z kontrolką Label.

Nowy postprzez Proton » czwartek, 5 lipca 2018, 11:42

Do polymorphism.

Co masz na myśli pisząc o jednej konwersji , skoro używam Labela i Edita to robię dwie konwersje na tekst, można to zrobić jeszcze inaczej ale nie o to pytam. Przykładowy programik ma za zadanie sprawdzić poprawność konwersji liczb.

Problem jest w tym, że dla ustawionego FormStyle : fsMDIForm konwersja jest nieprawidłowa, podczas konwersji zmienna Licznik jakby była nieprawidłowo zaadresowana.

Ed.
Avatar użytkownika
Proton
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 27 czerwca 2016, 10:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: XP,Win7
Kompilator: C++ Builder 5 , C++ Builder XE6
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z kontrolką Label.

Nowy postprzez polymorphism » czwartek, 5 lipca 2018, 12:14

Co masz na myśli pisząc o jednej konwersji

KOD cpp:     UKRYJ  
Edit1->Text = Label1->Caption = IntToStr(Licznik);
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2171
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 201
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z kontrolką Label.

Nowy postprzez Proton » czwartek, 5 lipca 2018, 13:33

Do polymorphism

Jaki kompilator przyjmuje Ci taki zapis : Edit1->Text = Label1->Caption = IntToStr(Licznik);
Ale przejdźmy do meritum sprawy.

Nawet taki zapis :

Edit2->Text = InToStr(Licznik);
Label1->Caption = Edit2->Text;

powoduje na ekranie nieprawidłowe zachowanie się kontrolki Label1 , zjawisko to zachodzi dla środowiska XE6 oraz Berlin 10.1

Jeśli właściwość Label1->AutoSize ustawimy na false to Label1 w ogóle się nie zmienia na ekranie.

Czekam na merytoryczne podpowiedzi.

Ed.
Avatar użytkownika
Proton
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 27 czerwca 2016, 10:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: XP,Win7
Kompilator: C++ Builder 5 , C++ Builder XE6
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z kontrolką Label.

Nowy postprzez Proton » czwartek, 5 lipca 2018, 16:26

cd.. problem z kontrolką Label.

Nowa informacja - jeśli kontrolkę Label1 wstawię na Panel to w/w problem znika.
Widocznie programiści coś namieszali z wyświetlaniem kontrolki Label , np: kontrolka StaticText zachowuje się prawie poprawnie tylko wlaściwość Transparent ma pewien problem.

Dzięki lukagrom , Mironas , polymorphism za podjęcie tematu.

Ed.
Avatar użytkownika
Proton
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 27 czerwca 2016, 10:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: XP,Win7
Kompilator: C++ Builder 5 , C++ Builder XE6
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z kontrolką Label.

Nowy postprzez polymorphism » czwartek, 5 lipca 2018, 16:27

Jaki kompilator przyjmuje Ci taki zapis :

Każdy? Choć tu może być inaczej, bo Text i Caption są właściwościami. Sprawdzałeś?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2171
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 201
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z kontrolką Label.

Nowy postprzez Proton » czwartek, 5 lipca 2018, 16:47

Do polymorphism

dla środowiska Berlin 10.1
zapis : Edit2->Text = Label1->Caption = IntToStr(Licznik);
generuje błąd
[bcc64 Error] MAIN.CPP(61): no viable conversion from 'void' to 'TCaption' (aka 'System::UnicodeString')

środowisko XE6 też nie toleruje takiego zapisu.

Ed.
Avatar użytkownika
Proton
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): poniedziałek, 27 czerwca 2016, 10:05
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: XP,Win7
Kompilator: C++ Builder 5 , C++ Builder XE6
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z kontrolką Label.

Nowy postprzez polymorphism » czwartek, 5 lipca 2018, 18:45

Ok, myślałem, że C++ Builder jest bardziej sprytny (nie używam go od dawna).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2171
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 201
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Następna strona

  • 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ł: Google [Bot] i 1 gość

cron