CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - TMonthCalendar przesuwanie kodem

TMonthCalendar przesuwanie kodem

dział ogólny

TMonthCalendar przesuwanie kodem

Nowy postprzez Android » wtorek, 11 stycznia 2011, 00:19

Witam,
Chciałem wykorzystać w swojej aplikacji komponent TMonthCalendar. Przy ustawieniu odpowiednio dużej wartości Height mieszczą się na nim 3 miesiące dla bieżącego czasu jest to styczeń, luty i marzec (domyślnie). Po przesunięciu strzałką w lewo uzyskujemy efekt w postaci: grudzień 2010, styczeń i luty 2011 i takie ustawienie mnie interesuje, natomiast nie doszukałem się jak "przesunąć" kalendarz bez użycia strzałek i myszki - z poziomu kodu.
Bardzo proszę o pomoc :)
Drugie pytanie odnośnie tego komponentu to czy da się realnie zmienić wielkość czcionki - przeskalować kalendarz, sprawdzałem wszystkie dostępne properties, które odnosiły się do rozmiaru, czcionki itd i nie uzyskałem takiego efektu.

Z góry dziękuję za wszelką pomoc :)
Pozdrawiam,
Android
Avatar użytkownika
Android
Bladawiec
Bladawiec
 
Posty: 46
Dołączył(a): poniedziałek, 5 kwietnia 2010, 16:51
Podziękował : 16
Otrzymał podziękowań: 2
System operacyjny: Windows 7 Pro x64
Kompilator: C++ Builder XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: TMonthCalendar przesuwanie kodem

Nowy postprzez Cyfrowy Baron » środa, 12 stycznia 2011, 10:27

Trochę chyba za mało nad tym myślałeś.
Przesunięcie kalendarza z poziomu kodu można uzyskać tylko poprzez zmianę daty:

KOD cpp:     UKRYJ  
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 MonthCalendar1->Date = TDateTime(2010, 12, 1);
}


i już na pierwszym miejscu masz grudzień 2010 roku.

Co do drugiego problemu to powiem szczerze, że chyba nie do końca rozumiem o co pytasz. Przecież obiekt TMonthCalendar ma właściwość Font, którą możesz zmieniać w Object Imspector na zakładce Properties. Można to zrobić również z poziomu kodu:

KOD cpp:     UKRYJ  
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 MonthCalendar1->Font->Name = "Verdana";
 MonthCalendar1->Font->Size = 14;
 MonthCalendar1->Font->Style = TFontStyles() << fsBold;
 MonthCalendar1->Width = 705;
}
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: TMonthCalendar przesuwanie kodem

Nowy postprzez Android » środa, 12 stycznia 2011, 11:51

Co do pierwszego... owszem, przesunie się okno ale zwróć uwagę, że data aktualna jest zaznaczona - podając datę z ubiegłego miesiąca zamiast aktualnej wyświetlane informacje nie będą prawidłowe. Problem właśnie na tym polega, żeby zaznaczona była data prawidłowa a widoczny był miesiąc przed - dokładnie taki efekt uzyskuje się przesuwając "strzałkami" na komponencie - zaznaczenie daty zostaje w styczniu a widoczny jest tez grudzień.

Jeśli chodzi o "Font" - faktycznie, jest i można zmieniać ale ta zmiana jest czysto wirtualna (i nie w znaczeniu C++) - fizycznie ani przed ani po kompilacji w wyglądzie kalendarza nic się nie zmienia, nie zależnie od ustawienia rozmiaru, typu i koloru czcionki - przynajmniej u mnie, być może jest to błąd środowiska ale sprawdzałem kilka razy - m.in. przed chwilą dla pewności.
W przypadku Width ustawienie wartości większej daje jedynie efekt, że obok jednego miesiąca pojawia się kolejny (lub kolejne w zależności czy nowa wartość jest wielokrotnością "domyślnej"). Kalendarz nie jest skalowany tylko powielany.
Avatar użytkownika
Android
Bladawiec
Bladawiec
 
Posty: 46
Dołączył(a): poniedziałek, 5 kwietnia 2010, 16:51
Podziękował : 16
Otrzymał podziękowań: 2
System operacyjny: Windows 7 Pro x64
Kompilator: C++ Builder XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: TMonthCalendar przesuwanie kodem

Nowy postprzez Cyfrowy Baron » środa, 12 stycznia 2011, 14:06

Jeśli chodzi o "Font" - faktycznie, jest i można zmieniać ale ta zmiana jest czysto wirtualna (i nie w znaczeniu C++) - fizycznie ani przed ani po kompilacji w wyglądzie kalendarza nic się nie zmienia, nie zależnie od ustawienia rozmiaru, typu i koloru czcionki - przynajmniej u mnie, być może jest to błąd środowiska ale sprawdzałem kilka razy - m.in. przed chwilą dla pewności.


U mnie, w C++Builder 2010 wszystko się zmienia.



Co do pierwszego problemu to wystarczy tak:

KOD cpp:     UKRYJ  
 MonthCalendar1->Date = TDateTime(2010, 12, 1);
 MonthCalendar1->Date = Now();


To oczywiście zadziała, ale stwarza kolejne problemy i na dłuższą metę przesuwanie nie działa tak jak za pomocą strzałek.
Przejrzałem wszystkie metody klasy TMonthCalendar i nie ma tam żadnej funkcji, która by to umożliwiała, a opcja przesuwania strzałkami jest zhermetyzowana i niedostępna poza klasą. Ten komponent nie został przewidziany do takich celów.

Jeżeli nie chce się Tobie tworzyć podobnego komponentu od podstaw, to mogę tylko polecić komponent TPlannerCalendarGroup z pakietu TMS Components Pack, ale to są komponenty komercyjne. Jednak ten komponent byłby idealny do twoich celów, gdyż można nim swobodnie sterować i modyfikować jego wygląd.
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: TMonthCalendar przesuwanie kodem

Nowy postprzez Android » środa, 12 stycznia 2011, 18:43

Faktycznie - można w ten sposób obejść brak metod :) dzięki :)
A z czcionką nie wiem o co chodzi - aktualnie też mam wersję 2010 i sprawdzałem dzisiaj u znajomego na 2009 i jest dokładnie taki sam efekt jak u mnie (czyli brak efektu).
Dzięki raz jeszcze za pomoc :)
Avatar użytkownika
Android
Bladawiec
Bladawiec
 
Posty: 46
Dołączył(a): poniedziałek, 5 kwietnia 2010, 16:51
Podziękował : 16
Otrzymał podziękowań: 2
System operacyjny: Windows 7 Pro x64
Kompilator: C++ Builder XE2
Gadu Gadu: 0
    Windows 7Firefox


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