C++ Builder 6.0

dział ogólny

C++ Builder 6.0

Nowy postprzez Przemyslav » piątek, 29 lipca 2016, 23:15

Witam wszystkich bardzo serdecznie. Czy spotkaliście się z problemem w przypadku C++ Builder 6.0 zmiany wielkości formy podczas zmniejszenia rozdzielczości ekranu.

Przykład: Piszę program na komputerze stacjonarnym z rozdzielczością: 1920x1080 i forma wygląda przykładowo:

Obrazek

W momencie odpalenia projektu na laptopie przy rozdzielczości np. 1280x720, oprócz tego, że okno Buildera jest mniejsze to jeszcze sam pomniejsza mi formę:

Obrazek

Takiej formy nie mogę rozszerzyć, przewinąć, a kompilacja daje mi tylko "ucięty" program. Czy można jakoś temu zaradzić?

Pozdrawiam :)
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    WindowsFirefox

Re: C++ Builder 6.0

Nowy postprzez Cyfrowy Baron » sobota, 30 lipca 2016, 00:54

Nigdy się z czymś takim nie spotkałem. Błąd prawdopodobnie bierze się z tego, że C++Builder 6 nie jest nawet w pełni zgodny z Windows'em XP, a ty próbujesz go używać na Windows 8.1. Tego środowiska używałem jeszcze w czasach Windows 98. Potrzebujesz nowszego środowiska, co najmniej C++Builder 2006.

No chyba, że to kwestia ustawień środowiska, ale dziś już nie pamiętam co można by tam pozmieniać.

Normalnie to powinno być tak, że rozmiar formularza pozostaje bez zmian i co najwyżej znika za krawędzią ekranu, ale nie jest obcinany. Na obydwu screenach widać, że kontrolki okna do minimalizacji, maksymalizacji itp. pozostają we właściwym miejscu, czyli zmienia się tylko rozmiar formularza. We właściwościach formularza (zakładka Properties) masz właściwości Width i Height - spróbuj wprowadzić tam nowe wartości, to powinno zmienić rozmiar formularza. Sprawdź też czy właściwość AutoSize formularza masz ustawioną na false, w przeciwnym razie będzie automatycznie skalowana, chociaż to wcale nie tłumaczy zachowania się tej formy.
We właściwości Constraints masz cztery inne właściwości w których możesz ustalić minimalne i maksymalne dopuszczalne wymiary okna, poniżej i powyżej których okno nie może być skalowane.
Nic więcej nie przychodzi mi do głowy

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

Re: C++ Builder 6.0

Nowy postprzez Mironas » poniedziałek, 1 sierpnia 2016, 09:36

Sprawdź parametr Position.

Za ten post autor Mironas otrzymał podziękowanie od:
Przemyslav
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: C++ Builder 6.0

Nowy postprzez Przemyslav » poniedziałek, 1 sierpnia 2016, 10:39

Okay, dzięki za poradę. Sprawdzę wieczorem i dam znać :)
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    WindowsFirefox

Re: C++ Builder 6.0

Nowy postprzez Cyfrowy Baron » poniedziałek, 1 sierpnia 2016, 11:19

Właściwość Position określa położenie okienka na ekranie, ale jak widać na drugim screenie, okienko nie znika poza ekranem bo widoczne są kontrolki okna (minimize, maximize, close), a mimo to okno wygląda jakby było przycięte.
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 7Firefox

Re: C++ Builder 6.0

Nowy postprzez Przemyslav » poniedziałek, 1 sierpnia 2016, 11:26

Okay, pokaże jak to wygląda w praktyce:

1. Tak wygląda okno programu i środowiska po odpaleniu na rozdzielczości laptopa: 1366x768:

Obrazek

2. A tak wygląda okno formy po przesunięciu do dolnej i prawej krawędzi:

Obrazek

Prawa krawędź jest obcięta, dolna też - tam mam status bar.

Jeśli chodzi o parametry:
- Width i Height fory nie mogę wpisać większej niż 1378 i 780 - nie mam żadnych blokad założonych - domyślnie forma ma wartości: 1418 i 839.

Resztę parametrów mam takich:

Obrazek

Kombinowałem z tym co podaliście i nic się nie udaje.
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    WindowsFirefox

Re: C++ Builder 6.0

Nowy postprzez Mironas » poniedziałek, 1 sierpnia 2016, 11:48

@Cyfrowy Baron
Właściwość Position określa jak ma być dobrane położenie oraz rozmiar okna.

@Przemyslav
Jeśli chcesz aby system dopasował rozmiar okna w zależności od rozmiaru ekranu to ustaw Position na poDefault lub poDefaultSizeOnly.
http://docwiki.embarcadero.com/Librarie ... m.Position

Za ten post autor Mironas otrzymał podziękowanie od:
Przemyslav
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: C++ Builder 6.0

Nowy postprzez Przemyslav » poniedziałek, 1 sierpnia 2016, 11:55

@Mironas niestety przestawienie opcji na: poDefault lub poDefaultSizeOnly nie przyniosło oczekiwanego rezultatu. Dalej forma jest obcinana od prawej i dolnej krawędzi. Pod rozdzielczością 1920x1080 okno przesunąłem w jak najbardziej w lewy, górny róg ekranu i zapisałem projekt + kompilacja. Przeniosłem na latopa na mniejszą rozdzielczość i dalej obcina.

EDIT: Pod Borland Developer Studio 2006 środowisko na etapie projektowania wyświetla poprawnie okno, natomiast po skompilowaniu program - forma jest obcięta.
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    WindowsFirefox

Re: C++ Builder 6.0

Nowy postprzez Mironas » poniedziałek, 1 sierpnia 2016, 13:12

No przecież napisałem żebyś ustawił na te wartości "Jeśli chcesz aby system dopasował rozmiar okna w zależności od rozmiaru ekranu"
Natomiast jeśli nie chcesz aby system zmieniał rozmiar to ustaw na poDefaultPosOnly albo na poDesigned.

Jeśli okno jest zbyt duże w stosunku do ekranu komputera to prawdopodobnie system zawsze wymusi zmniejszenie okna. Może taki przypadek jest u Ciebie?

Za ten post autor Mironas otrzymał podziękowanie od:
Przemyslav
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: C++ Builder 6.0

Nowy postprzez Przemyslav » poniedziałek, 1 sierpnia 2016, 13:32

@Mironas zmiana parametru Position na wszelkie sposoby nie pomaga. Dalej forma jest obcięta.

Zauważyłem drugą ciekawostkę zarówno pod Borland Developer Studio 2006 i C++ Builder 6.0 otworzyłem nowe projekty pod rozdzielczością 1366x768 z domyślnymi ustawieniami formy. Chciałem podać wartości formy dla Width i Height np.: 1800 i 900, jednak program je blokuje i maksymalnie ustawia w polu edycji wartości: 1378 i 780. Wynika z tego, że nie można projektować programów - form większych niż natywna rozdzielczość. Wy u siebie też tak macie? Możecie spróbować utworzyć projekt formę na wyższej rozdzielczości i zobaczyć jak się zachowuje pod niższą rozdzielczością po kompilacji?
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    WindowsFirefox

Re: C++ Builder 6.0

Nowy postprzez Cyfrowy Baron » poniedziałek, 1 sierpnia 2016, 13:38

Dziwna rzecz z tym twoim formularzem. Manipulowanie pozycją Position nie rozwiąże problemu. Co prawda system przeskaluje okno i pewnie to się u ciebie dzieje, ale kontrolki będą poza obszarem widzialnym gdyż rozmiar formularza jest po prostu za duży dla niższych rozdzielczości.

W celu naocznego uzmysłowienia ci problemu ustaw właściwości:

VertScrollBar > Visible = True
HorzScrollBar > Visible = True
AutoScroll = True

A potem zamieść screen okna z niższej rozdzielczości.

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

Re: C++ Builder 6.0

Nowy postprzez Przemyslav » poniedziałek, 1 sierpnia 2016, 13:50

Bez zmian (w prawym górnym rogu są kontroli systemowe - maksymalizacja, minimalizacja itd...):

Obrazek

Zauważyłem kolejną ciekawostkę dot. statusbaru:

1. Normalnie w status barze mam tam jakiś tekst i emotę:

Obrazek

2. W przypadku skracania formy - skalowania, mam takie wrażenie jakby statusbar wskakiwał wyżej na formę, za PageControl - chowa się:

Obrazek
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    WindowsFirefox

Re: C++ Builder 6.0

Nowy postprzez Cyfrowy Baron » poniedziałek, 1 sierpnia 2016, 13:55

Nie tego się spodziewałem. Zrób tak: ustaw AutoScroll na true, ale na etapie programowanie zmniejsz rozmiar formularz na np. 1024x576, skompiluj. Powinny pojawić się paski przewijania. Potem rozciągnij okno na pełny ekran i paski przewijania powinny zniknąć.

Co się tyczy pytania o rozmiar formularze w stosunku do rozmiaru pulpitu, to też tak mam.

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

Re: C++ Builder 6.0

Nowy postprzez Przemyslav » poniedziałek, 1 sierpnia 2016, 14:08

Na etapie programowania są paski przewijania, i z nimi mogę podejrzeć całą formę na etapie programowania :) Oczywiście po kompilacji dalej ścina o_0 Panowie damy chyba spokój, po prostu na laptopie nie będę tym projektem się zajmował, chyba, że edycja plików tekstowych ;)

Dla testu pobieram jeszcze: Embarcadero RAD Studio 10.1 Berlin. Zobaczę jak się zachowuje mój projekt i zupełnie nowy :)
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    WindowsFirefox

Re: C++ Builder 6.0

Nowy postprzez Cyfrowy Baron » poniedziałek, 1 sierpnia 2016, 14:20

Problem w tym, że jeżeli przeniesiesz tak skonstruowaną aplikację na komputer z rozdzielczością mniejsza niż u ciebie, to każdy będzie miał ten problem.
To musi być jakiś błąd środowiska.

Spróbuj jeszcze czegoś takiego. Umieść to w konstruktorze klasy formularza:
KOD cpp:     UKRYJ  
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 this->AutoScroll = false;
 TRect scR = Screen->WorkAreaRect;

 this->SetBounds(0, 0, scR.Width(), scR.Height() );
}
Ten kod w momencie tworzenia formularze powinien go przeskalować do rozmiaru okna.



Jeżeli to nie zadziała. To musisz projektując aplikację na komputerze z niszą rozdzielczością zmniejszyć znacząco formularz i używać pasków przewijania.



Nigdy nie stanąłem przed takim problemem. Nigdy nie tworzyłem aplikacji dla konkretnej rozdzielczości. Nawet jeżeli z założenia aplikacja miała działać w wysokiej rozdzielczości to projektowałem ją tak, by dobrze wyglądała w rozdzielczości niższej. Dlatego na etapie programowania, formularz miał taki rozmiar, jaki powinien mieć w najniższej założonej rozdzielczości.
Dawniej używałem np. rozdzielczości 1280x1024 i w takiej rozdzielczości projektowałem, ale zakładając, że program będzie również pracował na rozdzielczości 1024x768. Dlatego na etapie projektowania taki rozmiar ustalałem dla formularza. Dziś te programy bez problemu skalują się i dobrze wyglądają w rozdzielczości HD.

Tak powinieneś tworzyć swoją aplikację, by dało się jej używać w niższej rozdzielczości niż używana przez ciebie. Dlatego na etapie programowania formularz powinien mieć mniejszy rozmiar.

Powinieneś wiedzieć, że kontrolki: przyciski, listy, pola Edit itp. nie muszą być zawsze wyrównywane do lewego górnego rogu okna. Sterując właściwością Anchors możesz określać jak ma być wyrównywany komponent na formularzu. Przeprowadź testy z tą właściwością i dowolnym komponentem by zrozumieć jak on działa.



Przyszła mi do głowy jeszcze jedna rzecz. Ustaw właściwość Align formularza na alClient. To powinno rozciągnąć formularz.



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

Następna strona

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

cron