Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[VB.NET 2010] ListView.ScrollBar - czy jest widoczny



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, …
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
bogdan



Dołączył: 06 Wrz 2005
Posty: 172

PostWysłany: Nie Gru 29, 2019 1:13 pm  OP    Temat postu: [VB.NET 2010] ListView.ScrollBar - czy jest widoczny Odpowiedz z cytatem Pisownia

Witam
Jak mo?na sprawdzi? (programowo) czy scrollbar (listView w widoku System.Windows.Forms.View.Details) jest widoczny ?
Ta informacja przyda?aby mi si? do zmodyfikowania szeroko?ci kolumn listy.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Pon Gru 30, 2019 11:44 am      Temat postu: Odpowiedz z cytatem Pisownia

1. Ustawi?em dla ListView w?a?ciwo?? Scrolable na True
2. Po uruchomieniu programu mam pocz?tkowo pusty ListView. Wówczas ScrollBar w ListView nie jest pokazywany.
3. Doda?em ?wiczebnie na form? Button, którym mog? takim jak ni?ej kodem doda? do ListView nowy Item. Zmienna NrWiersza jest zadeklarowana na poziomie modu?u. :
Kod:
NrWiersza += 1
        With ListView1.Items.Add("Wiersz nr " & CStr(NrWiersza))
            .SubItems.Add("dane z p?tli")
        End With

4. Uruchamiam program i klikam Button, dodaj?c kolejne wiersze do ListView. Dodaj?c wiersze sprawdzam kiedy zachodzi zdarzenie ClientSizeChanged kontrolki ListView. W tym celu do tego zdarzenia doda?em taki kod:
Kod:
With ListBox1
            .Items.Add("")
            .Items.Add("Zmiana:")
            .Items.Add("ClientSize.width=" & ListView1.ClientSize.Width)
            .Items.Add("ClientSize.Height=" & ListView1.ClientSize.Height)
End With

Po ka?dym dodaniu nowego Itema do kontrolki ListView w ListBox pokazuje si? informacja o wymiarach jej w?a?ciwo?ci ClientSize. Dopóki wysoko?? wszystkich dodanych wierszy nie przekracza wysoko?ci ClientSize.Height, to w?a?ciwo?? ClientSize.Width, si? nie zmienia. Natomiast je?li kolejny dodany wiersz ju? zaczyna chowa? si? pod doln? kraw?d? ListView , to kontrolka ListView powi?ksza swoj? "powierzchni? klienta" czyli ClientSize, a poniewa? ona sama nie zwi?ksza swych zewn?trznych wymiarów, to dodaje pionowego ScrollBara by u?ytkownik móg? nim przewija? wiersze.
Z powy?szego wynika, ?e opisane wy?ej zdarzenie mo?na wykorzysta? programowo do sprawdzania pokazywania si? pasków przewijania. Tu opisa?em pionowy, ale w podobny sposób mo?na zapewne kontrolowa? pasek przewijania poziomego.

_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
bogdan



Dołączył: 06 Wrz 2005
Posty: 172

PostWysłany: Pon Gru 30, 2019 12:18 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Niezupe?nie o to chodzi, ale dzi?kuj? za odpowied?.
Szukam raczej jakiej? w?asno?ci (flagi) kontrolki, która informuje o wy?wietlaniu, b?d? nie paska przewijania w ListView.
Sposób podany przez Ciebie jest dobry do celów testowych, ale nie nadaje si? do u?ycia w aplikacji (kontrolka wczytuje porcj? danych i je wy?wietla. Nie wiemy z góry ile b?dzie wierszy, dodatkowo mo?liwe s? ró?ne ustawienia czcionki oraz rozdzielczo?ci ekranu). Próbowa?em ju? wcze?niej napisa? funkcj? obliczaj?c? ilo?? wierszy listy mieszcz?c? si? w kontrolce (przy bie??cych ustawieniach kontrolki), ale nie uzyska?em dobrych rezultatów. Dodatkowo sprawa si? komplikuje je?eli pojawia si? poziomy pasek przewijania.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Pon Gru 30, 2019 2:32 pm      Temat postu: Odpowiedz z cytatem Pisownia

Nie istnieje bezpo?rednio flaga, ale przecie? wszystko, co potrzeba do oblicze?, jest dost?pne. Rodzaj czcionki nie ma znaczenia, bo zawsze je?li kolumny dynamicznie zmieniaj? sw? szeroko??, to ma to (lub mo?e mie?) wp?yw na szeroko?? kolumn, a przez to na szeroko?? ClientSize.
Co do wysoko?ci kontrolki i jej pionowego ScrollBara, to, znaj?c "zewn?trzn?" wysoko?? ListView, mo?na ?atwo obliczy?, przy jakiej ilo?ci wierszy pojawia si? pionowy pasek przewijania i jak to si? ma do momentu pokazywania paska poziomego. Wszystko zale?y od tego, co dok?adnie chcesz osi?gn??. Je?li "wskakuj?cy" pasek pionowy nagle zaczyna przys?ania skrajny prawy wiersz, to mo?na w tym momencie wyregulowa?, czy w jaki? sposób dostosowa? szeroko?ci kolumn, by je zw?zi?, albo poszerzy? zewn?trzn? szeroko?? ListView.

W DataGridView, któr? w miar? dobrze pozna?em, jest na przyk?ad mo?liwo?? ustawiania kolumnom rodzaju reakcji na zawarto?? komórek. Na przyk?ad mo?na zablokowa? zmian? szeroko?ci. A w takiej sytuacji u?ytkownik, naje?d?aj?c myszk? na zbyt w?sk? w stosunku do tre?ci komórk?, zobaczy ToolTip pokazuj?cy pe?n? tre?? komórki. Pewnie to samo mo?na wykorzysta? w ListView.

Cytat:
Nie wiemy z góry ile b?dzie wierszy
To przecie? mo?na policzy? w mgnieniu oka zaraz po wczytaniu.
Cytat:
Dodatkowo sprawa si? komplikuje je?eli pojawia si? poziomy pasek przewijania
Wg mnie przy odpowiednio du?ej porcji testów i cierpliwo?ci prawie wszystko da si? zrobi?.
_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, … Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.20841 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |