Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: MonthView
visual




Typ: neutral
Postów: 18
Zarejestrowany: Oct 2004
MonthView

Czy może ktoś wie jak zakreślic w tej kontrolce takim kółeczkiem jakis inny dzień niż "Today"? gdy podaje .value=data to jedynie zaznacza takim zacieniowaniem i to ledwo widocznym

13-10-2004 20:35
Pokaż profil visual  Wyślij email do visual   
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Jeżeli sama kontrolka tego nie umożliwia to Subclassing


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

17-10-2004 17:55
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Nie wiem, czy subclassing tutaj cokolwiek pomoże. To czerwone kółeczko to wewnętrzne procedury kontrolki, więc raczej nic nie da. Można próbować podać kontrolce fałszywą datę lub już po narysowaniu kółeczka zamalować je i narysować gdzie indziej.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

17-10-2004 18:12
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
visual




Typ: neutral
Postów: 18
Zarejestrowany: Oct 2004

Jak zamalować to nie mam pojęcia... A jak podać fałszywą datę tej kontrolce również? Mogłbyś coś przybliżyć mi ten temat? Pozdrawiam

17-10-2004 20:32
Pokaż profil visual  Wyślij email do visual   
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Nie, nie mógłbym, bo sam nie za bardzo wiem .

Mam tylko mętne pomysły:
1) Teoria zakreślenia jest prosta - rysujesz białe kółeczko zakrywajace poprzednie czerwone, a potem swoje czerwone (dowolną funkcja rysującą). Natomiast problemem może się okazać ustalenie gdzie dokładnie trzeba wymalować nasze kółeczka.
2) Tutaj już jest trudniej. Prawdopodobnie dałoby się przechwycić wywołanie funkcji, której MonthView używa do pobrania czasu i jakoś zfałszować dane. Ostatecznie można zmienić datę przy uruchamianiu kontrolki, apotem ją przywrócić. Ale nie wiem, czy nie zareaguje na ponowną zmianę.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

17-10-2004 22:35
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

wartość Value trzeba przypisać np. w momencie wczytywania formy.

Poza tym patrząc na właściwości i metody raczej możliwe jest ustawienie tego "kółeczka".

Radziłbym poczytać MSDN

Pozdrawiam.

[Post edytowany dnia 17-10-2004 23:51 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

17-10-2004 23:47
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Ale .Value ustawia to szare kółeczko, a my cały czas mówimy o takim czerwonym zakreśleniu.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

18-10-2004 00:46
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Mam nadzieję, ze o to chodziło:

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Dim data As SYSTEMTIME

With data
    .wDay = MonthView1.Day
    .wMonth = MonthView1.Month
    .wYear = MonthView1.Year
End With

'ustawia czerwone kolko
Call SetToday(MonthView1.hwnd, data)
End Sub


A to wklej w jakims module

Public Type SYSTEMTIME
    wYear      As Integer
    wMonth      As Integer
    wDayOfWeek  As Integer
    wDay        As Integer
    wHour      As Integer
    wMinute    As Integer
    wSecond    As Integer
    wMilliseconds  As Integer
End Type

Private Const MCM_FIRST = &H1000

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Function SetToday(ByVal hwnd As Long, data As SYSTEMTIME) As Long
    Const MCM_SETTODAY = (MCM_FIRST + 12)
    SetToday = SendMessage(hwnd, MCM_SETTODAY, 0&, data)
End Function


Pozdrawiam

[Post edytowany dnia 18-10-2004 16:40 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

18-10-2004 16:39
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1