Heh.. kolejny konkurs... Tym razem aspekt wizualny, a problem trudny. Konkurs Kończy się 16 lutego o godziniue 20.30, wygrywa kod który bedzie zoptymalizowany i spełniał wszystkie warunki działania, a wszystko powinno się mieścić w Jednej, góra dwóch procedurach(w ramach jednej procedury można używać pseudokodu, jak ktoś chce). w konkursie może brac udział każdy, kto może wypić piwo (jedno lub więcej) i zrozumie warunki działania oczekiwane od kodu. A o to zadanie:
Jest sobie ListView z ViewStyle ustawionym na vsReport, mający 3 kolumny.
Pierwsza kolumna to: 1 checkbox, 1 ikonka 16x16 i text UPCASE do 4 liter.
Druga to sam text, ale długi.
Trzecia to też text, ale raczej krótki...
i teraz sandardowo kolumny powinny wyglądać tak po pokazaniu okienka:
Pierwsza powinna być widoczna w całości, druga też, a trzecia też, z tym że jeżeli w drugiej text się nie mieści to trzecia powinna zmniejszyć się, ale nie wiecej niż o polowe swojej szerokości, a wszystkie mają sie mieścić w szerokości ListViewa
Teraz, ponieważ okienko z listviewem może być resizowane kolumny powinny dopasowywać do szerokości listviewa, w ten oto sposób:
Gdy szerokość maleje:
Pierwsza kolumna nie zmienia swojej szerokości, trzecia zmniejsza, dopóki nie osiągnie połowy długości najdłuższego textu, a druga, gdy już zmniejszy się trzecia zmniejsza się do 0. gdy druga osiągnie 0 zablokowac należy zmniejszanie okna
Gdy szerokość rośnie:
Pierwsza się nie zmienia, druga rośnie, dpoóki nie osiągnie całej długości najdłuższego textu, następnie rośnie trzecia aż do osiągnięcia całej długości najdłuższego textu, a potem już rośnie szerokość drugiej.
Kolejny bajer: kolumny mogą być resizowane przez użytkownika, tylko że pierwsza nie zmienia nigdy swojej szerokości, druga ma nieograniczoną możliwość zmiany, a trzecia minimalna szerokość to długość połowy najdłuższego textu. Ponieważ okno można resizować szerokości kolumn muszą zmieniać się proporcjonalnie.
Ciekawe, co? Nagroda za poprawne rozwiązanie: [browar] lub [soczek] dowolnie wybranej marki. Nagrodzony zostaje kod najbardziej optymalny i spełniający wszystkie warunki działania, oraz mogący być zaadaptowany do różnych warunków.
Powodzenia [cya]
//hehe, dryo troche nie przeczytał, ale to nic, może inni bedą czytać dokładnie...
Dodatkowe uwagi:
0. Wszystkie itemy są tworzone dynamicznie...
- Nie sugerować się długością textu w znakach, bo IIII jest węższe od WWW mimo iż ma więcej znaków (a statycznie zgodnie z warunkami nie da się ustawić).
- Mozna pisać też w BCB, mi to nie robi problemu, bo jako tako kumam C++
- Czytać dokładnie zadanie! a jak ktoś potrzebuje template form (żeby zajarzyć jakie są itemy w listviewku), to mogę wyprodukować, ale tylko dla delphi lub BCB