System skórkowania

0

Witam, pisze aplikację, w której chce dać możliwość skórkowania, tylko nie wiem jak to zrobić, znaczy nie mam pomysłu. Prosiłbym o rade jak to zrobić najlepiej czy może są już gotowe standardy albo coś takiego, jedyne moje wymaganie to to żeby dało się to zaimplementować w delphi dla net. Zna ktoś jakiś dobry sposób?

0

Musisz po prostu umiejętnie oddzielić grafikę od reszty tj jest w szablonach smarty w php i tyle...

0
ciapek888 napisał(a)

Musisz po prostu umiejętnie oddzielić grafikę od reszty tj jest w szablonach smarty w php i tyle...

ale jaki to ma związek z systemem skórek w delphi dla .net ?

0
Adamo napisał(a)

ale jaki to ma związek z systemem skórek w delphi dla .net ?

po pierwsze - o ile mi wiadomo to delphi jest obiektowe, więc można zaimplementować coś tj szablony smarty
po drugie - nie ma chyba innego sposobu na zrobienie systemu skórek niż oddzielenie grafiki od reszty
po trzecie - jak masz lepszy pomysł, to napisz...

0
ciapek888 napisał(a)

po pierwsze - o ile mi wiadomo to delphi jest obiektowe, więc można zaimplementować coś tj szablony smarty

chyba nie rozumiesz skrótu "tj"

ciapek888 napisał(a)

po drugie - nie ma chyba innego sposobu na zrobienie systemu skórek niż oddzielenie grafiki od reszty

no niby tak, ale chyba jeśli chodzi o strony Internetowe, nie rozumiem jak to się ma do aplikacji okienkowych, poza tym to jest tak ogólne stwierdzenie że ...

ciapek888 napisał(a)

po trzecie - jak masz lepszy pomysł, to napisz...

nie mam, ale jest mnóstwo tematów / artykułów / czego tam w google

0
Adamo napisał(a)

no niby tak, ale chyba jeśli chodzi o strony Internetowe, nie rozumiem jak to się ma do aplikacji okienkowych, poza tym to jest tak ogólne stwierdzenie że ...
a co? mam napisać tu jakiś kod? nie znam się na Delphi, poza tym to chyba żadna filozofia - Napisać klasę, odpowiedzialną za grafikę, odpowiednie metody do komunikacji z resztą programu, wyboru skórki itd.
Nie da się tego zrobić w aplikacji okienkowej?

Adamo napisał(a)

chyba nie rozumiesz skrótu "tj"
ja właśnie stworzyłem nowe znaczenie :d

0
ciapek888 napisał(a)

a co? mam napisać tu jakiś kod? nie znam się na Delphi, poza tym to chyba żadna filozofia - Napisać klasę, odpowiedzialną za grafikę, odpowiednie metody do komunikacji z resztą programu, wyboru skórki itd.
Nie da się tego zrobić w aplikacji okienkowej?

@ciapek888 jak nie wiesz to nie siej fermentu. Zmiana wyglądu aplikacji, nie jest taka prosta. Porównywanie delphi i php to jak porównać łyżkę i widelec. Proponuję zainteresować się komponentami VCL skin na torry.net (albo na delphi super page). Ewentualnie te artykuły:
http://4programmers.net/Delphi/Artyku%C5%82y/Zabawa_z_formularzem_(form%C4%85)
http://4programmers.net/Delphi/Artyku%C5%82y/CoolForm_w_Delphi_(dla_pocz%C4%85tkuj%C4%85cych). Najprawdopodobniej będziesz jednak musiał używać funkcji API i tworzyć formę z poziomu API.

P.S.
Uwielbiam sytuacje typu: Wątek rośnie, czas ucieka, odpowiedzi brak a userzy tłuką się między sobą. Do tego mamy ten dział. Tam można.

P.S
przeoczyłem, że to ma być w .NET

0

W tym szkopuł, że mam do dyspozycji tylko to, co udostępnia mi NetFramework 1.1 i nic ponad to żadnych komponentów vcl etc.

Mogę sobie zbudować forme na picturebox'ach i ładować do nich grafiki, ale to ma taką wadę, że nie jestem w stanie uzyskać transpiracji dla poszczególnych obrazków. Wyjaśnię na przykładzie: forma sama w sobie przezroczysta, obrazek PNG z Alpha Chanel, no i zamiast zobaczyć, co jest pod forma to widzę formę, (która powinna być przezroczysta). Taki sam efekt jest jak obrazki na siebie nachodzą, zamisat zobaczyć obrazek ze spodu widze formę.

To niby nic, ale uniemożliwia tworzenie zaawansowanych skórek.

W sumie po części rozwiązałbym problem gdyby udało mi się umieścić komponenty poza formą. Czy jest to możliwe?

0

Coz, zawsze mozesz tworzyc komponenty dynamicznie i dodawac w trakcie ladowania programu. Mozesz tez sobie stworzyc jakis wlasny system na zasadzie - pakiet komponentow, ktore sa serializowane do pliku, po czym ladowac je przy starcie programu itp. Ale to pomysl do dopracowania - tak mi wlasnie przyszedl do glowy ;)

0

Nie dałoby się jakoś umieścić komponentu poza formą? W WinAPI chyba można tak doczytałem a czy w net też? Jeśli tak to może ktoś wie już, jak bo ja próbuje, ale marnie mi idzie.

0

Ale co rozumiesz 'poza forma'? Bo to o czym napisalem jest miedzy innymi 'poza forma'.

0

chodzi o to że rodzicem komponentu np picturebox nie będzie forma tylko ekran.

0

Hmm, szczerze watpie. Ja predzej zrobilbym tak, ze jest przeladowana metoda onPaint komponentu, domyslna jest 'schowana' itp. Skoro to maja byc skorki, to i tak beda zalaczane jakies bitmapy czy cus. Zrob moze tak, ze jest glowna bitmapa dotyczaca okna glownego - ktore jak pisalem wyzej rysuje bitmape zamiast standardowego obramowania. Do tego zalaczasz jakis plik tekstowy (xml?), w ktorym masz zapisane wspolrzedne poszczegolnych komponentow - tak, zeby sie zgrywaly z bitmapa - do tego w ogole bierzesz pod uwage, ze sa przesuwane. Czyli w efekcie dostajesz jeden plik z bitmapa i jeden z ustawieniami. Mozesz tez w tych ustawieniach dolaczyc co niektore wlasciwosci komponentow, np. wielkosc przycisku, wielkosc czcionki w textboxie, itp. Moglbys tez rozdrabniac sie na bitmapy poszczegolnych komponentow, ale wydaje mi sie, ze byloby to mniej wygodne (bo i tak w wiekszosci przypadkow rysuje sie najpierw caly wyglad, pozniej ew. wycina). Oczywiscie musialbys tez wziac pod uwage, ze pewien kolor bedzie przezroczysty (np. na pole textboxa) - tu moglbys sie zastanowic nad uzyciem np. png - kwestia do przemyslenia. Pozostaloby jeszcze stworzyc metody obslugujace np. niewidoczne przyciski - czyli przycisk sie nie pokazuje (zeby nie przeslaniac glownej bitmapy), ale w jego obszarze myszka jest wylapywana jako 'na przycisku'.

0

Tylko jak ją przeładować, znaczy wystarczy jak zrobię identyczną procedurę z dyrektywą overload?

0

Nie wystarczy, o szczegoly musisz juz zapytac wujka googla ;) Np. na codeproject jest kilka odpowiedzi jak:
http://www.codeproject.com/cs/miscctrl/customscrollbar.asp
http://www.codeproject.com/dialog/skindlg.asp
http://www.codeproject.com/gdi/brush_skin.asp
itp - wejdz tam w szukarke i wpisz 'skin' - jest sporo.

0

Raczej nie przeładowana (overload), a nadpisana (podczas dziedziczenia). Trzeba po prostu stworzyć klasę dziedziczącą z danego elementu (button czy co tam jeszcze sobie wymyślisz) i w tej klasie dziedziczącej metodę onPaint zrobioną po swojemu.

0

Na tym code project znalazłem coś na temat MFC i CDHtmlDialog, ale w książce o delphi, którą mam wyczytałem, że to jest w pakiecie Visual Studio, czy można to jakoś w delphi wykorzystać czy nie bardzo, bo jeśli dobrze zrozumiałem to ma to niezłe możliwości.

0

jak robilem swój program (tzn. robie bo jeszcze nie skonczylem :-P ) to w oncreate dawalem sobie taką procedurkę, która na podstawie pliku txt tworzyła odpowiedniej wielkosci komponenty - np. image i wstawiala do nich jpg-i...
plik txt wygladal tak:
typ|szerokosc|dlugosc|left|top|pole_specjalne
jesli typ byl image to w pole_specjalne była nazwa jpg-a, ktory sobie wstawialem do image'a, jesli to byl np. panel to pole_specjalne zawierało informację o np. kolorze... Oczywiscie mozeszz sobie jesli bedzie to potrzebne dodac inne "pola specjalne"...
Można też jedną linię pliku przeznaczyć na właściwości formy, np. ikonka, kolor, szer.,dlug. itd...
dzieki takiej postaci pliku txt i odpowiedniego kodu można stworzyć naprawdę różnorodne skórki - każdy plik txt - jedna skórka, rysunki do imagow trzymalem w osobnych folderach dla roznych skorek...

Na podstawie tego udalo mi sie zrobic ładowanie jednej skórki, jednak kodu raczej ci nie podam, bo dla każdego programu należy opracować inny system skórek...

0

mozesz je umiescic na 2giej, niewidocznej formie, hmm ? a potem przenosic je na forme glowna, o to Ci chodzilo ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1