[#1] Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)
Czesc,

mam:
okno + listView (lv)

chce:
by lv chowalo slidera gdy nie jest potrzebny - oczywiscie ten standardowy lv, oferowany przez GadTools tego nie umozliwia wiec pomyslalem, ze:
- zmniejsze szerokosc slidera do 0 i bedzie fajnie - .... jak bardzo sie tu pomylilem ... - kto nie probowal niech sam sie przekona :) - innymi slowy, ODPADA
- wywale slider poza okno (zwiekszajac szerokosc lv) - DZIALA ale... nie wiem czemu na prawej ramce okna pozostaje rysunek lewej ramki slidera i strzalek...



Oto komendy jakich uzywam do odrysowania okna (czyli mam i RefreshWindowFrame() ale efektu brak):



Okazalo sie ze gdy dezaktywuje okno to intuition jakos jednak zamalowuje te smieci w ramkach po lv -- tylko nie mam pojecia jak.

Wiec teraz robie to ze na hwile zmieniam okno aktywne na inne i zaraz wracam do tego z lv. Sposob ten jednak powoduje paskudne migniecie (okno zmienia kolor gdy ustawiam je na nieaktywne a potem wracam na aktywne - co wyglada jak migniecie)

Jak intuition zamalowuje swoje okno?

Tu mamy:
-po lewej okno ze sliderem bo jest potrzebny
-po srodku okno bez slidera bo jest zbedny ale ze smieciami po nim
-po prawej okno przemalowane przez intuition gdy stracilo fokusa i go odzyskalo



Ostatnia aktualizacja: 27.11.2021 10:12:18 przez pch
[#2] Re: Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)

@pch, post #1

Hej,

Przychodzi mi do głowy kilka rozwiązań.

- Pierwszy sposób:

Spróbuj otworzyć to okno z parametrem WA_GimmeZeroZero. Dzięki temu ramka oraz wnętrze okna to dwie osobne warstwy, więc nie będą kolidować. Pamiętaj, że dla takich okienek współrzędne gadżetów liczymy względem lewego górnego rogu wnętrza okna.

- Drugi sposób:

Można też spróbować zainstalować w okienku region przycinania (ClipRegion). Robisz to na początku tworząc pusty region NewRegion() i dodając prostokąty poprzez OrRectRegion(), a następnie instalując region w okienku funkcją InstallClipRegion(win->WLayer, region). Wszystkie funkcje rysujące na warstwie będą przycięte do tego obszaru.

Nie jestem pewien czy z Gadtools to zadziała ale raczej powinno, bo region jest podpięty pod Layer a nie pod RastPort.
[#3] Re: Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)

@pch, post #1

btw.a czemu nie mui? to ma działać na A500?
[#4] Re: Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)

@Hexmage960, post #2

Dzieki za pomysly.

Sprawdzilem no.2 bo mialem znacznie mniej roboty tutaj (dodac pare linijek jest latwiej niz przelatywac calosc i usuwac/przerabiac wszystkie WBorLeft BorderLeft ... itd .. itd)

Jednak Gadtools to twarda bestia :)
Dodalem regiony a efektu nie widzialem, wiec by byc pewnym , to ten region zrobilem nieco wezszy (co widac na obrazku, na czerwono to region).
GadTools jest nietkniety a ten niebieski obszar pod belka okna to bitmapa i rysunki - jak widac jest przycieta.


Wieczorem zobacze pomysl no.1

Dzieki



EDIT
Nie zauwazylem ze region dodawalem PO GT_RefreshWindow...
Zamieniajac kolejnosc udalo sie uzyskac przyciecie na tym niebieskim podswietleniu na liscie - jednak suwak i strzalki dalej jak staly tak stoja :)



Ostatnia aktualizacja: 27.11.2021 12:24:14 przez pch
[#5] Re: Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)

@michal_zukowski, post #3

to ma dzialac na kicku 3.1 w gore :)
a MUI wogole mnie jakos nie interesuje

a tak na powaznie to ja sie bawie w Blitzu i o MUI moge zapomniec. Parenascie lat temu ktos napisal dla Blitza wrappery do wszystkich funkcji systemowych (do 3.1 wlacznie) i tego uzywam bo to jest dostepne - juz pewnie nawet mozliwosc pisania pod 3.2 nigdy nie pojawi sie na Blitz-u... a szkoda



Ostatnia aktualizacja: 27.11.2021 12:46:13 przez pch
[#6] Re: Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)

@pch, post #4

A czy próbowałeś dodać region przed AddGlist() i RefreshGList()?

Czy jak klikasz na suwak to się podświetla?

Dzięki za przetestowanie pomysłu.
[#7] Re: Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)

@Hexmage960, post #6

Tak, to co mam napisane dziala teraz w takiej kolejnosci:

- start programu: gdy okno sie otwiera to glist jest podzczepiona w tagach do okna (bo gadgety juz sa zbudowane) wiec tutaj po przypisaniu regionu daje GT_RefreshWindow()

ale...

- gdy zmieniam wielkosc okna to zaraz po uslyszeniu IDCM_NEWSIZE daje:

ClearRegion()
obliczam nowy rectangle (wg nowego okna)
OrRectRegion()
InsatllClipRegion()

RemoveGList()
FreeGadgets()

licze nowy rozmiar gadgetow

AddGList()
RefreshGList()
GT_RefreshWindow()
RefreshWindowFrame()

wiec tu region jest dodawany przed wszystkim.

ETA
tak, suwak sie podswietla i dziala

Ostatnia aktualizacja: 27.11.2021 13:07:10 przez pch
[#8] Re: Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)

@pch, post #7

Hej, uwaga - regionu nie wolno zmieniać po instalacji.

Tzn. jak zrobisz InstallClipRegion() to nie wolno robić na nim operacji typu ClearRegion() lub OrRectRegion().

Musisz najpierw odinstalować region za pomocą InstallClipRegion() podając NULL, zmodyfikować region i dopiero zainstalować ponownie.

Spróbuj to poprawić - i najlepiej dodaj gadżety nie przez WA_Gadgets, tylko przez AddGList(), a nuż uda się.

Jak nie to trudno - być może Gadtools sam zmienia region w warstwie okna.

Ostatnia aktualizacja: 27.11.2021 13:20:26 przez Hexmage960
[#9] Re: Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)

@Hexmage960, post #8

Dodalem InstallClipRegion() z NULL-em przed czyszceniem, czyli jako pierwsza komende po zmianie wielkosci okna - niestety nie pomoglo...

Mialem te funkcje tylko przed zamknieciem okna bo w opisie nie wspomnieli by usuwac przed resize (ale niezaszkodzi dodac :) )


...You MUST remember to call InstallClipRegion(l,NULL) before
calling DeleteLayer(l) or the Intuition function CloseWindow()
if you have installed a non-NULL ClipRegion in l.



Ok, usune zaraz gadgety z tagow i uzyje komend ... moze zadziala, kto wie.

dodano:
niestety... to samo


Wynik ostateczny - list view wygralo
Nie bede kombinowal z chowaniem slidera bo tak naprawde to te pozostalosci po strzalkach na ramce okna (na obrazku na poczatku tematu) to sa aktywne pola na ktore mozna kliknac i ramka dalej sie paskudzi

Oczywiscie moglbym "wypchnac" suwak dalej w prawo o szerokosc ramki okna ale wtedy strace prawa rakme od listy.. walka z wiatrakami

Ostatnia aktualizacja: 27.11.2021 13:49:08 przez pch
[#10] Re: Nienawidze Gadtools (niech bedzie, ze tylko "list view"... na poczatek)

@pch, post #9

OK, dzięki jeszcze raz za sprawdzenie pomysłu.

Przyznam, że sam stanąłem niedawno przed zadaniem zrobienia listy elementów, przy czym u mnie stosuję własną grafikę.

Zrobienie takiej listy to troszkę pracy, choć wystarczy dodać kilka gadżetów typu Boolean umiejscowionych w pionie oraz podświetlenie typu Highlight ustawiane ręcznie.

Ciągi tekstowe elementów można pobierać z listy exec-owej.

Ostatnia aktualizacja: 27.11.2021 14:09:55 przez Hexmage960
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem