CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Komponent - rozwijany panel.

Komponent - rozwijany panel.

problemy z funkcjonowaniem bibliotek, komponentów itp.

Komponent - rozwijany panel.

Nowy postprzez Slynx » niedziela, 5 czerwca 2011, 19:42

Trochę się naszukałem i w końcu wiem czego szukam.

http://www.programowanie.cal.pl/forum/viewtopic.php?f=5&t=642

(to co pokazał C.Baron)

Próbowałem samemu stworzyć coś takiego z użyciem komponentu flowlayoutpanel/panel i toolStrip dla przycisków. Wszystko było pięknie do momentu podłożenia tła graficznego. Wtedy zaczęło się niemiłosiernie ciąć.

Dopiero teraz się zorientowałem czego ja tak na prawdę szukam, mogłem to określić i napisać właściwy temat. Więc,

TMS nie jest darmowy, więc od razy odpada. Raczej zależy mi na czymś na licencji opensource, bo i tak musiałbym go dopasować. Ktoś coś zna ? Ja sporo szukałem i nic w necie nie znalazłem, a w frameworku tego nie ma. To chyba ostatni komponent jakiego brakuje mi w programie.

Jeśli chodzi o sam kod, gdyby ktoś coś znalazł to od razu mówię, język nie ma znaczenia. Byle kod był odpowiednio wydajny dla podłożonej grafiki.
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Komponent - rozwijany panel.

Nowy postprzez Cyfrowy Baron » niedziela, 5 czerwca 2011, 20:28

Nie masz u siebie komponentu TCategoryPanelGroup?
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
    Windows XPFirefox

Re: Komponent - rozwijany panel.

Nowy postprzez Slynx » niedziela, 5 czerwca 2011, 20:56

No właśnie nic takiego nie ma :/ Szukałem kilka razy czy nie dało by się czegoś takiego złożyć i wyszło mi, że najlepiej to kombinować z flowlayoutpanel i toolstripami dla przycisków. ale nic z tego :/
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Komponent - rozwijany panel.

Nowy postprzez Cyfrowy Baron » niedziela, 5 czerwca 2011, 21:12

To złożony problem. Myślę, że można by coś takiego złożyć z kliku TPanel lub TFlowPanel i TSpeedButton.
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
    Windows XPFirefox

Re: Komponent - rozwijany panel.

Nowy postprzez Slynx » niedziela, 5 czerwca 2011, 21:43

Problem może i złożony, kod może się okazać łatwy, tj.
KOD cpp:     UKRYJ  
                int max_size = 120;
                int min_size = 25;
                if (flowLayoutPanel_LS_Help->Height < min_size)
                {
                        while(flowLayoutPanel_LS_Help->Height < max_size)
                        {
                                flowLayoutPanel_LS_Help->Height += 5;
                                System::Threading::Thread::Sleep(3);
                                flowLayoutPanel_LS_Help->Refresh();
                        };
                }
                else
                {
                        while(flowLayoutPanel_LS_Help->Height > min_size)
                        {
                                flowLayoutPanel_LS_Help->Height -= 5;
                                System::Threading::Thread::Sleep(3);
                                flowLayoutPanel_LS_Help->Refresh();
                        };
                };
 

Jest jeden główny flowlayoutpanel, w nim jest 5 mniejszych flowlayoutpaneli, a na każdym z nich jest toolstrip z odpowiednimi do danego menu przyciskami. Flowlaaut zapewnia automatyczny resize całości i parę innych udogodnień.
Ten kod rozwiązuje problem, ale tylko teoretycznie, bo jest kompletnie niewydajny.
(dla każdego z 5 flowlayot-ów jest taki sam kod)
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Komponent - rozwijany panel.

Nowy postprzez Cyfrowy Baron » niedziela, 5 czerwca 2011, 21:55

Stworzyłem kombinację. Jeden główny Panel, na nim trzy inne, a na każdym SpeedButton wyglądający jak belka Panel-u. Działa wydajnie. Steruję rozmiarem Paneli, oraz ich położeniem względem siebie. Kod jest wydajny.
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
    Windows XPFirefox

Re: Komponent - rozwijany panel.

Nowy postprzez Slynx » niedziela, 5 czerwca 2011, 22:17

Wrzuć jakieś bitmapy do każdego z nich. Tak, żeby nie było nigdzie samego koloru (jakiekolwiek obrazki).
Oczywiście mam nadzieję, że mówisz o takim rozwijanym menu (czyli jak w win xp), bo ja mówię o tej animacji "rozsuwania" menu. Jeśli jest wszystko wyłożone grafiką to tnie się tak że... a bez grafiki wszystko działa normalnie.
Wiem w czym jest błąd, ale nie umiem go poprawić.
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Komponent - rozwijany panel.

Nowy postprzez Cyfrowy Baron » poniedziałek, 6 czerwca 2011, 09:12

Slynx napisał(a):Oczywiście mam nadzieję, że mówisz o takim rozwijanym menu (czyli jak w win xp), bo ja mówię o tej animacji "rozsuwania" menu.


Przestałem mieć pewność, czy mówimy o tum samym. O jaką grafikę Tobie chodzi. Ja żadnej grafiki nie stosuję?! Daj zrzut tego co to ma być.
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
    Windows XPFirefox

Re: Komponent - rozwijany panel.

Nowy postprzez Slynx » poniedziałek, 6 czerwca 2011, 12:45

Heh, ma Win 7 i tam już nie ma czegoś takiego ; p
Chodzi mi o coś takiego co pokazałeś w swoim drugim poście w tym temacie - http://www.programowanie.cal.pl/forum/viewtopic.php?f=5&t=642

Czyli jak klikasz na "belkę" to menu się zwija, a te niżej się "przybliżają" do góry. A samo menu zawiera przyciski (Mój komputer, moje miejsca sieciowe...), do czego chciałem wykorzystać toolstrip.

Tylko teraz na ten panel lub menu (jakkolwiek to zwał) nałóż (w właściwości imagebackground) jakąś bitmapę. I tak razem stwórz 5 takich menu. Wtedy spróbuj to na samej górze "zwinąć". Bo właśnie wtedy u mnie okazywało się, że strasznie zaczyna się ciąć...
Mam nadzieję, że rozumiesz o co mi chodzi (raczej ciężko to precyzyjnie opisać)
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Komponent - rozwijany panel.

Nowy postprzez Cyfrowy Baron » poniedziałek, 6 czerwca 2011, 12:49

Tak rozumiem. Tylko po co to nakładanie bitmap? Oryginalny komponent nie ma tych bitmap jako tła. Czy to muszą być bitmapy, czy może chodzi tylko o gradient?
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
    Windows XPFirefox

Re: Komponent - rozwijany panel.

Nowy postprzez Slynx » poniedziałek, 6 czerwca 2011, 13:12

U mnie chyba nawet czegoś takiego nie ma jak gradient. Są obrazki i pełne kolory z 3 palet, ale gradientu nigdzie nie znalazłem. Ale do rzeczy,

problemem konkretnie jest brzydki efekt rozmywania się podczas zwijania i rozwijania takiego menu. Żeby go wyeliminować wrzuciłem do pętli instrukcję Refresh() dla całego toolStripa, a jak wiadomo to jest bardzo czasochłonne. W sumie to wystarczyłoby czymś to zastąpić i powinno być po problemie. Problemem jest czym to zastąpić. Sama metoda musi być wydajna, bo oprócz tła, grafika będzie nałożona na poszczególne przyciski (może udało by się zastosować technikę zastosowania tła z grafikami przycisków, zamiast wstawiać grafikę na każdy przycisk, więc to by troszkę odciążyło procesor).

Nawet po nałożeniu samego koloru, efekt nie jest odpowiednio szybki, bo za mocno spowalnia właśnie refresh().
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Komponent - rozwijany panel.

Nowy postprzez Cyfrowy Baron » poniedziałek, 6 czerwca 2011, 13:27

Slynx napisał(a):U mnie chyba nawet czegoś takiego nie ma jak gradient.


Gradient trzeba samemu oprogramować. Myślałem, że chcesz gradient jako tło. Już nieistotne.

Slynx napisał(a):grafika będzie nałożona na poszczególne przyciski


Na standardowe przyciski to grafiki chyba nie da się nałożyć, chyba że stworzysz coś ala przycisk z TImage, coś jak mój komponent TPicbutton.



To co stworzyłem masz w załączniku, a na obrazku widać z czego to stworzyłem:

toolpanel.png


Cały kod odpowiedzialny za zwijanie to:

KOD cpp:     UKRYJ  
void __fastcall TForm1::Label1Click(TObject *Sender)
{
 int x = dynamic_cast<TLabel *>(Sender)->Tag;

 TPanel *tPanel = dynamic_cast<TPanel *>(FindComponent("Panel" + (String)x));

 if(tPanel->Height > 23) tPanel->Height = 23;
 else tPanel->Height = 120;
}


reszta Label-i połączona prze Object Inspector - zakładka Events, wykorzystuje polimorfism.


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
    Windows XPFirefox

Re: Komponent - rozwijany panel.

Nowy postprzez Slynx » poniedziałek, 6 czerwca 2011, 13:38

No tak, ale z tego co widzę, to Twoje menu zwinie się błyskawicznie, a ja chciałem dodać efekt spowolnienia. Wiesz o co chodzi. Tak, że menu zwija się ok 1-1,5 sekundy. A żeby to osiągnąć trzeba zastosować pętlę z mniejszymi skokami (np. po 5), a przy każdym kroku trzeba przemalować obiekt, bo komponent jakby się rozmazywał (przynajmniej u mnie).

Na standardowe przyciski to grafiki chyba nie da się nałożyć, chyba że stworzysz coś ala przycisk z TImage, coś jak mój komponent TPicbutton.

No widzisz, a u mnie bez problemu można nałożyć na każdy komponent obrazek, każdy ma właściwość background image, więc nie mam żadnych problemów.

P.S.
Tu, gdzie masz załącznik, Twój skrypt podaje błędny rozmiar. Nie 440 KiB tylko 440 KB. W KiB standardowo podaje się szybkość, nie wielkość. Poza tym, po przeliczeniu dałoby to 440/8 = 55 KB
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Komponent - rozwijany panel.

Nowy postprzez Cyfrowy Baron » poniedziałek, 6 czerwca 2011, 13:55

Sprawdź teraz:
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
    Windows XPFirefox

Re: Komponent - rozwijany panel.

Nowy postprzez Slynx » poniedziałek, 6 czerwca 2011, 14:06

Nom, świetnie. Pokaż kod i zobaczymy czy u mnie też da się to tak zrobić z taką samą szybkością.
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Biblioteki i komponenty

Kto przegląda forum

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

cron