logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Statusbar zakrywany przez TreeView i problemy z przewijaniem ListView

y0yster 09 Kwi 2007 13:50 1916 4
REKLAMA
  • #1 3769167
    y0yster
    Poziom 19  
    Posty: 471
    Pomógł: 9
    Ocena: 76
    Witam. Mam problem z statusbarem. O co konkretnie chodzi? Kiedy wczytuję dane do treeview zakrywa mi on cały statusbar. Kiedy rozszerzę okienko wszystko jest w pożadku i powraca do normalnego stanu rzeczy. Używam funkcji GetClientRect, a potem ustawiam pozycje treeview za pomocą MoveWindow. Jest jescze jeden problem, kiedy wczytam do listview jakąś liczbę elementów, która nie mieści się i jest tworzony scrollbar, to gdy przesunę scrollbarem, na listviewie zostaje mi taki pasek z statusbara (górna część ramki).

    Nie wiem co jest grane. Może jakieś cudowne style należy ustawić, aby wszystko działało jak należy, czy przy przewijaniu dać odświeżanie okna?

    Proszę o szybką odpowiedź.
  • REKLAMA
  • #2 3769205
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    powiedz może w czym to w ogóle robisz ok? a tak przy okazji - zastanawiam się jak może ci cokolwiek przykryć stastusbar skoro gdy go rzuci się na formę to on odrazu automatycznie "przykleja" się do jej dolnej części i żaden inny komponent nie może go z niej usunąć czy zakryć. Może tego statusbar'a kładzisz gdzie indziej czy jak? czy może wszystko robisz poprostu w kodzie zamiast ręcznie na początku przy projektowaniu okienka?

    ... podaj więcej szczegółów aby można było coś więcej ci podpowiedzieć

    pozdrówka
  • REKLAMA
  • #3 3769239
    krzychoocpp
    VIP Zasłużony dla elektroda
    Posty: 1866
    Pomógł: 387
    Ocena: 58
    Witam, nie wiem czy to pomoże, ale w swoim dawnym projekcie znalazłem coś takiego:
    MoveWindow(Handle,0,0,0,0,true)

    'Handle' to uchwyt statusbara. Wywoływane było podczas odświeżania okna. Działało to dobrze, ale nie jestem pewien czy Tobie akurat pomoże.

    PS. Jeśli nie chcesz mieć więcej takich dziwnych problemów, to zainteresuj się może Qt, jak dla mnie nie ma porównania z WinAPI. Programy tworzy się dużo szybciej i nie ma tylu problemów z GUI.

    Pozdrawiam, Krzysztof.
  • REKLAMA
  • #4 3770396
    y0yster
    Poziom 19  
    Posty: 471
    Pomógł: 9
    Ocena: 76
    Program piszę w winapi oczywiście. Co do tego Mirek to z tego co wiem zajmujesz sie delphi, a dla mnie delphi to coś takiego jak vb, a vb to lepiej nie mówić :P. Można jednak przykryć statusbara. Potem się zorientowałem, że nie odejmuje szerokości statusbara dla innych kontrolek i dlatego takie coś się działo.

    Dzięki Krzysiek za taki kod, ale już rozwiązałem, a co do kodu, to to prawdopodobnie powinno pomóc, ale na razie tego nie sprawdzam bo już się z tym uporałem. Czy mógłbyś bliżej coś powiedzieć o Qt, to jest coś z linuxa? Pod linuxem jest GTK, czy coś takiego, ale to już jest o wiele bardzie pokręcone.
  • #5 3770776
    krzychoocpp
    VIP Zasłużony dla elektroda
    Posty: 1866
    Pomógł: 387
    Ocena: 58
    Witam, ten kod miał (chyba) za zadanie przemalowanie statusbara, bo jego wymiarów i położenia nie można zmienić. Bez niego po zmianie rozmiarów okna zostawała pozioma kreska na środku (statusbar).

    Qt jest na Linuksa, Windowsa, Maca i niedługo ma wyjść na Windows CE (jst też kilka innych wersji). Dużą zaletą pisania w Qt jest pełna obiektowość i automatyzm. Reklamują się "Code less. Create more" i rzeczywiście się zgadza, bo to co w WinAPI musiałbyś napisać sam, w Qt już zwykle jest (nawet obsługa CSS dla GUI). Jeśli użyjesz tylko Qt, to program będzie przenośny między systemami, ale to tylko biblioteka, więc możesz użyć WinAPI a z Qt stworzyć np. tylko interfejs lub obsługę baz danych. Troche dziwnie się przestawić i wykorzystać niektóre możliwości, ale to fajne uczucie kasować 30 linijek i zastępować je jedną :)

    Problemy też się zdarzają, ale zwykle są niewielkie. Też miałem podobne przygody z tworzeniem GUI, kiedy je skończyłem okazało się że pod innymi Windowsami nie działa tak jak powinno. Z Qt nie ma tego problemu. Biblioteka jest na GPL - żeby jej uzyć za darmo Twój program musi też na niej być. Jest tez licencja komercyjna, ale to dość droga impreza. Z Qt korzystają między innymi Photoshop i Opera.

    Pozdrawiam, Krzysztof.
REKLAMA