Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Złe ustawianie kontrolek w konfiguracji
Konnekt | Forum > Developerzy > Tworzenie wtyczek
bulanh
Witam.

Zrobiłem sobie w konfiguracji wtyczki takie coś:

user posted image


Chciałbym jednak, aby za każdym editem był checkbox. Dodaje więc UIActionAdd i oto co się dzieje:

user posted image

Kod wstawiający te akcje:

CODE

UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK|ACTSC_INLINE, "", CFG_ENABLE_KEYWORS);
UIActionAdd(IMIG_CFG_4C, 0, ACTT_COMMENT|ACTSC_INLINE, "Słowa kluczowe");
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_EDIT|ACTSC_INLINE, "" CFGTIP COLOR_EXPL, CFG_KEY_WORDS);
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK, "Pogrubiony", CFG_KEY_WORDS_BOLD);

UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK|ACTSC_INLINE, "", CFG_ENABLE_STRINGS);
UIActionAdd(IMIG_CFG_4C, 0, ACTT_COMMENT|ACTSC_INLINE, "Stringi");
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_EDIT|ACTSC_INLINE, "" CFGTIP COLOR_EXPL, CFG_STRINGS);
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK, "Pogrubiony", CFG_STRINGS_BOLD);



Da się to jakoś naprawić?

Jeszcze jedno pytanie: jak zwolnić pamięć zaalokowaną przez Konnekta (chodzi dokładnie o cMessage->body)? Próbowałem free(), cCtrl->free() i delete [], ale wszystkie próby kończyły się niepowodzeniem (błędem).

Pozdrawiam
Buła
KoSiarzPL
Podaj jeszcze kod tworzenia grupy "kolory" oraz calej grupy konfiguracji. Czy ta grupa "kolory" nie jest podgrupa innej? Poza tym nie musisz dla checkboxa tworzyc oddzielnie napisu. Jesli tworzysz chceckboxa mozesz podac jako czwarty parametr napis.
Czyli zamiast:
CODE
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK|ACTSC_INLINE, "", CFG_ENABLE_KEYWORS);
UIActionAdd(IMIG_CFG_4C, 0, ACTT_COMMENT|ACTSC_INLINE, "Słowa kluczowe");


Mozesz:
CODE
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK|ACTSC_INLINE, "Słowa kluczowe", CFG_ENABLE_KEYWORS);
bulanh
Niezakomentowana całość wygląda tak:

CODE

UIGroupAdd(IMIG_CFG_PLUGS, IMIG_CFG_4C, 0, "4Coders", IDI_POINT);

UIActionAdd(IMIG_CFG_4C, 0, ACTT_GROUP, "Kolory");

UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK|ACTSC_INLINE, "", CFG_ENABLE_KEYWORS);
UIActionAdd(IMIG_CFG_4C, 0, ACTT_COMMENT|ACTSC_INLINE, "Słowa kluczowe");
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_EDIT|ACTSC_INLINE, "" CFGTIP COLOR_EXPL, CFG_KEY_WORDS);
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK, "Pogrubiony", CFG_KEY_WORDS_BOLD);

UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK|ACTSC_INLINE, "", CFG_ENABLE_STRINGS);
UIActionAdd(IMIG_CFG_4C, 0, ACTT_COMMENT|ACTSC_INLINE, "Stringi");
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_EDIT|ACTSC_INLINE, "" CFGTIP COLOR_EXPL, CFG_STRINGS);
UIActionAdd(IMIG_CFG_4C, IMIB_CFG, ACTT_CHECK, "Pogrubiony", CFG_STRINGS_BOLD);
UIActionAdd(IMIG_CFG_4C, 0, ACTT_GROUPEND);


Co do drugiego to wiem (ostatni checkbox jest tak zrobiony), tylko na początku nie było tego checkboxa z przodu, później go dołożyłem, zamotałem się i tak już zostało. Jednak z ACTT_COMMENT czy bez ten błąd ciągle się pojawia.
hao
Upewnij się, czy wszystkie akcje tworzone są prawidłowo (okno @DEV / UI - zwłaszcza czy siedzi tam ACTT_GROUPEND). Przypadek w sumie dosyć osobliwy :|

Spróbuj na koniec, przed ACTT_GROUPEND wcisnąć jakiś komentarz i zobaczyć czy się dobrze spozycjonował...
bulanh
Witam.

Zrobiłem kilka testów i oto moje wnioski:

Na obrazku test1.jpg dodałem komentarz przed zamknięciem grupy i wyświetla się już prawie dobrze. Chciałbym zaznaczyć jednak, że nie ma tych ostatnich checkbox'ów (wygląda to tak jakby były one pomijane)

Na obrazku test2.jpg sytuacja jak poprzednio, czyli komentarz na końcu zakomentowany - dzieje się zło.

Na obrazku test3.jpg zamieniłem we wszystkich checkbox'ach, które powinny być na końcu linii stałą IMIB_CFG na 0 i o dziwo uzyskałem pożądany efekt (przynajmniej wizualnie). Chciałem to zamienić na np. IMIB_|MOJA_STAŁA, ale Konnekt przy włączaniu burzył się, że taka akcja już istnieje i nie chciał załadować wtyczki.

Korzystając z sytuacji chciałbym jeszcze raz się zapytać o zwalnianie buforów (problem opisany w pierwszym poście).

// EDIT 1

Dorobiłem kolumny w konfiguracji ( SetColumn() ) i wszystko zaczęło się dobrze wyświetlać. Dlaczego w takim razie pierwszy checkbox, który także nie miał ( i nada nie ma ) kolumny wyświetlał się poprawnie? Czy istnienie kolumny powinno wpływać na sposób wyświetlania?
hao
Być może zanim utworzyłeś kolumny ich identyfikatory (CFG_ENABLE_KEYWORS, CFG_KEY_WORDS_BOLD, czy CFG_KEY_WORDS) były takie same... W zasadzie powinien wtedy wyskoczyć błąd, ale nie przychodzi mi w tej chwili nic innego do głowy...

O ile pamiętam nie istnienie kolumny w konfiguracji nie powinno mieć tu żadnego wpływu.

Identyfikatory akcji mogą mieć albo wartość 0, albo muszą być unikalne w obszarze jednej grupy. Podanie samego IMIB_CFG równa się podaniu IMIB_CFG|p1, ale niekoniecznie muszą się tak samo automagicznie ustawiać inne podane IMIB_ ...

Co do buforów, Ctrl->free() powinno zadziałać. Być może nie ustawiasz jako nsg->body jakiegoś nowego wskaźnika? A jeżeli ustawiasz, to pamiętaj, że musisz dla niego zaalokować pamięć przez Ctrl->strdup() lub Ctrl->malloc().
bulanh
QUOTE(hao @ 29.11.2005 - 16:04)
[...]
Podanie samego IMIB_CFG równa się podaniu IMIB_CFG|p1, ale niekoniecznie muszą się tak samo automagicznie ustawiać inne podane IMIB_ ...
[...]
*



ahaaa.... W takim razie źle zrozumiałem helpa gdzie napisane było, że:

QUOTE(SDK do Konnekta)
Głównym ułatwieniem jest IMIB_CFG i IMIB_CNT, dzięki któremu tworząc akcje do ustawień można jako identyfikator podać IMIB_CFG/IMIB_CNT i jako parametr p1 standardowo podać kolumnę której dotyczy akcja. UI automatycznie utworzy identyfikator akcji jako IMIB_ | p1.


A jako, że istnieje stała IMIB_ to trochę mi się pomyliło smile.gif

Skoro jednak wszystko działa (zwalnianie buforów też - musiałem jakoś niefortunnie tego użyć) to znaczy, że mam szczęśliwy dzień smile.gif Jeszcze tylko zrobić obsługę konfiguracji i wtyka gotowa smile.gif

Jeszcze raz dzięki za pomoc

Pozdrawiam
Buła.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.