Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pozycja listy - problem.

Ostatnio zmodyfikowano 2009-06-20 00:40
Autor Wiadomość
malan
Temat założony przez niniejszego użytkownika
Pozycja listy - problem.
» 2009-06-17 16:28:55
Witam.
Męczę się już z tą pozycją listy z 5 dzień i nie mogę jej w 100% zrobić poprawnie. Zawsze coś nie działa ;/. Mógłby mnie ktoś nakierować jak to zrobić?

C/C++
if( PozycjaListy > 19 && Indeks > 20 ) WyswietlOdElementu += 1;

if( WyswietlOdElementu > 0 )
{
    if( WyswietlOdElementu > PozycjaListy || WyswietlOdElementu >= Indeks - 20 ) WyswietlOdElementu -= 1;
   
}
if( WyswietlOdElementu == 0 && PozycjaListy < 0 ) PozycjaListy = 0;

if( Indeks <= 20 ) WyswietlOdElementu = 0;

if( PozycjaListy > Indeks - 1 ) PozycjaListy = Indeks - 1;

if( PozycjaListy < 0 ) PozycjaListy = 0;

//...

void WyswietlDane( Dane dTablica[], int Indeks, int ZaznaczElement, int WyswietlOdElementu )
{
    int Max = 0;
    if( Indeks <= 20 ) Max = Indeks; else Max = 20 + WyswietlOdElementu;
    for( int i = WyswietlOdElementu, Wiersz = 4; i < Max; i++, Wiersz++ )
    {
        if( i == ZaznaczElement )
        {
            textbackground( 12 );
            textcolor( 15 );
        } else
        {
            textbackground( 0 );
            textcolor( 7 );
        }
        //gotoxy(2,Wiersz); cout<<"i "<<i<<" ZaznaczElement "<<ZaznaczElement<<" Indeks "<<Indeks;
        gotoxy( 2, Wiersz ); cout << i + 1 << ". " << MaxLength( dTablica[ i ].Web, 41 );
       
    }
    textbackground( 0 );
    textcolor( 7 );
}
P-7783
DejaVu
» 2009-06-17 17:28:19
1. Wyobraź sobie, że masz listę, która ma np. 50 tysięcy elementów
2. Jeśli wyobraziłeś sobie mniejszą, wróć do ptk 1.
3. Wyobraź sobie, że na ekranie wszystkie elementy się mieszczą
4. Jeśli nie potrafisz sobie tego wyobrazić, wróć do ptk 3
5. Aby zaznaczyć element poprzedni/następny używasz strzałek
6. Aby nie móc wyjść poza listę musisz ograniczyć możliwość zaznaczenia poza tablicę.
7. Świat nie jest idealny, a więc ekran jest ograniczony, a co za tym idzie nie zmieści się cała lista na ekranie.
8. Wyobraź sobie, że na ekranie mieści się 20 wierszy
9. Jeśli trudno Ci to wyobrazić, spójrz na monitor i ponów krok ptk 8.
10. Zgromadź jakie informacje obecnie posiadasz:
- wiesz jak wyświetlić całą listę
- wiesz jak zaznaczać dowolny element na liście
- wiesz jak ograniczyć zaznaczenie tak, aby nie wyszło poza listę
11. Określ problem:
Na ekranie mieści się tylko 20 wierszy. Zaznaczenie wychodzi poza ekran.
12. Rozwiązanie: sprawdzać, czy zaznaczony element mieści się na ekranie. Jeśli się nie mieści - wyświetlać listę od takiego indeksu, aby zaznaczenie było widoczne.
P-7784
malan
Temat założony przez niniejszego użytkownika
» 2009-06-20 00:40:49
Trochę czasu musiało minąć zanim to sobie wyobraziłem, ale w końcu dałem radę ;):

C/C++
if( PozycjaListy < WyswietlOdElementu && WyswietlOdElementu > 0 ) WyswietlOdElementu -= 1;

if( PozycjaListy >( WyswietlOdElementu + 19 ) &&( WyswietlOdElementu + 20 ) < Indeks ) WyswietlOdElementu += 1;
Wystarczyły dwa warunki, trochę czasu i logiczne myślenie i jest!

Dziękuję za pomoc ;).
P-7814
« 1 »
  Strona 1 z 1