Górna belka komponentu TListViev

problemy z funkcjonowaniem bibliotek, komponentów itp.

Górna belka komponentu TListViev

Nowy postprzez Darek_C++ » niedziela, 27 lipca 2008, 14:12

Standardowo górna belka ListViev jest taka:
Obrazek

a chciał bym zrobić trochę "delikatniejszą" jak w tym przykładzie:
Obrazek
tylko jaka właściwość jest za to odpowiedzialna ???

Pozdrawiam
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Cyfrowy Baron » niedziela, 27 lipca 2008, 19:05

Musisz doÅ‚Ä…czyć manifest do programu ► patrz serwis: Cyfrowy Baron dziaÅ‚: różne 1 | WyglÄ…d kontrolek w Windows XP. jak umieÅ›cić manifest w zasobach programu.
To typowy wygląd kontrolki w Windows XP. ale żeby uzyskać taki wygląd potrzebny jest manifest.
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
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Darek_C++ » niedziela, 27 lipca 2008, 19:36

To jednak nie jest kwestia manifestu, bo ten mam dołączony, a komponent wygląda właśnie tak jak na grafice :( a ten poniżej inaczej.
Zakładam też ze to są takie same komponenty czyli TListViev.
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 28 lipca 2008, 09:24

Komponent ListView z manifestem w Windows XP (bo manifest działa tylko w WinXP) powinien wyglądać (u mnie tak wygląda) tak:

listview.png


Wygląd kontrolek standardowych, a ListView do nich należy jest zdefiniowany w API systemu, wiec muszą wyglądać tak jak definiuje je system, być może masz źle włączony manifest w zasoby programu, lub manifest jest źle napisany.
Żeby sprawdzić czy manifest jest dobrze włączony do programu, utwórz manifest w Notatniku:

Kod: Zaznacz cały
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
     type="win32"
    name="DelphiApplication"
    version="1.0.0.0"
     processorArchitecture="*"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>


zapisz go w tym samym katalogu co program pod nazwÄ…: nazwa_programu.exe.manifest, gdzie nazwa_programu, to nazwa Twojego programu.
Jeżeli to nie pomoże, a inne komponenty np. przyciski Button wyglądaj jak w Windows XP, to oznacza, że wersja BCB, której używasz nie zawiera klas MFC przystosowanych do WinXP i nie pozostaje nic innego jak poszukać komponentów w pełni zgodnych z tym systemem, lub przejść na nowszą wersję środowiska np. Borland Developer Studio 2006, ale ta wersja nie jest już dostępna w wersji darmowej.



PS. Grafiki umieszczanej w postach nie musisz ładować z zewnętrznego serwera, możesz ją dodać do postu poprzez załącznik, tylko żeby ją wyświetlało w poście musisz wybrać podczas dodawania załącznika przycisk Umieść w treści wiadomości w ten sposób możesz przenieść na serwer plik z dysku swojego komputera.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Darek_C++ » poniedziaÅ‚ek, 28 lipca 2008, 09:45

W praktyce wygląda to tak, że manifest umieszczam jako komponent Manifest XP który jest dostępny w Turbo C++. I tak jest jak Piszesz na kompie gdzie jest ustawiony pulpit jako schemat XP jest tak jak na Twoim zrzucie okna, ale na drugim kompie gdzie nie mam ustawione jako XP wygląda tak jak na moim zrzucie przy czym program odnośnik wygląda jak wygląda. Czyli jednak nie jest to kwestia ustawienia manifestu.

Zresztą program odnośnik ma całkiem inny wygląd niż ten z XP. ListViev jest w nim taki wklęsły, a z XP belka owszem jest delikatna, ale całość jest "plaska".

Pozdrawiam
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 28 lipca 2008, 12:42

ale na drugim kompie gdzie nie mam ustawione jako XP wygląda tak jak na moim zrzucie przy czym program odnośnik wygląda jak wygląda


Manifest ustawia wygląd kontrolek na nowy schemat kolorów, ale jeżeli w systemie zmienisz ten schemat na 'styl klasyczny Windows', to kontrolki będą wyglądały jak w Windows 98, taka jest zasada działania manifestu.

Np. gdy u siebie włączę inny schemat kolorów 'Confusion':

listview2.png


to manifest dostosowuje wygląd elementów odpowiednio do wybranego schematu kolorów.
W przypadku stylu klasycznego, system wymusza ustawienia typowe dla Windows 98.

W sieci można znaleźć trochę nietypowe komponenty modyfikujące nieco wygląd kontrolek bez wsparcia API, posiadają one najczęściej właściwość Flat wygładzającą nieco kontrolki. Mają jednak swoją wady, ponieważ nie korzystają z API to nie ma na nie wpływu schemat kolorów, manifest nie odnosi się do nich. Takie kontrolki niezależnie od tego w jakim środowisku zostaną uruchomione i z jakim schematem kolorów (WinXP) zawsze wyglądają tak samo.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Koziol » poniedziaÅ‚ek, 28 lipca 2008, 12:56

Widzę że temat zszedł nieco na manifest'y to zadam takie małe pytanko, czy można tworzyć własne style, nie zależne od ustawień systemu?
Takie jak np ma Winamp, albo WMP w wersji 10 bodajrze?
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
PodziÄ™kowaÅ‚ : 8
OtrzymaÅ‚ podziÄ™kowaÅ„: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Darek_C++ » poniedziaÅ‚ek, 28 lipca 2008, 12:59

CB wszystko siÄ™ zgadza, ale w tym przedmiotowym programie nie jest to kwestia manifestu...
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 28 lipca 2008, 13:40

Więc jest to kwestia komponentu, potrzebujesz niestandardowego ListView, z właściwości Flat. Takie niestandardowe kontrolki oferuje np. pakiet LMD, ale odpowiednika ListView wśród nich nie ma.
Co ciekawe u mnie nawet bez manifestu ten komponent lepiej wyglÄ…da:

listview3.png

ale gdy ustawiłem u siebie w Windows XP styl klasyczny Windows to wygląda dokładnie tak jak to przedstawiłeś na pierwszym obrazku czyli tak:

Obrazek

wiec dla mnie jest oczywiste, że tam gdzie manifest nie jest obsługiwany kontrolka wygląda jak wygląda.

wiec już nie wiem co jest nie tak u Ciebie, właściwie to przestałem już rozumieć Twój problem. wiec chyba nie wyrażasz się zbyt klarownie.



Co do tworzenia własnych stylów to oferuje to platforma .NET Framework i można w jakiś sposób tworzyć własne skrypty w XML, łączyć je z manifestem i ewentualnie z bibliotekami zawierającymi niestandardowe wyglądy kontrolek, ale nie wiem jak się to robi. Może w przyszłości bliżej się temu przyjrzę.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Darek_C++ » poniedziaÅ‚ek, 28 lipca 2008, 14:07

Cyfrowy Baron napisał(a):wiec już nie wiem co jest nie tak u Ciebie, właściwie to przestałem już rozumieć Twój problem. wiec chyba nie wyrażasz się zbyt klarownie.
Czy widzisz różnicę między wyglądem komponentu z grafiki:
http://img68.imageshack.us/img68/1928/schowek02iy7.jpg

A tÄ… http://img507.imageshack.us/img507/7564 ... k02hb9.jpg
Jest to okno z tego programu: http://www.multiproxy.org/
Zakladka: Options -> Proxy server list

Obydwa są uruchamiane na tym samym komputerze wiec nie jest to kwestia manifestu (moj ma dodany manifest) tylko ewentualnie innego komponentu podobnego do ListViev lub innych ustawień.
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 28 lipca 2008, 15:44

Trzeba było tak od razu. Można to zrobić ustawiając styl nagłówka ListView na HDS_BUTTONS:

Kod: Zaznacz cały
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
HWND header;
DWORD style;

header = (THandle *)SendMessage(ListView1->Handle, LVM_GETHEADER, 0, 1);
style = GetWindowLong(header, GWL_STYLE);
style = style ^ HDS_BUTTONS;
SetWindowLong(header, GWL_STYLE, style);
}


Problem w tym, że teraz na nagłówku nie da się klikać w kolumny.
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
    NieznanyNieznana

Re: Górna belka komponentu TListViev

Nowy postprzez Darek_C++ » poniedziaÅ‚ek, 28 lipca 2008, 15:59

:) I to jest to. Widocznie w takim układzie nie działa klikanie na belkę kolumn, a szkoda....

Dziękuję za poświęcony czas.
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana


Powrót do Biblioteki i komponenty

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości

cron